/// <summary> /// Perform OCR on pages of image. /// </summary> /// <param name="imageList"></param> /// <param name="index">-1 for all pages</param> /// <param name="rect">selection rectangle</param> void performOCR(IList <Image> imageList, string inputfilename, int index, Rectangle rect) { try { if (curLangCode.Trim().Length == 0) { MessageBox.Show(this, Properties.Resources.selectLanguage, strProgName); return; } this.statusLabel.Content = Properties.Resources.OCRrunning; this.Cursor = Cursors.Wait; this.textBox1.Cursor = Cursors.Wait; this.buttonOCR.IsEnabled = false; this.oCRToolStripMenuItem.IsEnabled = false; this.oCRAllPagesToolStripMenuItem.IsEnabled = false; this.toolStripProgressBar1.IsEnabled = true; this.toolStripProgressBar1.Visibility = Visibility.Visible; //this.toolStripProgressBar1.Style = ProgressBarStyle.Marquee; OCRImageEntity entity = new OCRImageEntity(imageList, inputfilename, index, rect, this.doubleSidedPageToolStripMenuItem.IsChecked, curLangCode); entity.ScreenshotMode = this.screenshotModeToolStripMenuItem.IsChecked; // Start the asynchronous operation. backgroundWorkerOcr.RunWorkerAsync(entity); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
//[System.Diagnostics.DebuggerNonUserCodeAttribute()] private void backgroundWorkerOcr_DoWork(object sender, DoWorkEventArgs e) { // Get the BackgroundWorker that raised this event. BackgroundWorker worker = sender as BackgroundWorker; OCRImageEntity entity = (OCRImageEntity)e.Argument; OCR <Image> ocrEngine = new OCRImages(); ocrEngine.PageSegMode = selectedPSM; ocrEngine.OcrEngineMode = selectedOEM; ocrEngine.Language = entity.Language; // Assign the result of the computation to the Result property of the DoWorkEventArgs // object. This is will be available to the RunWorkerCompleted eventhandler. //e.Result = ocrEngine.RecognizeText(entity.ClonedImages, entity.Lang, entity.Rect, worker, e); IList <Image> images = entity.ClonedImages; for (int i = 0; i < images.Count; i++) { if (worker.CancellationPending) { e.Cancel = true; break; } string result = ocrEngine.RecognizeText(((List <Image>)images).GetRange(i, 1), entity.Inputfilename, entity.Rect, worker, e); worker.ReportProgress(i, result); // i is not really percentage } }