.NET 2.0 OCR文字识别技术(Tesseract 引擎)
前端时间在写一个小软件,作用是通过程序往指定站点提交数据,获取数据。主要作用还是来代替手工操作的麻烦。
实现无非是:
1.通过http 抓包工具抓取正常请求所(GET,POST)的数据
2.利用 .net 类库 httprequest 或 httpclient 做模拟提交操作。
注:一些 qq信息查看器,手机充值模拟提交软件,投票程序等,原理差不多。
具体实现不是本文重点要介绍的,下一次再写关于这个方面的吧。我们接下来还是主要来看OCR 。
一.OCR简介 参见http://baike.baidu.com/view/17761.htm?fr=ala0_1 大家参照,我第一次也是这么了解的,呵呵。高手见笑
现在市面上好多OCR 引擎,不过大多是收费的,价格不菲呀。。不适合我们学习研究。
而今天我们谈到的Tesseract 是开源的产品,比较适合大家的口味吧。并且Tesseract 也是目前识别率较高的OCR,并不比其他引擎
差劲。网上介绍Tessnet2也是当时时间排名第三的识别引擎,只是后来慢慢不维护了,目前是Google在维护,大家都知道Google
在搞电子图书馆,每天都有不同类目的书被扫描成电子版,而下一步工作是什么。。。大家可以联想。
Tessnet2 是用vc ++ 开发的,最中是生成Tessnet2.dll ,我们可以通过.net 来调用内部具体类库实现识别。
Tessnet2的使用:
1.将Tessnet2.dll 添加到vs bin目录,和添加.net程序集一样。https://files.cnblogs.com/zhuxiangyu/tessnet2_32.rar 点击链接下载Tessnet2.dll
2.用Tessnet2进行识别
Bitmap image = new Bitmap("eurotext.tif");//识别图像
tessnet2.Tesseract ocr = new tessnet2.Tesseract();//声明一个OCR类
ocr.SetVariable("tessedit_char_whitelist", "0123456789"); //设置识别变量,当前只能识别数字。
ocr.Init(@"c:\temp", "fra", false); //应用当前语言包。注,Tessnet2是支持多国语的。语言包下载链接:http://code.google.com/p/tesseract-ocr/downloads/list
List<tessnet2.Word> result = ocr.DoOCR(image, Rectangle.Empty);//执行识别操作
foreach (tessnet2.Word word in result) //遍历识别结果。
Console.WriteLine("{0} : {1}", word.Confidence, word.Text);
看看 使用很简单吧。给大家个实例https://files.cnblogs.com/zhuxiangyu/Tessnet2example.rar用来测试。
我的使用总结:
我前一阵没事在搞验证码识别,对于普通的网站验证码识别基本识别率能达到100%,但对于比较正规的网站例如 通讯,itput等等网站 识别率极低。
大概也是我研究不够深入吧,呵呵。
大家互相探讨学习,此文只是给大家一个参考。
谢谢各位支持。