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