Beispiel #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);
     }
 }
Beispiel #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();
        }
Beispiel #3
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");
            }
        }
Beispiel #4
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);
        }
Beispiel #6
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
                }
            }
        }
Beispiel #7
0
 private string readPdf(string filename)
 {
     loadingForm.setProgress("Reading " + SafeFileName);
     using (var Input = new OcrInput(filename))
     {
         var Result = Ocr.Read(Input);
         return(Result.Text);
     }
 }
Beispiel #8
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);
        }
Beispiel #9
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;
            }
        }
Beispiel #10
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");
            }
        }
Beispiel #11
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);
            }
        }
Beispiel #12
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="path"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task <string> OcrAsync(string path, CancellationToken cancellationToken = default)
        {
            if (Ocr == null)
            {
                await InitializeAsync(cancellationToken).ConfigureAwait(false);
            }
            Ocr = Ocr ?? throw new InvalidOperationException("Ocr is null.");

            using var input = new OcrInput(path);

            input.Deskew();

            var result = await Ocr.ReadAsync(input).ConfigureAwait(false);

            return(result.Text);
        }
Beispiel #13
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;
        }
        private async Task <Result <OcrResult> > OcrPdf(byte[] pdf)
        {
            try
            {
                using (var input = new OcrInput())
                {
                    input.AddPdf(pdf);
                    input.DeNoise();
                    var ocrResult = await ocr.ReadAsync(input);

                    return(Result <OcrResult> .Ok(ocrResult));
                }
            } catch (Exception ex)
            {
                return(Result <OcrResult> .Failure(ex.ToString()));
            }
        }
        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;
            }
        }
Beispiel #16
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);
            }
        }
Beispiel #17
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;
        }
Beispiel #18
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);
            }
        }
Beispiel #19
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;
            }
        }