Example #1
1
        private void OnSubmitFileClicked(object sender, EventArgs args)
        {
            if (imageFile.PostedFile != null && imageFile.PostedFile.ContentLength > 0)
            {
                // for now just fail hard if there's any error however in a propper app I would expect a full demo.

                using (var engine = new TesseractEngine(Server.MapPath(@"./tessdata"), "eng", EngineMode.Default))
                {
                    // have to load Pix via a bitmap since Pix doesn't support loading a stream.
                    using (var image = new System.Drawing.Bitmap(imageFile.PostedFile.InputStream))
                    {
                        using (var pix = PixConverter.ToPix(image))
                        {
                            using (var page = engine.Process(pix))
                            {
                                meanConfidenceLabel.InnerText = String.Format("{0:P}", page.GetMeanConfidence());
                                resultText.InnerText = page.GetText();
                            }
                        }
                    }
                }
                inputPanel.Visible = false;
                resultPanel.Visible = true;
            }
        }
Example #2
0
        public void CanGenerateHOCROutput()
        {
            string actualResult;
            using (var engine = new TesseractEngine(@"./tessdata", "eng", EngineMode.Default)) {
                using (var img = Pix.LoadFromFile("./phototest.tif")) {
                    using (var page = engine.Process(img)) {
                        actualResult = NormaliseNewLine(page.GetHOCRText(1));
                    }
                }
            }

            const string ExpectedResultPath = "./Results/EngineTests.CanGenerateHOCROutput.txt";
            if (File.Exists(ExpectedResultPath)) {
                var expectedResult = NormaliseNewLine(File.ReadAllText(ExpectedResultPath));
                if (expectedResult != actualResult) {
                    var actualResultPath = String.Format("./Results/EngineTests.CanGenerateHOCROutput_{0:yyyyMMddTHHmmss}.txt", DateTime.UtcNow);
                    File.WriteAllText(actualResultPath, actualResult);
                    Assert.Fail("Expected results to be {0} but was {1}", ExpectedResultPath, actualResultPath);
                }
            } else {
                var actualResultPath = String.Format("./Results/EngineTests.CanGenerateHOCROutput_{0:yyyyMMddTHHmmss}.txt", DateTime.UtcNow);
                File.WriteAllText(actualResultPath, actualResult);
                Assert.Fail("Expected result did not exist, actual results saved to {0}", actualResultPath);
            }
        }
Example #3
0
        private void MainGame_MouseUp(object sender, MouseEventArgs e)
        {
            //textBox1.Text = savepath;
            //bmp.Save(savepath, System.Drawing.Imaging.ImageFormat.Png);

            //Crop bitmap
            int       epsilon = 50;
            int       width   = maxCorner.X - minCorner.X;
            int       height  = maxCorner.Y - minCorner.Y;
            Rectangle rect    = new Rectangle();

            rect.X      = minCorner.X - epsilon;
            rect.Y      = minCorner.Y - epsilon;
            rect.Width  = width + epsilon * 2;
            rect.Height = height + epsilon * 2;
            if (rect.X < 0)
            {
                rect.X = 0;
            }
            if (rect.Y < 0)
            {
                rect.Y = 0;
            }
            Bitmap bmpToCrop;

            bmpToCrop = bmp.Clone(rect, bmp.PixelFormat);

            //Duplicate bitmap (for more precise recognition)
            Bitmap bmpToDuplicate;

            bmpToDuplicate = DuplicateBitmap(bmpToCrop, 0, 0, mul);

            //Save image (for debugging)
            //string savepath = System.AppDomain.CurrentDomain.BaseDirectory;
            //savepath += "pattern.png";
            //bmpToDuplicate.Save(savepath, System.Drawing.Imaging.ImageFormat.Png);

            //OCR
            page   = engine.Process(bmpToDuplicate, PageSegMode.Auto);
            attemp = page.GetText();
            page.Dispose();


            textBox1.Text = attemp;

            //Game
            game.HarryEndCast();
            game.CastSpell(attemp);

            //Clear
            //panel1.Invalidate();
            g.Clear(Color.White);
            //h.Clear(this.BackColor);
        }
