Пример #1
0
        private void InitOcr(String path, String lang, OcrEngineMode mode)
        {
            try
            {
                if (_ocr != null)
                {
                    _ocr.Dispose();
                    _ocr = null;
                }

                if (String.IsNullOrEmpty(path))
                {
                    path = ".";
                }

                TesseractDownloadLangFile(path, lang);
                TesseractDownloadLangFile(path, "osd"); //script orientation detection
                String pathFinal = path.Length == 0 ||
                                   path.Substring(path.Length - 1, 1).Equals(Path.DirectorySeparatorChar.ToString())
                    ? path
                    : String.Format("{0}{1}", path, System.IO.Path.DirectorySeparatorChar);

                _ocr = new Tesseract(pathFinal, lang, mode);
            }
            catch (System.Net.WebException e)
            {
                _ocr = null;
                throw new Exception("Unable to download tesseract lang file. Please check internet connection.", e);
            }
            catch (Exception e)
            {
                _ocr = null;
                throw e;
            }
        }
Пример #2
0
        private void InitOcr(String path, String lang, OcrEngineMode mode)
        {
            try
            {
                if (_ocr != null)
                {
                    _ocr.Dispose();
                    _ocr = null;
                }

                if (String.IsNullOrEmpty(path))
                {
                    path = Tesseract.DefaultTesseractDirectory;
                }

                TesseractDownloadLangFile(path, lang);
                TesseractDownloadLangFile(path, "osd"); //script orientation detection

                _ocr = new Tesseract(path, lang, mode);
            }
            catch (System.Net.WebException e)
            {
                _ocr = null;
                throw  new Exception("Unable to download tesseract lang file. Please check internet connection.", e);
            }
            catch (Exception e)
            {
                _ocr = null;
                throw e;
            }
        }
 //"", "eng", OcrEngineMode.TesseractLstmCombined
 public void Init(string path, string lang, OcrEngineMode mode)
 {
     if (_ocr != null)
     {
         _ocr.Dispose();
     }
     _ocr = new Tesseract(path, lang, mode);
 }
Пример #4
0
 private void InitializeOCR(String dataPath, String lang, OcrEngineMode mode)
 {
     try
     {
         if (_ocr != null)
         {
             _ocr.Dispose();
         }
         _ocr = new Tesseract(dataPath, lang, mode);
     }
     catch (Exception e)
     {
         _ocr = null;
         throw e;
     }
 }
Пример #5
0
 /// <summary>
 /// Clear and reset the model. Required Init function to be called again before calling ProcessAndRender.
 /// </summary>
 public void Clear()
 {
     if (_ocr != null)
     {
         _ocr.Dispose();
         _ocr = null;
     }
 }
        public void SaveTicket()
        {
            try
            {
                var blockBlob = blobContainer.GetBlockBlobReference(ticket.PhotoName);

                var photo = ConvertPhotoToBlackWhite(blockBlob);
                if (photo == null)
                {
                    return;
                }

                var text = ExtractTextFromPhoto(photo);
                if (text == null)
                {
                    return;
                }

                var lines = text.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
                var lotteryNumberTable = CreateLotteryNumberTable();

                foreach (string line in lines)
                {
                    var lotteryNumber = ParseLotteryNumber(line);

                    if (!string.IsNullOrEmpty(lotteryNumber))
                    {
                        DataRow row = lotteryNumberTable.NewRow();
                        row["MatchNumbers"] = lotteryNumber.Substring(0, 10);
                        row["FinalNumbers"] = lotteryNumber.Substring(10, 2);
                        lotteryNumberTable.Rows.Add(row);
                    }
                }

                DataAccess.SaveTicket(ticket, lotteryNumberTable);
            }
            finally
            {
                if (OCR != null)
                {
                    OCR.Dispose();
                    OCR = null;
                }
            }
        }
