学习图像处理知识---Emgu3.4 OCR类库学习--Tesseract 类

Emgu.CV.OCR Namespace中。

光学字符识别。包装tesseract-ocr引擎。

Tesseract 类。

构造函数:

public Tesseract() //创建一个默认的tesseract引擎。需要调用Init函数来在以后的阶段加载语言文件。
public Tesseract(
	string dataPath, //datapath必须是tessdata主目录的名称,必须以/。结束。最后一个/将被剥离。
	string language,//语言是(通常)一个ISO 639-3字符串或NULL将默认为eng。它是完全安全的(并且最终也会是有效的)在同一个实例上调用Init多次来改变语言,或者只是重新设置分类器。该语言可能是一串形式的%lt;lang+lang,表示将加载多种语言。他将加载印地语和英语。语言可以在内部指定他们想要加载一个或多个其他语言,所以这个符号可以覆盖它。如果hin在默认情况下被设置为加载,那么hin+eng只会强制加载hin。加载的语言的数量只受内存的限制,需要注意的是,加载额外的语言将会影响速度和准确性,因为有更多的工作要做决定使用的语言,并且有更多的机会产生不正确的单词。
	OcrEngineMode mode//OCR引擎模式
)
public Tesseract(	string dataPath,
	string language,
	OcrEngineMode mode,
	string whiteList
)

基本属性:

  public OcrEngineMode Oem { get; }获得OCR引擎模式,只读模式,由构造函数生成对象时指定或由Initialize函数指定。
public PageSegMode PageSegMode { get; set; }页面分割模式,可以设定。
public IntPtr Ptr { get; }//只读模式,指针。
public static Version Version { get; }//获得OCR引擎的版本
public static string VersionString { get; }//获得OCR引擎的版本,string。

在应用之前先了解Tesseract.Character[]  这代表了一个由OCR引擎检测到的字符的结构体

3个变量

public float Cost识别所消耗的精力,越低越简单,识别率高,相当检测时间和难度。

public Rectangle Region 文字检测的区域。

public string Text 识别出来的文字。

要实现OCR功能必须有一个库---学习data来确认,可以在网上下载得到,安装完成后把testdata文件夹拷到自己的开发的目录下。


下面演示下实际应用测试。

            string path = Application.StartupPath + "\\tessdata";  //下载识别文件夹
            string language = "eng";//识别语言
            Tesseract ocr = new Tesseract(path, language,Emgu.CV.OCR.OcrEngineMode.Default);//生成OCR对象。
            Emgu.CV.Image<Gray, byte> GAY1 = new Image<Gray, byte>((Bitmap)pictureBox3.Image);//原图一定为灰阶图片
            ocr.SetImage(GAY1);//放进图像到OCR对象中
            int A_LENG = 2;
            A_LENG= ocr.Recognize();//进行识别图像
            if(A_LENG==0)  //
判断是否成功,应为返回为0时才是成功,因此开始定义初始化为其他值(非零)。
            {
                MessageBox.Show("ok");
                Tesseract.Character[] tet = ocr.GetCharacters();//得到
                string tex1 = ocr.GetUTF8Text();//得到文字

                textBox1.Text = tex1;//显示文字

                foreach (var a4 in tet)
                {
                    GAY1.Draw(a4.Region, new Gray(180), 2);
                    pictureBox5.Image = GAY1.ToBitmap();
                }

            }
            else
            {
                MessageBox.Show("NG");
            }




 
 



猜你喜欢

转载自blog.csdn.net/tuto7534/article/details/80152080