Example #4
0
        public static string OCR(Mat src)
        {
            Bitmap          bitmap = src.ToBitmap();
            TesseractEngine ocr    = new TesseractEngine("../../../tessdata", "eng", EngineMode.TesseractAndCube);
            Page            texts  = ocr.Process(bitmap);

            string sentence = texts.GetText();

            Console.WriteLine(sentence);
            return(sentence);
        }
        public string GetTextFromBitmap(Bitmap bmp)
        {
            var pix  = Pix.LoadTiffFromMemory(GetByteArrayFromImage(bmp));
            var page = _tesseract.Process(pix);
            var text = page.GetText().Replace(" ", "").Replace(" ", "").Replace("\n", "");

            pix.Dispose();
            page.Dispose();

            return(text);
        }
        public static void ConvertImageToTextVS()
        {
            Image img       = Clipboard.GetImage();
            Pix   resultImg = PixConverter.ToPix(Get24bppRgb(img));
            // Image img = Clipboard.GetImage();
            var Ocr     = new TesseractEngine("./datasets", "eng", EngineMode.Default);
            var results = Ocr.Process(resultImg);

            Console.WriteLine(results.GetText());
            Clipboard.SetText(results.GetText());
        }
Example #7
0
        private void button1_Click(object sender, EventArgs e)
        {
            var dr = this.openFileDialog1.ShowDialog();

            if (dr == DialogResult.Yes || dr == DialogResult.OK)
            {
                //var image = new Bitmap(openFileDialog1.FileName);
                var img = Pix.LoadFromFile(openFileDialog1.FileName);
                label1.Text = "";
                var engine = new TesseractEngine(@"F:\repos\ComputerVision\tessdata", "rus", EngineMode.Default);
                using (var page = engine.Process(img))
                {
                    var text = page.GetText();
                    label1.Text += ("Mean confidence: {0}", page.GetMeanConfidence()) + "\r\n";

                    label1.Text += ("Text (GetText): \r\n{0}", text);
                    label1.Text += ("Text (iterator):");
                    using (var iter = page.GetIterator())
                    {
                        iter.Begin();

                        do
                        {
                            do
                            {
                                do
                                {
                                    do
                                    {
                                        if (iter.IsAtBeginningOf(PageIteratorLevel.Block))
                                        {
                                            label1.Text += ("<BLOCK>");
                                        }

                                        label1.Text += (iter.GetText(PageIteratorLevel.Word));
                                        label1.Text += (" ");

                                        if (iter.IsAtFinalOf(PageIteratorLevel.TextLine, PageIteratorLevel.Word))
                                        {
                                            label1.Text += ("\r\n");
                                        }
                                    } while (iter.Next(PageIteratorLevel.TextLine, PageIteratorLevel.Word));

                                    if (iter.IsAtFinalOf(PageIteratorLevel.Para, PageIteratorLevel.TextLine))
                                    {
                                        label1.Text += ("\r\n");
                                    }
                                } while (iter.Next(PageIteratorLevel.Para, PageIteratorLevel.TextLine));
                            } while (iter.Next(PageIteratorLevel.Block, PageIteratorLevel.Para));
                        } while (iter.Next(PageIteratorLevel.Block));
                    }
                }
            }
        }
        public string GetTextFromBitmap(System.Drawing.Bitmap bmp)
        {
            string result = String.Empty;

            using (Page page = mOcrEngine.Process(bmp))
            {
                result = page.GetText();
            }

            return(result);
        }
Example #9
0
 public string GetStringFromImage(Mat image)
 {
     using (var pix = Pix.LoadTiffFromMemory(image.ImEncode(".tiff")))
     {
         using (var page = _tessEngine.Process(pix))
         {
             var result = Regex.Replace(page.GetText(), @"\s+", "");
             return(result);
         }
     }
 }
        public MainWindow()
        {
            InitializeComponent();
            Bitmap          img    = new Bitmap("C:\\Users\\Bikalpa\\Documents\\testdll\\testimage.png");
            TesseractEngine engine = new TesseractEngine("./tessdata", "eng", EngineMode.Default);

            Tesseract.Page page   = engine.Process(img, PageSegMode.Auto);
            string         result = page.GetText();

            MessageBox.Show(result);
        }
Example #11
0
        static void Main(string[] args)
        {
            Console.WriteLine("First branch");
            Pix             img    = Pix.LoadFromFile("images/i1.jpg");
            TesseractEngine engine = new TesseractEngine("./tessdata", "eng", EngineMode.Default);
            Page            page   = engine.Process(img, PageSegMode.Auto);
            string          result = page.GetText();

            Console.OutputEncoding = System.Text.Encoding.UTF8;
            Console.WriteLine(result);
        }
