zoukankan      html  css  js  c++  java
  • csharp: Emgu.CV.OCR and Tesseract.OCR Optical Character Recognition

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using Emgu.CV;  //3.2.02
    using Emgu.CV.VideoStab;
    using Emgu.CV.ML;
    using Emgu.CV.OCR;
    using Emgu.CV.Structure;
    //https://github.com/iobrains/OpenCV
    
    
    namespace CharacterRecognition
    {
    
        /// <summary>
        /// geovindu edit
        /// </summary>
        public partial class MainWnd : Form
        {
            string path;
            public MainWnd()
            {
                InitializeComponent();
            }
            /// <summary>
            /// 
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void loadImageToolStripMenuItem_Click(object sender, EventArgs e)
            {
                rtbOcrResult.Clear();
    
                OpenFileDialog ofd = new OpenFileDialog();
                ofd.Title = "Select an image";
                ofd.Filter = "Image Files(*.png; *.jpg; *.bmp; *.gif)|*.png; *.jpg; *.bmp; *.gif";
                if (ofd.ShowDialog() == DialogResult.OK)
                {
                    path = System.IO.Path.GetFullPath(ofd.FileName);
                    picBox.Image = new Bitmap(path);
                    picBox.SizeMode = PictureBoxSizeMode.Zoom;
                    statusLabelOCR.Text = path + " loaded.";
                }
            }
            /// <summary>
            /// 
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void exitToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Close();
            }
            /// <summary>
            /// 
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btnAnalyzeImage_Click(object sender, EventArgs e)
            {
                if(picBox.Image == null)
                {
                    MessageBox.Show("Load an image first!");
                }
                else
                {
                    statusLabelOCR.Text = "Analyzing invoice image...";
                    Task.Run(() =>
                    {
                        using (var img = new Image<Bgr, byte>(path))
                        {
                            //https://github.com/tesseract-ocr/tessdata/
                            //Environment.GetEnvironmentVariable("EMGU_ROOT") +
                            string tessdata = @"D:open sourceface	essdata";
                            using (var ocrProvider = new Tesseract(tessdata, "eng", OcrEngineMode.TesseractOnly))  //TesseractCubeCombined
                            {
                                ocrProvider.SetImage(img); //Recognize
                                string text = ocrProvider.GetUTF8Text().TrimEnd(); //GetText
                                rtbOcrResult.Invoke((MethodInvoker)delegate
                                                   {
                                                       statusLabelOCR.Text = "Analysis completed.";
                                                       rtbOcrResult.AppendText(text);
                                                   });
                                
                            }
                        }
                    });
                    
                }
            }
            /// <summary>
            /// 
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void MainWnd_Load(object sender, EventArgs e)
            {
    
            }
        }
    }
    

      

  • 相关阅读:
    DLL导出类避免地狱问题的完美解决方案
    WorldWind源码剖析系列:影像图层类ImageLayer
    WorldWind源码剖析系列:插件类Plugin、插件信息类PluginInfo和插件编译器类PluginCompiler
    多线程中的锁系统(一)-基础用法
    [转]分布式计算框架综述
    C#自定义控件开发
    GDI+编程小结
    C#自定义控件
    WorldWind源码剖析系列:窗口定制控件类WorldWindow
    WorldWind源码剖析系列:四叉树瓦片集合类QuadTileSet
  • 原文地址:https://www.cnblogs.com/geovindu/p/13255964.html
Copyright © 2011-2022 走看看