Пример #7
0
        public object Any(OCRRequest request)
        {
            OCRResponse myResponse = new OCRResponse();

            if (request.Base64UploadFile == null || string.IsNullOrWhiteSpace(request.Base64UploadFile.ToString()))
            {
                myResponse.jsonResponse = "There was no file attached or no file name was specified.";
                return(myResponse);
            }

            try
            {
                // get the image data and save to local storage
                string base64ImgStr = request.Base64UploadFile.ToString().Split(',')[1];
                byte[] tmpBytes     = Convert.FromBase64String(base64ImgStr);
                Image  image        = (Bitmap)((new ImageConverter()).ConvertFrom(tmpBytes));

                // now do the OCR junk here
                var ocr = new Tesseract();
                ocr.SetVariable("tessedit_char_whitelist", "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-.,/");
                ocr.Init(@"C:\source\innovation\Content\tessdata", "eng", false);

                var resizedImage = (Bitmap)Resize(image, (3000), (3000), false);
                resizedImage.SetResolution(300, 300);

                var blackAndWhiteImage = BlackAndWhite(resizedImage, new Rectangle(0, 0, resizedImage.Width, resizedImage.Height));

                var result = ocr.DoOCR(blackAndWhiteImage, Rectangle.Empty);

                OCRRawDataModel dataItems = new OCRRawDataModel();
                dataItems.DataList = new List <OCRRawDataModel.RawDataItem>();
                foreach (Word word in result)
                {
                    var item = new OCRRawDataModel.RawDataItem();
                    item.Value      = word.Text;
                    item.Confidence = (int)word.Confidence;
                    item.LineIndex  = word.LineIndex;
                    dataItems.DataList.Add(item);
                }

                var mapper        = new IdentificationCardMapper();
                var mappedObjects = mapper.MapDriversLicenseData(dataItems);
                myResponse.jsonResponse = JsonConvert.SerializeObject(mappedObjects);

                // cleanup
                image.Dispose();
                resizedImage.Dispose();
                ocr.Dispose();
            }
            catch (Exception ex)
            {
                // i don't know what to do here...
                myResponse.jsonResponse = ex.Message;
            }

            return(myResponse);
        }
Пример #8
0
        public String readScreen(Bitmap bmp)
        {
            Tesseract tesseract = new Tesseract(@"C:\lang", "rus", OcrEngineMode.TesseractLstmCombined);

            tesseract.SetImage(bmp.ToImage <Bgr, byte>());
            tesseract.Recognize();
            String text = tesseract.GetUTF8Text();

            tesseract.Dispose();    //Очистка памяти
            return(text);
        }
