/// <summary> /// Methode only for confidence /// </summary> /// <param name="img"></param> /// <param name="angle"></param> /// <returns></returns> public double GetConfidenceForOrientation(Mat img, int angle) { double conf = 0; try { using (TessBaseAPI engine = new TessBaseAPI(@".\tessdata", _lang, OcrEngineMode.TESSERACT_LSTM_COMBINED)) { _cvService = OpenCVImageService.GetInstance(); _cvService.RotateImage(img, ref img, angle, 1); engine.InitForAnalysePage(); engine.Init(null, _lang); //engine.SetInputImage(pix); engine.SetImage(new UIntPtr(BitConverter.ToUInt64(BitConverter.GetBytes(img.Data.ToInt64()), 0)), img.Size().Width, img.Size().Height, img.Channels(), (int)img.Step1()); engine.Recognize(); conf = engine.MeanTextConf; } } catch (Exception e) { throw new Exception(e.Message, e.InnerException); } return(conf); }
public static OpenCVImageService GetInstance() { if (_service == null) { _service = new OpenCVImageService(); filesToDelete = new List <string>(); } return(_service); }
public async Task StartService() { foreach (FileToProcess s in _filesToProcess) { var progress = new Progress <int>(percent => { if ((s.ProgressBar.Value + percent) > 100) { s.ProgressBar.Value = 100; } else { s.ProgressBar.Value = s.ProgressBar.Value + percent; } }); await Task.Run(async() => { var _cvService = OpenCVImageService.GetInstance(); if (SETTINGS.UseGoogleVision) { Annotate anotate = new Annotate(); _cvService.PrepareImageForGoogle(s.Path, progress, SETTINGS.TesseractLang); await anotate.GetText(_cvService.Rotated, SETTINGS.GoogleLang, "TEXT_DETECTION"); var response = anotate.Response; PreviewObject p = new PreviewObject(); p.Path = s.Path; p.Lang = SETTINGS.TesseractLang; p.Img = _cvService.bmp; p.Lines = MakeLinesFromWord(response); ProcessLines(p, progress); _previewObjects.Add(p); } else { TesseractService tess = new TesseractService(SETTINGS.TesseractLang); _cvService.PrepareImage(s.Path, progress, SETTINGS.TesseractLang); Mat image = _cvService.Rotated; double ratioX = 1; double ratioY = 1; var id = CheckForPattern(tess, image, ref ratioX, ref ratioY); if (id == -1) { PreviewObject p = tess.ProcessImage(image, progress); p.Path = s.Path; ProcessLines(p, progress); _previewObjects.Add(p); } else { PreviewObject prew; // pattern found => use it tess.CheckImageForPatternAndGetDataFromIt(image, GetKeysPossitions(id), progress, out prew, ratioX, ratioY); prew.Path = s.Path; _previewObjects.Add(prew); } } }); s.ProgressBar.Value = 100; s.Button.Enabled = true; } }