Example #12
0
 /// <summary>
 /// Gets segmented regions at specified page iterator level.
 /// </summary>
 /// <param name="image"></param>
 /// <param name="level"></param>
 /// <returns></returns>
 public override List <Rectangle> GetSegmentedRegions(Bitmap image, PageIteratorLevel level)
 {
     using (var engine = new TesseractEngine(Datapath, Language, EngineMode.Default))
     {
         using (var page = engine.Process(image))
         {
             List <Rectangle> boxes = page.GetSegmentedRegions(level);
             return(boxes);
         }
     }
 }
Example #13
0
 private static string GetOcr(byte[] dosya)
 {
     using (var engine = new TesseractEngine("./tessdata", "tur", EngineMode.TesseractOnly))
     {
         using (var pixImage = Pix.LoadFromMemory(dosya))
             using (var page = engine.Process(pixImage.Scale(3, 3)))
             {
                 return(page.GetText());
             }
     }
 }
Example #14
0
        private string OCR(Bitmap b)
        {
            string res = "";

            using (var engine = new TesseractEngine(@"tessdata", "vie", EngineMode.Default))
            {
                using (var page = engine.Process(b, PageSegMode.AutoOnly))
                    res = page.GetText();
            }
            return(res);
        }
Example #15
0
        private string PerformOcr(string file, TesseractEngine ocrEngine)
        {
            Console.WriteLine("Performing OCR for " + file);

            var img    = Pix.LoadFromFile(file);
            var page   = ocrEngine.Process(img);
            var result = page.GetText();

            page.Dispose();

            return(result);
        }
Example #16
0
        public static int OCR_Timer(Bitmap PassedBitmap)
        {
            int OCRd_Number;

            using (TesseractEngine OCREngine = new TesseractEngine("./tessdata", "eng", EngineMode.TesseractAndLstm))
            {
                OCREngine.DefaultPageSegMode = PageSegMode.SingleLine;
                OCREngine.SetVariable("tessedit_char_whitelist", "0123456789");
                OCRd_Number = int.TryParse(OCREngine.Process(PassedBitmap).GetText().Trim(), out OCRd_Number) ? OCRd_Number : 10;
            }
            return(OCRd_Number);
        }
Example #17
0
 public string GetText(string fullPath)
 {
     using (var engine = new TesseractEngine(@"/home/unarix/Documentos/code/docloud/docloud/wwwroot/tessdata", "eng", EngineMode.Default)) {
         var inputFilename = fullPath;
         using (var img = Pix.LoadFromFile(inputFilename)) {
             using (var page = engine.Process(img, inputFilename, PageSegMode.SingleLine)) {
                 var text = page.GetText();
                 return(text);
             }
         }
     }
 }
        /// <summary>
        /// Run OCR over an image.
        /// </summary>
        /// <param name="image">Image to run OCR over.</param>
        /// <returns>Text result from OCR.</returns>
        public string OCR(Bitmap image)
        {
            var assemblyFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

            using (var engine = new TesseractEngine(assemblyFolder + "\\tessdata", "eng", EngineMode.Default))
            {
                using (var page = engine.Process(image, PageSegMode.Auto))
                {
                    return(page.GetText());
                }
            }
        }
Example #19
0
        private void selectFiles1(object sender, EventArgs e)
        {
            var OpenFileDialog = new OpenFileDialog();

            if (OpenFileDialog.ShowDialog() == DialogResult.OK)
            {
                var image = new Bitmap(OpenFileDialog.FileName);
                var ocr   = new TesseractEngine("./tessdata", "eng");
                var sonuc = ocr.Process(image);
                textBox1.Text = sonuc.GetText();
            }
        }
Example #20
0
        void ReadFromImage()
        {
            string tessDataDir = Application.StartupPath;
            string imageDir    = Application.StartupPath + "\\resim.png";

            using (var engine = new TesseractEngine(tessDataDir, "eng", EngineMode.Default))
                using (var image = Pix.LoadFromFile(imageDir))
                    using (var page = engine.Process(image))
                    {
                        result = page.GetText();
                    }
        }
