Exemple #1
0
        public void ProcessFields()
        {
            foreach (ICRField Field in this.Fields)
            {
                ImageX           FieldImage = new ImageX(imagXpress1);
                DropOutProcessor oDrop      = new DropOutProcessor(formFix1);
                oDrop.DropOutMethod         = DropOutMethod.DropOut;
                oDrop.PerformReconstruction = false;
                oDrop.Area = new Rectangle(Field.Left, Field.Top, Field.Width, Field.Height);
                DropOutResult oDropOutResult = oDrop.CreateImageOfField(frmFilledImage, regResult);

                FieldImage = ImageX.FromHdib(imagXpress1, oDropOutResult.Image.ToHdib(true), true);
                oDrop.Dispose();


                OutputFieldImg.Image = FieldImage.Copy();
                OnPictureChanged(ICRType.Field);
                // MessageBox.Show("Field Loaded");
                Application.DoEvents();

                // Set area and analyze field DIB
                SmartZone2.Reader.CharacterSet = Field.CharSet;
                SmartZone2.Reader.Segmentation.SplitMergedChars      = true;
                SmartZone2.Reader.Segmentation.SplitOverlappingChars = true;

                FieldImage = this.PreprocessField(FieldImage);

                OutputFieldImg.Image = FieldImage.Copy();
                OnPictureChanged(ICRType.FieldProcessed);
                //MessageBox.Show("Field Processed");
                Application.DoEvents();

                Rectangle currentArea = new Rectangle(0, 0, Field.Width, Field.Height);
                SmartZone2.Reader.Area = currentArea;
                myTextBlockRes         = SmartZone2.Reader.AnalyzeField(FieldImage.ToHdib(true));


                if (myTextBlockRes.NumberTextLines > 0)
                {
                    //  MessageBox.Show(myTextBlockRes.TextLine(0).Text);

                    Chars.Clear();
                    for (int i = 1; myTextBlockRes.NumberTextLines + 1 != i; i++)
                    {
                        LineResult = myTextBlockRes.TextLine(0);

                        String charResult   = "";
                        int    ControlIndex = 1;
                        for (int charIndex = 0; LineResult.NumberCharacters != charIndex; charIndex++)
                        {
                            CharacterResult characterResult = LineResult.Character(charIndex);
                            ICRChar         oChar           = new ICRChar(characterResult.Text, characterResult.Confidence);
                            for (int x = 0; x < characterResult.NumberResults; x++)
                            {
                                oChar.Results.Add(new ICRAlternateChar(characterResult.AlternateText(x), characterResult.AlternateConfidence(x)));
                            }

                            oChar.Area          = characterResult.Area;
                            oChar.NumberResults = characterResult.NumberResults;
                            Chars.Add(oChar);

                            charResult = charResult + characterResult.Text;
                            ControlIndex++;
                        }
                        Field.Result = charResult;
                        //MessageBox.Show(Field.Result);
                        Console.Out.WriteLine(Field.Result);
                    }
                }
                else
                {
                    Field.Result = "";
                }
            }
        }
Exemple #2
0
        private ImageX PreprocessField(ImageX Image)
        {
            scanFix1.FromHdib(Image.ToHdib(false));

            //Remove Lines

            /*          LineRemovalOptions LineOpts = new LineRemovalOptions();
             *        LineOpts.MinimumLength = 10;
             *        scanFix1.RemoveLines(LineOpts);
             */
            //Despeckle

            DespeckleOptions DespeckOpts = new DespeckleOptions();

            DespeckOpts.SpeckWidth  = 10;
            DespeckOpts.SpeckHeight = 10;
            scanFix1.Despeckle(DespeckOpts);

            //Deskew
            //scanFix1.Deskew();

            //Dilate



            //Comb options

            /*
             * comb = new PegasusImaging.WinForms.ScanFix5.CombRemovalOptions();
             *
             * comb.Area = new System.Drawing.Rectangle(AreaXBar.Value, AreaYBar.Value, AreaWBar.Value, AreaHBar.Value);
             * comb.CombHeight = CombHBar.Value;
             * comb.CombSpacing = SpaceBar.Value;
             * comb.HorizontalLineThickness = HBar.Value;
             * comb.VerticalLineThickness = VBar.Value;
             * comb.MinimumCombLength = LengthBar.Value;
             * comb.MinimumConfidence = ConfidenceBar.Value;
             *
             * scanFix1.RemoveCombs(comb);
             */

            //Smooth Options
            scanFix1.SmoothObjects(10);


            DilateOptions dilate = new DilateOptions();

            dilate.Amount    = 1;
            dilate.Direction = EnhancementDirections.All;

            scanFix1.Dilate(dilate);

            //Blob Options

            /*
             * blob = new PegasusImaging.WinForms.ScanFix5.BlobRemovalOptions();
             *
             * blob.Area = new System.Drawing.Rectangle(BlobAreaXBar.Value, BlobAreaYBar.Value, AreaWidthBar.Value, AreaHeightBar.Value);
             * blob.MaximumPixelCount = MaxCountBar.Value;
             * blob.MinimumPixelCount = MinCountBar.Value;
             * blob.MinimumDensity = DensityBar.Value;
             *
             * scanFix1.RemoveBlobs(blob);
             */

            //Remove Dot Shading

            /*
             * dot = new PegasusImaging.WinForms.ScanFix5.DotShadingRemovalOptions();
             *
             * dot.DensityAdjustment = DotDensityBar.Value;
             * dot.MaximumDotSize = DotSizeBar.Value;
             * dot.HorizontalSizeAdjustment = HAdjBar.Value;
             * dot.VerticalSizeAdjustment = VAdjBar.Value;
             * dot.MinimumAreaHeight = DotHBar.Value;
             * dot.MinimumAreaWidth = DotWBar.Value;
             *
             * scanFix1.RemoveDotShading(dot);
             */


            //Remove Border Options

            /*
             * border = new PegasusImaging.WinForms.ScanFix5.BorderRemovalOptions();
             *
             * border.BorderSpeckSize = BSpeckBar.Value;
             * border.CropBorder = chkcrop.Checked;
             * border.DeskewBorder = chkdeskew.Checked;
             * border.MaximumPageHeight = MaxHeightBar.Value;
             * border.MaximumPageWidth = MaxWidthBar.Value;
             * border.MinimumConfidence = MinConBar.Value;
             * border.MinimumPageHeight = MinHeightBar.Value;
             * border.MinimumPageWidth = SpeckWidthBar.Value;
             * border.PageSpeckSize = PSpeckBar.Value;
             * border.Quality = SpeckQualityBar.Value;
             * border.ReplaceBorder = chkreplace.Checked;
             *
             * if (true)
             * {
             *  border.PadColor = System.Drawing.Color.FromArgb(0, 0, 0);
             * }
             * else
             * {
             *  border.PadColor = System.Drawing.Color.FromArgb(255, 255, 255);
             * }
             * scanFix1.RemoveBorder(border);
             */

            Image = ImageX.FromHdib(imagXpress1, scanFix1.ToHdib(false));



            return(Image);
        }