Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 3
0
        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;
            }
        }