OCR引擎
OCR(Optical Character Recognition)是指使用扫描仪或数码相机对文本资料进行扫描成图像文件,然后对图像文件进行分析处理,自动识别获取文字信息及版面信息的软件。
OCR引擎核心技术模块主要是由下面几个部分组成:
图像输入:读取不同图像格式文件的算法。
图像预处理:主要包括图像二进制化,噪声去除,倾斜较正等算法
版面分析:将文档图片分段落,分行的算法就叫版面分析算法
字符切割:字符切割算法主要处理因字符粘连、断笔造成字符难以简单切割的问题。
字符特征提取:对字符图像提取多维的特征用于后面的特征匹配模式识别算法。
字符识别:将当前字符提取的特征向量与特征模板库进行模板粗分类和模板细匹配,识别出字符的算法。
版面恢复:识别原文档的排版,按原排版格式将识别结果输出到word或pdf等格式文档,叫做版面恢复算法。
后处理校正: 根据特定的语言上下文的关系,对识别结果进行较正的算法。
其中,对于.Net来说三种比较主流和成熟的识别方式:
方式一、Asprise OCR实现。其中需要使用的3个dll是AspriseOCR.dll、DevIL.dll、ILU.dll。其数字识别率比较高,
示例代码:
[DllImport("AspriseOCR.dll")] static extern string craboOCR(string file, int type); private void GetVeryfyCode() { if(File.Exists(_imgPath))//ok { try { this.picbVeryfyCode.Image=System.Drawing.Bitmap.FromFile(_imgPath); _veryfyCode=craboOCR(_imgPath,-1); //将返回string,并以"\r\n"结尾!! _veryfyCode=_veryfyCode.Substring(0,4); this.txtVeryfyCode.Text=_veryfyCode; } catch(Exception e) { this.lblResult.Text+=e.Message; } } }
方式二、Microsoft Office Document Imaging(Office 2007) 组件实现。
方式三、Tesseract引擎,其.NET版本地址为:http://www.pixel-technology.com/freeware/tessnet2/。其中在使用前要对该引擎进行安装,安装成功后可以对其Dos命令行进行封装,
调用命令形式如下:
private void UseOCR(string v_strTesseractPath, string v_strSourceImgPath, string v_strOutputPath, string v_strLangPath) { using (Process process = new System.Diagnostics.Process()) { process.StartInfo.FileName = v_strTesseractPath; process.StartInfo.Arguments = v_strSourceImgPath + " " + v_strOutputPath + " -l " + v_strLangPath; process.StartInfo.UseShellExecute = false; process.StartInfo.CreateNoWindow = true; process.StartInfo.RedirectStandardOutput = true; process.Start(); process.WaitForExit(); } }