Пример #9
0
 private void loadLanguageToolStripMenuItem_Click(object sender, EventArgs e)
 {
     if (openLanguageFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
     {
         _ocr.Dispose();
         string path = Path.GetDirectoryName(openLanguageFileDialog.FileName);
         string lang = Path.GetFileNameWithoutExtension(openLanguageFileDialog.FileName).Split('.')[0];
         _ocr = new Tesseract(path, lang, OcrEngineMode.Default);
         languageNameLabel.Text = String.Format("{0} : tesseract", lang);
     }
 }
Пример #10
0
        // grayscales the image and then runs the recognizer over it.
        private string ProcessImage(Mat image)
        {
            Tesseract          tesseract      = new Tesseract(TessdataDirectory, "eng", OcrEngineMode.Default, WhiteList, true);
            Image <Gray, Byte> processedImage = image.ToImage <Gray, Byte>();

            tesseract.SetImage(processedImage);
            tesseract.Recognize();
            string detectedText = tesseract.GetUTF8Text();

            tesseract.Dispose();
            return(detectedText);
        }
Пример #11
0
        public static void Main()
        {
            Stream    stream    = Assembly.GetExecutingAssembly().GetManifestResourceStream("TesserNet.Example.SkiaSharp.img.png");
            SKBitmap  image     = SKBitmap.Decode(stream);
            Tesseract tesseract = new Tesseract();

            Console.WriteLine(tesseract.Read(image).Trim());

            stream.Dispose();
            image.Dispose();
            tesseract.Dispose();
        }
Пример #12
0
        public static void Main()
        {
            Stream    stream    = Assembly.GetExecutingAssembly().GetManifestResourceStream("TesserNet.Example.System.Drawing.img.png");
            Image     image     = Image.FromStream(stream);
            Tesseract tesseract = new Tesseract();

            Console.WriteLine(tesseract.Read(image).Trim());

            stream.Dispose();
            image.Dispose();
            tesseract.Dispose();
        }
Пример #13
0
        public string TextRecognize(Image <Bgr, byte> imgSceneRect, Tesseract ocr)
        {
            string str;

            //ocr.SetImage(FilterPlate(imgSceneRect));
            ocr.SetImage(imgSceneRect);
            ocr.Recognize();

            str = ocr.GetUTF8Text();
            ocr.Dispose();

            return(str);
        }
Пример #14
0
        private void InitOCR(string dataPath, string lang, OcrEngineMode mode)
        {
            try
            {
                if (OCR != null)
                {
                    OCR.Dispose();
                    OCR = null;
                }

                OCR = new Tesseract(dataPath, lang, mode);
            }
            catch (Exception e)
            {
                OCR = null;
                Console.WriteLine("Failed to initialize tesseract OCR engine, error: " + e.Message);
            }
        }
Пример #15
0
 private static void InitOcr(String path, String lang, OcrEngineMode mode)
 {
     try
     {
         if (_ocr != null)
         {
             _ocr.Dispose();
             _ocr = null;
         }
         //_ocr = new Tesseract()
         _ocr = new Tesseract(path, lang, mode, "1234567890");
         //_ocr.SetVariable("tessedit_char_whitelist", "1234567890");
     }
     catch (Exception e)
     {
         _ocr = null;
     }
 }
Пример #16
0
        //private static void TesseractDownloadLangFile(String folder, String lang)
        //{
        //    String subfolderName = "tessdata";
        //    String folderName = System.IO.Path.Combine(folder, subfolderName);
        //    if (!System.IO.Directory.Exists(folderName))
        //    {
        //        System.IO.Directory.CreateDirectory(folderName);
        //    }
        //    String dest = System.IO.Path.Combine(folderName, String.Format("{0}.traineddata", lang));
        //    if (!System.IO.File.Exists(dest))
        //        using (System.Net.WebClient webclient = new System.Net.WebClient())
        //        {
        //            String source =
        //                String.Format("https://github.com/tesseract-ocr/tessdata/blob/4592b8d453889181e01982d22328b5846765eaad/{0}.traineddata?raw=true", lang);

        //            Console.WriteLine(String.Format("Downloading file from '{0}' to '{1}'", source, dest));
        //            webclient.DownloadFile(source, dest);
        //            Console.WriteLine(String.Format("Download completed"));
        //        }
        //}

        private void InitOcr(String path, String lang, OcrEngineMode mode)
        {
            try
            {
                if (_ocr != null)
                {
                    _ocr.Dispose();
                    _ocr = null;
                }


                _ocr = new Tesseract(path, lang, mode);
            }
            catch (Exception e)
            {
                _ocr = null;
                MessageBox.Show(e.Message, "Failed to initialize tesseract OCR engine", MessageBoxButtons.OK);
            }
        }
Пример #17
0
        private void buttonRecognize_Click(object sender, EventArgs e)
        {
            try
            {
                string data = "";
                _ocr           = new Tesseract(Path.GetFullPath("../../tessdata/"), _language, _mode);
                Cursor.Current = Cursors.WaitCursor;
                _ocr.SetImage(_img_gray);
                _ocr.Recognize();
                data = _ocr.GetUTF8Text();
                textRecognize.Text = data;
                _ocr?.Dispose();

                IDCardClient client;
                switch (_type)
                {
                case DocumentType.IDCardFrontSide:
                    client          = IDCardParser.ReadIDCardFrontSide(data);
                    textResult.Text = client.ToStringFrontSide();
                    break;

                case DocumentType.IDCardBackSide:
                    client          = IDCardParser.ReadIDCardBackSide(data);
                    textResult.Text = client.ToString();
                    break;

                case DocumentType.INN:
                    string clientInn = INNParser.Parse(data);
                    textResult.Text = $"INN = {clientInn}";
                    break;

                case DocumentType.SimpleText:
                    textResult.Text = data;
                    break;

                default:
                    break;
                }
            } catch (Exception ex)
            {
                MessageBox.Show($"{ex.Message}");
            }
        }
Пример #18
0
        private NumberRecognition()
        {
            try
            {
                if (_ocr != null)
                {
                    _ocr.Dispose();
                    _ocr = null;
                }

                _ocr = new Tesseract(".\\", "eng", OcrEngineMode.TesseractLstmCombined);
                _ocr.SetVariable("tessedit_char_whitelist", "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");
            }
            catch (System.Net.WebException e)
            {
                _ocr = null;
                throw new Exception("Unable to download tesseract lang file. Please check internet connection.", e);
            }
            catch (Exception e)
            {
                _ocr = null;
                throw e;
            }
        }
Пример #19
0
 /// <summary>
 ///   Disposes all the necessary objects
 /// </summary>
 protected override void DisposeObject()
 {
     _tesseract.Dispose();
 }
Пример #20
0
 protected override void DisposeObject()
 {
     _ocr.Dispose();
 }
Пример #21
0
 public void Dispose()
 {
     _ocr.Clear();
     _ocr.Dispose();
     _ocr = null;
 }
Пример #22
0
        void PerfromOCV()
        {
            string str1     = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +-/1234567890{}()_<>\"\\;:*#%$&";
            string language = "eng";


            ICapture capture = (ICapture)video;

            System.Threading.Thread.Sleep(2000);
            Mat    ImageMat = capture.QueryFrame();
            IImage image1   = (IImage)ImageMat;  //"Argument0", "Image Object");

            language = "eng";                    //"Argument1", "OCR Language");
            int  integerVariable1 = 70;          //"Argument2", "Upper Left Corner X coordinate of ROI");
            int  integerVariable2 = 70;          //"Argument3", "Upper Left Corner Y coordinate of ROI");
            int  integerVariable3 = 70;          //"Argument4", "ROI Width (Number of Pixels");
            int  integerVariable4 = 70;          //"Argument5", "ROI Height (Number of Pixels");
            bool booleanVariable  = false;       //"Argument6", "Display Debug Window");

            Image <Bgr, byte> image2 = new Image <Bgr, byte>(image1.Bitmap);

            image2.ROI = new Rectangle(integerVariable1, integerVariable2, integerVariable3, integerVariable4);
            string str2 = @".\\tessdata";

            if (!Directory.Exists(str2))
            {
                Directory.CreateDirectory(str2);
            }
            HelperMethods.LoadLanguage(str2, language);
            HelperMethods.LoadLanguage(str2, "osd");
            //HelperMethods.LoadLanguage(str2, language);
            //string path = Path.GetFullPath(@"C:\Users\MarquezFr\source\repos\EmguOpenCVExample\EmguOpenCVExample\bin\Debug\tessdata\");
            var tesseract = new Tesseract(Path.GetFullPath(str2.Length == 0 || str2.Substring(str2.Length - 1, 1).Equals(Path.DirectorySeparatorChar.ToString()) ? str2 : string.Format("{0}{1}", (object)str2, (object)Path.DirectorySeparatorChar)), language, OcrEngineMode.Default);

            tesseract.Init(Path.GetFullPath(str2.Length == 0 || str2.Substring(str2.Length - 1, 1).Equals(Path.DirectorySeparatorChar.ToString()) ? str2 : string.Format("{0}{1}", (object)str2, (object)Path.DirectorySeparatorChar)), language, OcrEngineMode.Default);
            //Tesseract tesseract = new Tesseract(path, language, OcrEngineMode.TesseractOnly);
            tesseract.SetVariable("tessedit_char_whitelist", str1);
            Image <Bgr, byte> image3 = new Image <Bgr, byte>(image2.Bitmap);

            if (image1.NumberOfChannels == 1)
            {
                CvInvoke.CvtColor((IInputArray)image2, (IOutputArray)image3, ColorConversion.Gray2Bgr, 0);
            }
            else
            {
                //image3 = (Image<Bgr, byte>)image1.Clone(); //original
                image3 = image1.Clone() as Image <Bgr, byte>;
            }
            //tesseract.SetImage((IInputArray)image3); original
            tesseract.SetImage((IInputArray)image3);
            if (tesseract.Recognize() != 0)
            {
                MessageBox.Show(string.Format("OpenCV_PerformOCR: OCR system failed to recognize image. OCR returned: {0}", (object)tesseract.Recognize()));
            }
            string utF8Text = tesseract.GetUTF8Text();

            char[] separator = new char[3]
            {
                ' ',
                '\r',
                '\n'
            };
            int length = utF8Text.Split(separator, StringSplitOptions.RemoveEmptyEntries).Length;

            if (booleanVariable)
            {
                //ImageViewer imageViewer = new ImageViewer((IImage)image2);
                //int num = (int)imageViewer.ShowDialog();
                //imageViewer.Dispose();
            }
            image2.Dispose();
            image3.Dispose();
            tesseract.Dispose();
        }