Exemple #1
0
 private void exportToTextToolStripMenuItem_Click(object sender, EventArgs e)
 {
     try
     {
         StartExport();
         var thread = new Thread(() =>
         {
             var ocr = new IronTesseract();
             ocr.SetLanguage((int)readComboBoxSelected(cbxLanguages));
             using (Image img = (Image)picBox.Image?.Clone())
             {
                 if (img != null)
                 {
                     OcrInput ocrInput = new OcrInput(img);
                     var text          = ocr.Read(ocrInput).Text;
                     txtRes.Invoke(new DisplayResultTextDelegate(DisplayResultText), text);
                 }
                 else
                 {
                     txtRes.Invoke(new DisplayResultTextDelegate(DisplayResultText), string.Empty);
                 }
             }
         });
         thread.IsBackground = true;
         thread.Start();
     }
     catch (Exception ex)
     {
         EndExport();
         MessageBox.Show(ex.Message, "Có lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
Exemple #2
0
        static void Main(string[] args)
        {
            Console.WriteLine("Loading files...");
            var           path  = @"C:\Frelancing\ConsoleApp\OCR_Apps\IronOCR\Files\";
            List <string> paths = Directory.EnumerateFiles(path, "*.pdf").ToList();

            var searchableKeyCv = new List <string>();

            foreach (string filePath in paths)
            {
                Console.WriteLine("Read File- " + filePath);
                Console.WriteLine("Start-" + DateTime.Now);
                var ocr = new IronTesseract();
                using (var input = new OcrInput(filePath))
                {
                    var result = ocr.Read(input);
                    var text   = result.Text;
                    if (text.Contains("React"))
                    {
                        searchableKeyCv.Add("React");
                    }
                    //if (text.Contains("ETL"))
                    //    searchableKeyCv.Add("ETL");
                    Console.WriteLine("End-" + DateTime.Now);
                }
            }
            Console.WriteLine("Searchable Key Result-");
            foreach (var item in searchableKeyCv)
            {
                Console.WriteLine(item);
            }
            Console.ReadKey();
        }
Exemple #3
0
        public static void SetLanguage(this IronTesseract ocr, int selectedValue)
        {
            switch ((enumLanguages)selectedValue)
            {
            case enumLanguages.English:
                ocr.Language = OcrLanguage.English;
                break;

            case enumLanguages.Vietnamese:
                ocr.Language = OcrLanguage.Vietnamese;
                break;

            case enumLanguages.Japanese:
                ocr.Language = OcrLanguage.Japanese;
                break;

            case enumLanguages.ChineseSimplified:
                ocr.Language = OcrLanguage.ChineseSimplified;
                break;

            case enumLanguages.ChineseTraditional:
                ocr.Language = OcrLanguage.ChineseTraditional;
                break;

            default:
                ocr.Language = OcrLanguage.English;
                break;
            }
        }
Exemple #4
0
        public static ProcessedInvoice[] Process(string[] path)
        {
            var Ocr = new IronTesseract()
            {
                Configuration = new TesseractConfiguration(),
                Language      = Languages.English.OcrLanguagePack,
            };

            Console.WriteLine(path.Length);
            try
            {
                List <Task <ProcessedInvoice> > tasks = new List <Task <ProcessedInvoice> >();
                Stopwatch stopwatch = Stopwatch.StartNew();
                foreach (string p in path)
                {
                    tasks.Add(Task.Run(() => ProcessDocument(p, Ocr)));
                }

                Task.WaitAll(tasks.ToArray());
                stopwatch.Stop();
                Console.WriteLine(stopwatch.Elapsed.TotalSeconds);
                return(tasks.Select(a => a.Result).ToArray());
            }
            catch (Exception) { }
            return(null);
        }
        public async void DoAsyncOCR()
        {
            var image = Screenshot(Screen.AllScreens[(int)NUDDisplay.Value - 1]);

            IronTesseract IronOCR = new IronTesseract();
            OcrResult     Result  = await Task.Run(() => IronOCR.Read(image));

            var s = trimmer.Replace(Result.Text, " ");

            s = s.Replace(".", "");
            string[] words = s.Split(' ');

            Console.WriteLine("Comparing Pokemon");
            List <string> FoundPKMN = new List <string>();

            foreach (var WordFromScreen in words.Where(x => !string.IsNullOrWhiteSpace(x)))
            {
                foreach (var PokemonName in PokemonData.getPokemonNames())
                {
                    double Simularity = CalculateSimilarity(WordFromScreen, PokemonName);
                    if (Simularity >= (double)Tolerance && !FoundPKMN.Contains(PokemonName))
                    {
                        FoundPKMN.Add(PokemonName);
                    }
                }
            }
            FoundPKMN.Sort();
            FoundPKMN.Reverse();
            PrintResults(FoundPKMN);
        }
Exemple #6
0
        public void CaptureScreen()
        {
            //screenshot into png

            //string dir = AppDomain.CurrentDomain.BaseDirectory;
            Screenshot ps = new Screenshot();
            Image      i  = ps.CaptureScreen();

            //png into txt
            var    Ocr = new IronTesseract();
            string r   = "";

            using (var Input = new OcrInput(i))
            {
                //TODO: this Read is having problems!!
                var Result = Ocr.Read(Input);
                r = Result.Text;
            }
            Console.WriteLine($"Result: {r}");

            if (r.Contains("captcha") || r.Contains("Captcha"))
            {
                Stop();
                Console.WriteLine("\nVerify detected, stopped all timers!");
            }
            else
            {
                Console.WriteLine("\nNo Verify detected.");
            }
        }
        public BillOfLadingModel Read(IFormFile file)
        {
            var result = new BillOfLadingModel();
            var ss     = new StorageService();
            var it     = new IronTesseract();

            //ss.Upload(file);

            try
            {
                using (var input = new OcrInput())
                {
                    input.AddPdf(file.OpenReadStream());
                    var oRes  = it.Read(input);
                    var words = oRes.Words;

                    result.Transporter.BLNumber = words.GetBLNumber();
                }
            }
            catch (System.Exception e)
            {
                System.Diagnostics.Debug.WriteLine(e);
            }

            return(result);
        }
Exemple #8
0
        static void ScanImageAndSaveTxt(string path)
        {
            var Ocr = new IronTesseract();

            Ocr.Configuration.BlackListCharacters         = "~`$#^*_}{][|\\@-©<>«=";
            Ocr.Configuration.TesseractVersion            = TesseractVersion.Tesseract4;
            Ocr.Configuration.RenderSearchablePdfsAndHocr = true;
            Ocr.Configuration.PageSegmentationMode        = TesseractPageSegmentationMode.Auto;

            Ocr.Language = OcrLanguage.GermanBest;

            // var result = Ocr.Read(@"C:\Users\d4gei\Workspace\ScanAndHoardData\TestData\PXL_20201126_130717460.jpg");

            //Console.WriteLine(result.Text);


            using (var Input = new OcrInput())
            {
                Input.AddImage(path);
                Input.DeNoise();  //fixes digital noise
                Input.Deskew();   //fixes rotation and perspective
                                  // there are dozens more filters, but most users wont need them
                IronOcr.OcrResult Result = Ocr.Read(Input);
                Console.WriteLine(Result.Text);
                Result.SaveAsTextFile(path + ".txt");
                Result.SaveAsHocrFile(path + ".html");
                Result.SaveAsSearchablePdf(path + ".pdf");
            }
        }
Exemple #9
0
        private void button1_Click(object sender, EventArgs e)
        {
            if (pictureBox1.ImageLocation == null)
            {
                string            message = "Please drag image file to the top frame to continue...";
                string            caption = "Oops...";
                MessageBoxButtons buttons = MessageBoxButtons.OK;
                DialogResult      result;
                result = MessageBox.Show(message, caption, buttons);
            }
            else
            {
                var Ocr = new IronTesseract();
                using (var Input = new OcrInput(pictureBox1.ImageLocation)) //show in the window
                {
                    var Result = Ocr.Read(Input);
                    textBox1.Text       = Result.Text;
                    textBox1.ScrollBars = ScrollBars.Both;
                }
                using (var Input = new OcrInput(pictureBox1.ImageLocation)) //the text every line without withspace
                {
                    string text = Ocr.Read(Input).Text;

                    Calculate c = new Calculate(text);
                    c.CalculateLanguage();// calculate the language
                }
            }
        }
Exemple #10
0
        static void Main(string[] args)
        {
            var Result = new IronTesseract().Read(@"C:\Users\hrust\Downloads\pic 3.jpg");

            File.WriteAllText(@"C:\Users\hrust\Downloads\temp_text.txt", Result.Text);

            Console.WriteLine(Result.Text);
        }
Exemple #11
0
        public async Task <IActionResult> Index(IbanScanViewModel model)
        {
            // Check if it's an image.
            if (!model.ImageFile.IsImage())
            {
                return(RedirectToAction(nameof(Index)));
            }
            var imagePath = Path.Combine(_hostEnvironment.WebRootPath, "images");

            if (!Directory.Exists(imagePath))
            {
                Directory.CreateDirectory(imagePath);
            }

            // Upload image
            using (var fs = new FileStream(Path.Combine(imagePath, model.ImageFile.FileName), FileMode.Create))
                await model.ImageFile.CopyToAsync(fs);

            const string ibanRegex    = "[a-zA-Z]{2}[0-9]{2}[a-zA-Z0-9]{4}[0-9]{7}([a-zA-Z0-9]?){0,16}";
            var          newImagePath = Path.Combine(imagePath, model.ImageFile.FileName);
            var          result       = new IronTesseract().Read(newImagePath);
            var          textResult   = result.Text;
            var          text         = "";

            // Delete Gaps
            for (int i = 0; i < textResult.Length; i++)
            {
                if (textResult[i] == ' ')
                {
                    continue;
                }
                text += textResult[i];
            }

            var match = Regex.Match(text, ibanRegex);
            IbanScanViewModel resultModel;

            if (match.Success)
            {
                resultModel = new IbanScanViewModel
                {
                    Success = true,
                    Iban    = match.Value
                };
            }
            else
            {
                resultModel = new IbanScanViewModel
                {
                    Success = false
                };
            }

            return(View(resultModel));
        }
Exemple #12
0
        /// <inheritdoc cref="IImageOcrReader"/>
        /// <summary>
        /// Reads the text on the given image.
        /// </summary>
        /// <param name="fileName">The file name.</param>
        /// <returns>The read <see cref="string"/>.</returns>
        /// <seealso cref="IImageOcrReader"/>
        public string ReadTextOnImage(string fileName)
        {
            var ocrHelper = new IronTesseract();

            using var input = new OcrInput(fileName);
            input.Deskew();
            input.DeNoise();
            var result = ocrHelper.Read(input);

            return(result.Text);
        }
Exemple #13
0
        private void button2_Click(object sender, EventArgs e)
        {
            var Ocr = new IronTesseract();

            using (var input = new OcrInput(fileName))
            {
                input.Deskew();
                var result = Ocr.Read(input);
                richTextBox1.Text = result.Text;
            }
        }
Exemple #14
0
        public static string OCRcheck(int RectUpperLeftX, int RectUpperLeftY, int RectWith = 140, int RectHigh = 45, string Whitelist = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ß! -%/äüöÄÜÖ")
        {
            Bitmap   src      = new Bitmap(SystemInformation.VirtualScreen.Width, SystemInformation.VirtualScreen.Height);      // Create an empty bitmap with the size of all connected screen
            Graphics graphics = Graphics.FromImage(src as Image);                                                               // Create a new graphics objects that can capture the scree

            graphics.CopyFromScreen(SystemInformation.VirtualScreen.Left, SystemInformation.VirtualScreen.Top, 0, 0, src.Size); // Screenshot moment → screen content to graphics object
            FullsizeImage = src;

            Rectangle cropRect = new Rectangle(RectUpperLeftX, RectUpperLeftY, RectWith, RectHigh);
            Bitmap    cropped  = (Bitmap)src.Clone(cropRect, src.PixelFormat);

            cropped.Save("c:\\temp\\SrcTest.png");
            var OCR = new IronTesseract();

            OCR.Language = OcrLanguage.GermanFast;
            //OCR.Configuration.BlackListCharacters = "013456789";
            OCR.Configuration.WhiteListCharacters = Whitelist;
            OCR.Configuration.ReadBarCodes        = false;
            //OCR.Configuration.RenderSearchablePdfsAndHocr = false;

            string OCRText = OCR.Read(cropped).Text;

            if (OCRText == null || OCRText == "")
            {
                TransformedCropImage = Transform(cropped);
                TransformedCropImage.Save("c:\\temp\\SrcTestTransform.png");
                OCR.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.SingleChar;
                OCRText = OCR.Read(TransformedCropImage).Text;
                if (OCRText == "" || OCRText == null)
                {
                    OCR.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;
                    Bitmap resizedCropped = new Bitmap(cropped.Width + cropped.Width + cropped.Width, cropped.Height); //creating empty Bitmap - 3times the Width of the cropped Image
                    using (Graphics g = Graphics.FromImage(resizedCropped)) {
                        g.DrawImage(cropped, 0, 0);                                                                    //Adding Image 1 on pos 0,0
                        g.DrawImage(cropped, cropped.Width, 0);                                                        //Adding Image 2 on pos Image1.Witdh,0
                        g.DrawImage(cropped, cropped.Width + cropped.Width, 0);
                    }

                    resizedCropped.Save("c:\\temp\\SrcTestresizedCropped.png");
                    OCRText = OCR.Read(resizedCropped).Text;
                    if (OCRText.Length == 6)
                    {
                        OCRText = OCRText.Substring(0, 2);
                    }
                    else if (OCRText.Length == 3)
                    {
                        OCRText = OCRText.Substring(0, 1);
                    }
                }
            }
            log.Debug("OCR text: " + OCRText);
            LoopGarbageCollector.ClearGarbageCollector();
            return(OCRText);
        }
Exemple #15
0
        public static string IronOCR(string imagepath) // Iron_圖片辨識
        {
            var Ocr = new IronTesseract();

            using (var Input = new OcrInput(imagepath))
            {
                Input.Deskew();  // use if image not straight
                Input.DeNoise(); // use if image contains digital noise
                var Result = Ocr.Read(Input);
                return(Result.Text);
            }
        }
Exemple #16
0
        static void Main(string[] args)
        {
            var Ocr = new IronTesseract();

            using (var Input = new OcrInput())
            {
                Input.AddMultiFrameTiff(@"C:\Users\hrust\Downloads\pic 3.jpg");
                var Result = Ocr.Read(Input);

                Result.SaveAsSearchablePdf("searchable.pdf");
            }
        }
Exemple #17
0
        private static ProcessedInvoice ProcessDocument(string path, IronTesseract ocr)
        {
            string text = "";

            if (System.IO.Path.GetExtension(path) == ".pdf")
            {
                PdfReader reader = new PdfReader(path);

                text = PdfTextExtractor.GetTextFromPage(reader, 1);
            }
            else if (System.IO.Path.GetExtension(path) == ".docx")
            {
                var     doc = DocX.Load(path);
                Headers h   = doc.Headers;
                text = "";
                if (h.Even != null && h.Even.Paragraphs != null)
                {
                    foreach (Paragraph p in h.Even?.Paragraphs)
                    {
                        text += p.Text;
                    }
                }

                if (h.Odd != null && h.Odd.Paragraphs != null)
                {
                    foreach (Paragraph p in h.Odd?.Paragraphs)
                    {
                        text += p.Text;
                    }
                }

                if (h.First != null && h.First.Paragraphs != null)
                {
                    foreach (Paragraph p in h.First?.Paragraphs)
                    {
                        text += p.Text;
                    }
                }



                text += doc.Text;

                Console.WriteLine(text);
            }
            else
            {
                text = ocr.Read(path).Text;
            }

            return(ProcessInvoice(text, path));
        }
Exemple #18
0
        private async void Timer_Tick(object sender, EventArgs e)
        {
            using (var screen = GetScreen(Screen.PrimaryScreen))
                foreach (var captureArea in _captureAreas.Where(cs => cs.IsEnabled))
                {
                    if (DateTime.Now - _lastTimes[captureArea] < captureArea.Interval)
                    {
                        continue;
                    }
                    _lastTimes[captureArea] = DateTime.Now;

                    using (var bmp = new Bitmap(captureArea.Size.Width, captureArea.Size.Height))
                    {
                        using (var gr = Graphics.FromImage(bmp))
                            gr.DrawImageUnscaled(screen, -captureArea.Point.X, -captureArea.Point.Y, captureArea.Size.Width, captureArea.Size.Height);

                        //bmp.Save(@"C:\_\10\06\2.jpg", ImageFormat.Jpeg);

                        var s = new IronTesseract().Read(bmp).Text;
                        if (!string.IsNullOrEmpty(s))
                        {
                            s.Equals(null);
                        }

                        using (var memory = new MemoryStream())
                        {
                            bmp.Save(memory, ImageFormat.Bmp);
                            memory.Position = 0;

                            var bmpDecoder = await Windows.Graphics.Imaging.BitmapDecoder.CreateAsync(memory.AsRandomAccessStream());

                            var softwareBmp = await bmpDecoder.GetSoftwareBitmapAsync();

                            var ocrResult = await _ocrEngine.RecognizeAsync(softwareBmp);

                            TextCaptured?.Invoke(captureArea, ocrResult.Lines.Select(ln => ln.Text).ToArray());

                            if (ImageCaptured != null)
                            {
                                memory.Position = 0;
                                var bitmapimage = new BitmapImage();
                                bitmapimage.BeginInit();
                                bitmapimage.StreamSource = memory;
                                bitmapimage.CacheOption  = BitmapCacheOption.OnLoad;
                                bitmapimage.EndInit();
                                ImageCaptured.Invoke(captureArea, bitmapimage);
                            }
                        }
                    }
                }
        }
Exemple #19
0
        public Watch()
        {
            InitializeComponent();
            ControlExtension.Draggable(panel2, true);

            Ocr = new IronTesseract();

            t          = new Timer();
            t.Interval = 1000;
            t.Tick    += new EventHandler(timer_Tick);
            t.Start();

            readAndShow();
        }
Exemple #20
0
        private void TranslateFileInnerEngener()
        {
            string file = FilePath.Text; // ☜ jpg, gif, tif, pdf, etc.

            PBOCR.Value = 30;
            //var Ocr = new IronOcr.AdvancedOcr();
            try
            {
                //Ocr.CleanBackgroundNoise = true;
                //Ocr.EnhanceContrast = true;
                //Ocr.EnhanceResolution = true;
                //Ocr.Language = IronOcr.o OcrLanguagePack(
                //    Languages.ChineseSimplified.OcrLanguagePack,
                //    Languages.English.OcrLanguagePack
                //);
                //PBOCR.Value = 40;
                //Ocr.Strategy = IronOcr.AdvancedOcr.OcrStrategy.Advanced;
                //Ocr.ColorSpace = AdvancedOcr.OcrColorSpace.Color;
                //Ocr.DetectWhiteTextOnDarkBackgrounds = true;
                //Ocr.InputImageType = AdvancedOcr.InputTypes.AutoDetect;
                //Ocr.RotateAndStraighten = true;
                //Ocr.ReadBarCodes = true;
                //Ocr.ColorDepth = 4;
                //var testDocument = file;
                //PBOCR.Value = 45;
                //var Results = Ocr.Read(testDocument);
                //PBOCR.Value = 80;
                //ResultTest.Text = Results.Text;
                //PBOCR.Value = 90;
                var Ocr = new IronTesseract();
                using (var Input = new OcrInput(file))
                {
                    Ocr.Language = OcrLanguage.EnglishBest;
                    //Ocr.AddSecondaryLanguage(OcrLanguage.ChineseSimplified);
                    // Input.Deskew();  // use if image not straight
                    //Input.DeNoise(); // use if image contains digital noise
                    var Result = Ocr.Read(Input);
                    //Console.WriteLine(Result.Text);
                    ResultTest.Text = Result.Text;
                }
            }
            catch (Exception)
            {
                ResultTest.Text = "本地引擎在分析是出错,请联系管理员!";
            }
            PBOCR.Value = 100;
        }
        public void ReadScreen(string image)
        {
            string result;
            var    cr = new IronTesseract();

            using (var input = new OcrInput(Imagepath + $"TeamGold\\{image}"))
            {
                input.DeNoise();
                result = cr.Read(input).Text;
            }

            int    index = 0;
            double gold  = 0;

            char[] tmpGoldValue = result.ToCharArray();
            char[] goldValue    = new char[5];

            foreach (char c in tmpGoldValue)
            {
                if (c != ' ')
                {
                    goldValue[index] = c;
                    index++;
                }
            }

            if (double.TryParse(goldValue[0].ToString() + goldValue[1].ToString(), out double resultV))
            {
                gold += resultV;
            }

            if (double.TryParse(goldValue[3].ToString(), out double resultV2))
            {
                gold += resultV2 / 10;
            }

            if (image == "GoldBlueTeam.png")
            {
                GoldBlue = gold;
            }
            else if (image == "GoldRedTeam.png")
            {
                GoldRed = gold;
            }
        }
Exemple #22
0
        public static string ConvertImgToText(Bitmap bt)
        {
            var Ocr = new IronTesseract();

            // Fast Dictionary
            Ocr.Language = OcrLanguage.EnglishFast;
            // Latest Engine
            Ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5;
            //AI OCR only without font analysis
            //Ocr.Configuration.EngineMode = TesseractEngineMode.LstmOnly;
            //Turn off unneeded options
            Ocr.Configuration.ReadBarCodes = false;
            Ocr.Configuration.RenderSearchablePdfsAndHocr = false;
            // Assume text is laid out neatly in an orthagonal document
            Ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.Auto;
            using (var Input = new OcrInput(bt))
            {
                var Result = Ocr.Read(Input);
                return(Result.Text);
            }
        }
Exemple #23
0
        public MainForm()
        {
            InitializeComponent();

            WindowState   = FormWindowState.Normal;
            StartPosition = FormStartPosition.Manual;
            BringToFront();
            Left    = 1920 - Width;
            Width  += 7;
            Height += 7;
            Top     = 0;

            Ocr = new IronTesseract();

            initTable();

            comboBoxGain.SelectedIndex  = 1;
            comboBoxValue.SelectedIndex = comboBoxValue.Items.Count - 1;
            radioButtonBlack.Checked    = true;

            updateTable();
        }
Exemple #24
0
        private void btnTransform_Click(object sender, EventArgs e)
        {
            btnTransform.Enabled = false;

            var Ocr = new IronTesseract();

            // Если выбран русский язык
            switch (cbLanguage.SelectedIndex)
            {
            case 0:
                Ocr.Language = OcrLanguage.EnglishBest;
                break;

            case 1:
                Ocr.Language = OcrLanguage.RussianBest;
                break;
            }

            using (var Input = new OcrInput(pbPic.Image))
            {
                // Если изображение неровное
                if (chbAlign.Checked)
                {
                    Input.Deskew();
                }

                // Очистка шума
                if (chbNoise.Checked)
                {
                    Input.DeNoise();
                }
                var Result = Ocr.Read(Input);

                tbText.Text = Result.Text;
            }

            btnTransform.Enabled = true;
        }
Exemple #25
0
        private async void Form1_Load(object sender, EventArgs e)
        {
            Aletorio = oRandom.Next(0, 9999);
            //MessageBox.Show(Aletorio.ToString());
            //string urlCaptcha = "https://e-consultaruc.sunat.gob.pe/cl-ti-itmrconsmulruc/captcha?accion=image";
            string urlCaptcha = string.Format("https://e-consultaruc.sunat.gob.pe/cl-ti-itmrconsruc/captcha?accion=image&nmagic={0}", Aletorio);

            try
            {
                HttpResponseMessage response = await client.GetAsync(urlCaptcha);

                response.EnsureSuccessStatusCode();
                Stream oStream = await response.Content.ReadAsStreamAsync();

                //byte[] oMemoryStream = await response.Content.ReadAsByteArrayAsync();
                Image oImage = Image.FromStream(oStream);

                var oCr = new IronTesseract();
                using (var Input = new OcrInput(oImage))
                {
                    var Results = oCr.Read(Input);
                    txtCaptcha.Text = Results.Text.Trim();
                }

                pbImagen.Image = oImage;

                //var OcrEngine = new TesseractEngine("","eng", EngineMode.Default);
                //var img = Pix.LoadFromMemory(oMemoryStream);
                //var res = OcrEngine.Process(img);
                //txtCaptcha.Text = res.GetText();
            }
            catch (HttpRequestException ex)
            {
                Console.WriteLine("\nException Caught!");
                Console.WriteLine("Message :{0} ", ex.Message);
            }
        }
 public IronOcrSalesInvoiceReader(IronTesseract ocr, IInvoiceTotalSum invoiceTotal)
 {
     this.ocr          = ocr;
     this.invoiceTotal = invoiceTotal;
 }
Exemple #27
0
        private async void HandleOcrProcess(object sender, RoutedEventArgs e) // OCR 작업을 위한 이벤트 핸들러
        {
            // selectedImg에 소스가 없을 시 종료
            if (selectedImgPath == null)
            {
                MessageBox.Show("사진을 선택해주세요!", "ERROR", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            // 응용프로그램 제어 방지
            Mouse.OverrideCursor = Cursors.Wait;
            BlockGrid.Visibility = Visibility.Visible;
            StatusLabel.Content  = "사진-텍스트 변환중";

            var set = Properties.Settings.Default;

            try
            {
                var Ocr = new IronTesseract();
                if (koreanCheck.IsChecked == true)
                {
                    Ocr.Language = OcrLanguage.KoreanBest;
                }
                else if (englishCheck.IsChecked == true)
                {
                    Ocr.Language = OcrLanguage.EnglishBest;
                }
                else
                {
                    // 응용프로그램 오류 방지를 위한 재시작
                    MessageBox.Show("언어선택에서 오류가 발생했습니다. 다시 실행합니다...", "ERROR", MessageBoxButton.OK, MessageBoxImage.Error);
                    System.Diagnostics.Process.Start(Application.ResourceAssembly.Location);
                    Application.Current.Shutdown();
                }

                // OCR 작업 비동기 대기
                using var Input = new OcrInput(selectedImgPath);
                var Result = await Ocr.ReadAsync(Input);

                // OCR 결과 텍스트를 정규식을 통해 불필요한 문자 제거
                string resultString = Result.Text;
                resultString = Regex.Replace(resultString, @"[`@#$&*_{}[\]|\\;<>/]", "", RegexOptions.Singleline);
                resultString = Regex.Replace(resultString, "\\s+", " ");
                resultString = resultString.Trim();

                // 맞춤법 검사 시행
                StatusLabel.Content = "맞춤법 검사중";
                resultString        = await HandleSpellCheck(resultString);

                // 결과 텍스트 텍스트박스에 출력
                ocrResultTextBox.Text = resultString;

                // 텍스트 파일 저장 옵션 설정이 되어있을시 저장 시행
                if (set.IsTextSave)
                {
                    string filePath = null;
                    string fileName = Path.GetFileName(selectedImgPath);

                    // 사용자가 저장 경로를 지정했는지 확인 후 저장 경로 설정
                    if (set.IsSavePathCustomed)
                    {
                        filePath = set.SavePath + "/txt/";
                    }
                    else
                    {
                        filePath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "/ITS/txt/";
                    }

                    // 파일 경로 및 파일 이름 설정
                    string fileFullName = $"{filePath}{fileName}.txt";

                    // 중복된 파일이 존재할시 덮어쓸지 메세지 박스를 통해 알림
                    if (File.Exists(fileFullName))
                    {
                        var dr = MessageBox.Show($"{fileFullName}이 이미 존재합니다. 덮어쓰시겠습니까?", "중복", MessageBoxButton.YesNo, MessageBoxImage.Question);
                        if (dr == MessageBoxResult.Yes)
                        {
                            // 기존 텍스트 파일 제거 저장 비동기 대기
                            File.Delete(fileFullName);
                            await File.WriteAllTextAsync(fileFullName, resultString.Replace(". ", ".\n")); // 가독성을 위한 ". " 이후 줄 변경
                        }
                        else
                        {
                            return;
                        }
                    }
                    else
                    {
                        // 텍스트 파일 저장 비동기 대기
                        await File.WriteAllTextAsync(fileFullName, resultString.Replace(". ", ".\n")); // 가독성을 위한 ". " 이후 줄 변경
                    }
                }
            }
            catch (Exception ex)
            {
                // 예외 처리
                Console.WriteLine(ex);
            }
            finally
            {
                // 제어 방지 해제
                BlockGrid.Visibility = Visibility.Hidden;
                Mouse.OverrideCursor = null;
            }
        }