Example #21
0
    public static string OCR(Bitmap imagem, string linguagem)
    {
        string texto = "";

        using (TesseractEngine engine = new TesseractEngine(@"C:\GitHub\operacao-politica-supervisionada\OPS\temp\", linguagem, EngineMode.Default)) {
            engine.SetVariable("tessedit_char_whitelist", "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ");
            engine.SetVariable("tessedit_unrej_any_wd", true);
            engine.SetVariable("applybox_learn_chars_and_char_frags_mode", true);
            engine.SetVariable("save_blob_choices", true);

            string sobreposto = "";
            int    ultimo     = 12;
            using (Page page = engine.Process(imagem, PageSegMode.SingleLine)) {
                using (ResultIterator ri = page.GetIterator()) {
                    do
                    {
                        string         word = ri.GetText(PageIteratorLevel.Symbol);
                        Tesseract.Rect bb;
                        if (ri.TryGetBoundingBox(PageIteratorLevel.Symbol, out bb))
                        {
                            if ((bb.Width > 13) && (bb.Height > 15) && (word.Trim() != ""))
                            {
                                while (bb.X1 > ultimo + 14)
                                {
                                    texto     += Resolver(sobreposto);
                                    sobreposto = "";
                                    ultimo    += 28;
                                }
                                //System.Web.HttpContext.Current.Response.Write(word + ": " + bb.X1 + "<br />\n");
                                if ((word != "Q") || (bb.Height <= 30))
                                {
                                    sobreposto += word;
                                }
                                else
                                {
                                    sobreposto += "O";
                                }
                            }
                        }
                    } while((ri.Next(PageIteratorLevel.Symbol)));
                    if (texto.Length < 6)
                    {
                        texto += Resolver(sobreposto);
                        while (texto.Length < 6)
                        {
                            texto += LetraAleatoria();
                        }
                    }
                }
            }
        }
        return(texto);
    }
Example #22
0
        private void Button3_Click(object sender, EventArgs e)
        {
            // Button4 클릭 이벤트
            // Tesseract를 이용하여 문자 인식 후 textBox1에 출력
            // LSTM으로 훈련된 학습 모델과 데이터를 사용

            Pix pix1 = PixConverter.ToPix(bmp1);
            Pix pix2 = PixConverter.ToPix(bmp2);

            var result1 = engine.Process(pix1);

            textBox1.Text = result1.GetText();
            result1.Dispose();

            var result2 = engine.Process(pix2);

            textBox2.Text = result2.GetText();
            result2.Dispose();

            // MessageBox.Show(result.GetText());
        }
Example #23
0
        public Receipt ConvertImage(Bitmap image)
        {
            _tesseract = new TesseractEngine
                         (
                Environments.AppConfig.TesseractDataPath,
                Environments.AppConfig.OcrLanguage,
                EngineMode.TesseractOnly
                         );
            var page = _tesseract.Process(image);

            return(page.GetReceipt());
        }
Example #24
0
        private string[] ProcessSudokuImg(string fileName)  // --> Wydzielic do innej klasy!
        {
            int height = 450;
            int width  = 450;

            string[] digits = new string[81];

            Image <Bgr, byte> image = new Image <Bgr, byte>(fileName);

            image = image.Resize(width, height, Emgu.CV.CvEnum.Inter.Linear);

            Image <Gray, byte> grayImage = image.Convert <Gray, byte>();
            Image <Gray, byte> buffer    = grayImage.Copy();

            CvInvoke.GaussianBlur(grayImage, buffer, new System.Drawing.Size(5, 5), 1);
            grayImage = buffer;
            CvInvoke.AdaptiveThreshold(grayImage, buffer, 255, Emgu.CV.CvEnum.AdaptiveThresholdType.GaussianC, Emgu.CV.CvEnum.ThresholdType.Binary, 5, 2);
            grayImage = buffer;

            // Split image into 81 parts
            Image <Gray, byte>[] fields = new Image <Gray, byte> [81];

            for (int i = 0; i < 9; i++)
            {
                for (int j = 0; j < 9; j++)
                {
                    int border = 5;
                    System.Drawing.Rectangle rect = new System.Drawing.Rectangle(i * (width / 9) + border, j * (height / 9) + border, (width / 9) - 2 * border, (height / 9) - 2 * border);
                    grayImage.ROI = rect;
                    var index = i * 9 + j;
                    fields[index] = grayImage.CopyBlank();
                    grayImage.CopyTo(fields[index]);
                    grayImage.ROI = System.Drawing.Rectangle.Empty;
                }
            }

            // Recognize digits
            using (TesseractEngine engine = new TesseractEngine(@"./tessdata", "eng", EngineMode.Default))
            {
                engine.SetVariable("tessedit_char_whitelist", "0123456789");
                int i = 0;  //iterator
                foreach (var field in fields)
                {
                    Page   page   = engine.Process(field.ToBitmap(), PageSegMode.SingleChar);
                    string result = page.GetText();
                    page.Dispose();
                    digits[i++] = result.Trim();
                    field.Dispose();
                }
            }
            image.Dispose(); grayImage.Dispose(); buffer.Dispose();
            return(digits);
        }
        public bool IsScreenshot(Bitmap img)
        {
            string result1 = string.Empty;
            string result2 = string.Empty;
            Bitmap line1   = img.extractRegion(115, 15, 100, 20);
            Bitmap line2   = img.extractRegion(115, 40, 115, 25);

            using (var page = engine.Process(line1, PageSegMode.Auto))
            {
                result1 = page.GetText().Replace("\n", "").Replace("\r", "").Trim();
                MeanConfidences.Add(page.GetMeanConfidence());
            }

            using (var page = engine.Process(line2, PageSegMode.Auto))
            {
                result2 = page.GetText().Replace("\n", "").Replace("\r", "").Trim();
                MeanConfidences.Add(page.GetMeanConfidence());
            }

            return(result1.Contains("Aufnahme") || result2.Contains("gespeichert"));
        }
Example #26
0
 // Let tesseract read GetWindowScreenshot' bitmap and return text
 public string GetNextText()
 {
     try
     {
         using (Page page = ocr.Process(GetWindowScreenshot(), PageSegMode.Auto))
             return(page.GetText());
     }
     catch (Exception)
     {
         return("");
     }
 }
Example #27
0
 private void button1_Click(object sender, EventArgs e)
 {
     if (openFileDialog1.ShowDialog() == DialogResult.OK)
     {
         var img = new Bitmap(openFileDialog1.FileName);
         using (var ocr = new TesseractEngine(@"C:\Users\GMC\Desktop\tesseract-ocr-3.02.eng\tesseract-ocr\tessdata", "eng", EngineMode.TesseractAndCube))
         {
             var page = ocr.Process(img);
             textBox1.Text = page.GetText();
         }
     }
 }
Example #28
0
        //internal string dataPath = "./tessdatav4/";
        //internal string language = "fra";
        //OcrEngineMode oem = OcrEngineMode.LSTM_ONLY;
        //PageSegmentationMode psm = PageSegmentationMode.AUTO_OSD;

        // bad design, now i need various OCR objects( v3, v4, from google)
        // methods
        //convert pdf to image method
        //called by getcontents

        //public StringBuilder v4_GetContents(List<string> imgPaths)
        //{
        //    content = new StringBuilder();
        //    try
        //    {
        //        using (var engine = new TessBaseAPI())
        //        {
        //            // Initialize tesseract-ocr
        //            if (!engine.Init(dataPath, language, oem))
        //            {
        //                throw new Exception("Could not initialize tesseract.");
        //            }
        //            engine.SetVariable("preserve_interword_spaces", "1");
        //            engine.SetVariable("textord_dump_table_images", "0");
        //            engine.SetVariable("textord_tablefind_recognize_tables", "0");

        //            // Set the Page Segmentation mode
        //            engine.SetPageSegMode(psm);

        //            foreach (string ImagePath in imgPaths)
        //            {
        //                // Set the input image
        //                using (var img = engine.SetImage(ImagePath))
        //                {
        //                    // Recognize image
        //                    engine.Recognize();

        //                    ResultIterator resultIterator = engine.GetIterator();

        //                    // Extract text from result iterator
        //                   // PageIteratorLevel pageIteratorLevel = PageIteratorLevel.RIL_TEXTLINE;
        //                    using (var iter = engine.GetIterator())
        //                    {
        //                        iter.Begin();
        //                        do
        //                        {
        //                            do
        //                            {
        //                                do
        //                                {
        //                                    content.AppendLine(iter.GetUTF8Text(PageIteratorLevel.RIL_TEXTLINE));
        //                                } while (iter.Next(PageIteratorLevel.RIL_TEXTLINE));
        //                            } while (iter.Next(PageIteratorLevel.RIL_PARA));
        //                        } while (iter.Next(PageIteratorLevel.RIL_BLOCK));
        //                    }
        //                }
        //            }


        //        }
        //    }
        //    catch (Exception ex)
        //    {
        //        Trace.TraceError(ex.ToString());
        //        Console.WriteLine("Unexpected Error: " + ex.Message);
        //    }
        //    return content;
        //}

        public StringBuilder v3_GetContents(List <string> imgPaths)
        {
            //with an if we can process jpg or other image formats as well without nedding to convert

            content = new StringBuilder();
            try
            {
                using (var engine = new TesseractEngine(@"./tessdata", "fra", EngineMode.TesseractOnly))
                {
                    engine.SetVariable("preserve_interword_spaces", "1");
                    //engine.SetVariable("textord_dump_table_images", "0");
                    //engine.SetVariable("textord_tablefind_recognize_tables", "1");

                    // Set the Page Segmentation mode
                    //engine.SetVariable("textord_tabfind_show_columns", "1");
                    //engine.SetVariable("load_system_dawg", "0");


                    foreach (string ImagePath in imgPaths)
                    {
                        using (var img = Pix.LoadFromFile(ImagePath))
                        {
                            using (var page = engine.Process(img, PageSegMode.Auto))
                            {
                                //var text = page.GetText();
                                //Console.WriteLine("Mean confidence: {0}", page.GetMeanConfidence());
                                //Console.WriteLine(text);
                                using (var iter = page.GetIterator())
                                {
                                    iter.Begin();
                                    do
                                    {
                                        do
                                        {
                                            do
                                            {
                                                content.AppendLine(iter.GetText(PageIteratorLevel.TextLine));
                                            } while (iter.Next(PageIteratorLevel.Para, PageIteratorLevel.TextLine));
                                        } while (iter.Next(PageIteratorLevel.Block, PageIteratorLevel.Para));
                                    } while (iter.Next(PageIteratorLevel.Block));
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Trace.TraceError(ex.ToString());
                Console.WriteLine("Unexpected Error: " + ex.Message);
            }
            return(content);
        }
        /// <summary>
        /// 识别中文汉字
        /// </summary>
        /// <param name="bitmap"></param>
        /// <returns></returns>
        private string OCRImageRecognizeChi(Bitmap bitmap)
        {
            string res = "";

            using (var engine = new TesseractEngine(@"./tessdata", "chi_sim", EngineMode.Default))
            {
                engine.SetVariable("tessedit_unrej_any_wd", true);
                using (var page = engine.Process(bitmap, PageSegMode.SingleLine))
                    res = page.GetText();
            }
            return(res);
        }
Example #30
0
    private string Recognize(string path)
    {
        var p = Path.GetFullPath(@".\tessdata\");

        using var engine = new TesseractEngine(p, "mrz", EngineMode.Default);

        using var img = Pix.LoadFromFile(path);

        using var page = engine.Process(img);

        return(page.GetText());
    }
Example #31
0
        public static string Recognize(int x, int y, int w, int h, float scale)
        {
            var engine = new TesseractEngine(@"Library Data/Tessdata", "eng", EngineMode.Default);

            var image = Native.API.CopyScreenArea(x, y, w, h);

            var scaled = new Bitmap(image, new Size((int)(image.Width * scale), (int)(image.Height * scale)));

            var output = engine.Process(scaled).GetText();

            return(output ?? string.Empty);
        }
Example #32
0
        private void button8_Click(object sender, EventArgs e)
        {
            Bitmap image = new Bitmap(pictureBox2.Image);
            Bitmap scr   = ResmiEsiklemeYap(image);
            Bitmap sc    = Select(scr);

            pictureBox8.Image = sc;
            var ocr  = new TesseractEngine("./tessdata", "eng");
            var page = ocr.Process(sc);

            richTextBox1.Text = page.GetText();
        }
Example #33
0
        public void CanParseText()
        {
            using (var engine = new TesseractEngine(@"./tessdata", "eng", EngineMode.Default)) {
                using(var img = Pix.LoadFromFile("./phototest.tiff")) {
                    using(var page = engine.Process(img)) {
                        var text = page.GetText();

                        Assert.That(text, Is.EqualTo(""));

                    }
                }
            }
        }
Example #34
0
		public void CanParseText_UsingMode(PageSegMode mode, String expectedText)
		{

			using (var engine = new TesseractEngine(@"./tessdata", "eng", EngineMode.Default)) {
				var demoFilename = String.Format("./Data/Ocr/PSM_{0}.png", mode);
				using (var pix = Pix.LoadFromFile(demoFilename)) {
					using (var page = engine.Process(pix, mode)) {
						var text = page.GetText().Trim();

						Assert.That(text, Is.EqualTo(expectedText));

					}
				}    
			}
		}
Example #35
0
        public void CanProcessBitmap()
        {
            using (var engine = new TesseractEngine(@"./tessdata", "eng", EngineMode.Default)) {
                using (var img = new Bitmap("./phototest.tif")) {
                    using (var page = engine.Process(img)) {
                        var text = page.GetText();

                        const string expectedText =
                            "This is a lot of 12 point text to test the\nocr code and see if it works on all types\nof file format.\n\nThe quick brown dog jumped over the\nlazy fox. The quick brown dog jumped\nover the lazy fox. The quick brown dog\njumped over the lazy fox. The quick\nbrown dog jumped over the lazy fox.\n\n";

                        Assert.That(text, Is.EqualTo(expectedText));
                    }
                }
            }
        }
Example #36
0
        public void CanParseUznFile()
        {
            using (var engine = new TesseractEngine(@"./tessdata", "eng", EngineMode.Default)) {
                var inputFilename = TestFilePath(@"Ocr\uzn-test.png");
                using (var img = Pix.LoadFromFile(inputFilename)) {
                    using (var page = engine.Process(img, inputFilename, PageSegMode.SingleLine)) {
                        var text = page.GetText();

                        const string expectedText =
                            "This is another test\n\n";

                        Assert.That(text, Is.EqualTo(expectedText));
                    }
                }
            }
        }
Example #37
0
        public void CanProcessEmptyPxUsingResultIterator()
        {
            string actualResult;
            using (var engine = new TesseractEngine(@"./tessdata", "eng", EngineMode.Default)) {
                using (var img = Pix.LoadFromFile("./data/ocr/empty.png")) {
                    using (var page = engine.Process(img)) {
                        actualResult = WriteResultsToString(page);
                    }
                }
            }

            Assert.That(actualResult, Is.EqualTo(
            @"</word></line>
            </para>
            </block>
            "));
        }
Example #38
0
		public void CanParseMultipageTif()
		{
			using (var engine = new TesseractEngine(@"./tessdata", "eng", EngineMode.Default)) {
				using (var pixA = PixArray.LoadMultiPageTiffFromFile("./Data/processing/multi-page.tif")) {
					int i = 1;
					foreach (var pix in pixA) {
						using (var page = engine.Process(pix)) {
							var text = page.GetText().Trim();

							string expectedText = String.Format("Page {0}", i);
							Assert.That(text, Is.EqualTo(expectedText));
						}
						i++;
					}
				}
			}
		}
Example #39
0
        public void CanProcessDifferentRegionsInSameImage()
        {
            using (var engine = new TesseractEngine(@"./tessdata", "eng", EngineMode.Default)) {
                using (var img = Pix.LoadFromFile("./phototest.tif")) {
                    using (var page = engine.Process(img, Rect.FromCoords(0, 0, img.Width, 188))) {
                        var region1Text = page.GetText();

                        const string expectedTextRegion1 =
                            "This is a lot of 12 point text to test the\nocr code and see if it works on all types\nof file format.\n\n";

                        Assert.That(region1Text, Is.EqualTo(expectedTextRegion1));

                        page.RegionOfInterest = Rect.FromCoords(0, 188, img.Width, img.Height);

                        var region2Text = page.GetText();
                        const string expectedTextRegion2 =
                            "The quick brown dog jumped over the\nlazy fox. The quick brown dog jumped\nover the lazy fox. The quick brown dog\njumped over the lazy fox. The quick\nbrown dog jumped over the lazy fox.\n\n";

                        Assert.That(region2Text, Is.EqualTo(expectedTextRegion2));
                    }
                }
            }
        }
Example #40
0
        public void WritesOutThresholdedImageWhenOCRing()
        {
            var expectedFilePath = Path.Combine(Environment.CurrentDirectory, "tessinput.tif");

            if (File.Exists(expectedFilePath)) {
                File.Delete(expectedFilePath);
            }

            using (var engine = new TesseractEngine(@"./tessdata", "eng", EngineMode.Default)) {
                engine.SetVariable("tessedit_write_images", true);

                using (var img = Pix.LoadFromFile("./phototest.tif")) {
                    using (var page = engine.Process(img)) {
                        var region1Text = page.GetText();

                        Assert.That(File.Exists(expectedFilePath));
                    }
                }
            }
        }
Example #41
0
        public void Initialise_CanLoadConfigFile()
        {
            var tessDataPath = Path.Combine(Environment.CurrentDirectory, @"tessdata\");
            using (var engine = new TesseractEngine(tessDataPath, "eng", EngineMode.Default, "bazzar")) {
                // verify that the config file was loaded
                string user_patterns_suffix;
                if (engine.TryGetStringVariable("user_words_suffix", out user_patterns_suffix)) {
                    Assert.That(user_patterns_suffix, Is.EqualTo("user-words"));
                } else {
                    Assert.Fail("Failed to retrieve value for 'user_words_suffix'.");
                }

                using (var img = Pix.LoadFromFile("./phototest.tif")) {
                    using (var page = engine.Process(img)) {
                        var text = page.GetText();

                        const string expectedText =
                            "This is a Iot of 12 point text to test the\nocr code and see if it works on all types\nof file format.\n\nThe quick brown dog jumped over the\nIazy fox. The quick brown dog jumped\nover the Iazy fox. The quick brown dog\njumped over the Iazy fox. The quick\nbrown dog jumped over the Iazy fox.\n\n";

                        Assert.That(text, Is.EqualTo(expectedText));
                    }
                }
            }
        }
Example #42
0
        public void CanSetClassifyBlnNumericModeVariable()
        {
            using (var engine = new TesseractEngine(@"./tessdata", "eng", EngineMode.Default)) {
                engine.SetVariable("classify_bln_numeric_mode", 1);

                using (var img = Pix.LoadFromFile("./Data/processing/numbers.png")) {
                    using (var page = engine.Process(img)) {
                        var text = page.GetText();

                        const string expectedText = "1234567890\n\n";

                        Assert.That(text, Is.EqualTo(expectedText));
                    }
                }
            }
        }
Example #43
0
        public void CanProcessPixUsingResultIterator()
        {
            string actualResult;
            using (var engine = new TesseractEngine(@"./tessdata", "eng", EngineMode.Default)) {
                using (var img = Pix.LoadFromFile("./phototest.tif")) {
                    using (var page = engine.Process(img)) {
                        actualResult = WriteResultsToString(page);
                    }
                }
            }

            const string ExpectedResultPath = "./Results/EngineTests.CanProcessPixUsingResultIterator.txt";
            var expectedResult = File.ReadAllText(ExpectedResultPath);
            if (expectedResult != actualResult) {
                var actualResultPath = String.Format("./Results/EngineTests.CanProcessPixUsingResultIterator_{0:yyyyMMddTHHmmss}.txt", DateTime.UtcNow);
                File.WriteAllText(actualResultPath, actualResult);
                Assert.Fail("Expected results to be {0} but was {1}", ExpectedResultPath, actualResultPath);
            }
        }
Example #44
0
        public static void Main(string[] args)
        {
            var testImagePath = "./phototest.tif";
            if (args.Length > 0)
            {
                testImagePath = args[0];
            }

            try
            {
                using (var engine = new TesseractEngine(@"./tessdata", "eng", EngineMode.Default))
                {
                    using (var img = Pix.LoadFromFile(testImagePath))
                    {
                        using (var page = engine.Process(img))
                        {
                            var text = page.GetText();
                            Console.WriteLine("Mean confidence: {0}", page.GetMeanConfidence());

                            Console.WriteLine("Text (GetText): \r\n{0}", text);
                            Console.WriteLine("Text (iterator):");
                            using (var iter = page.GetIterator())
                            {
                                iter.Begin();

                                do
                                {
                                    do
                                    {
                                        do
                                        {
                                            do
                                            {
                                                if (iter.IsAtBeginningOf(PageIteratorLevel.Block))
                                                {
                                                    Console.WriteLine("<BLOCK>");
                                                }

                                                Console.Write(iter.GetText(PageIteratorLevel.Word));
                                                Console.Write(" ");

                                                if (iter.IsAtFinalOf(PageIteratorLevel.TextLine, PageIteratorLevel.Word))
                                                {
                                                    Console.WriteLine();
                                                }
                                            } while (iter.Next(PageIteratorLevel.TextLine, PageIteratorLevel.Word));

                                            if (iter.IsAtFinalOf(PageIteratorLevel.Para, PageIteratorLevel.TextLine))
                                            {
                                                Console.WriteLine();
                                            }
                                        } while (iter.Next(PageIteratorLevel.Para, PageIteratorLevel.TextLine));
                                    } while (iter.Next(PageIteratorLevel.Block, PageIteratorLevel.Para));
                                } while (iter.Next(PageIteratorLevel.Block));
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Trace.TraceError(e.ToString());
                Console.WriteLine("Unexpected Error: " + e.Message);
                Console.WriteLine("Details: ");
                Console.WriteLine(e.ToString());
            }
            Console.Write("Press any key to continue . . . ");
            Console.ReadKey(true);
        }