OCR识别验证码的流程:
相关的一些链接为:
http://blog.csdn.net/why200981317/article/details/48265621
http://blog.csdn.net/yasi_xi/article/details/8763385
http://blog.csdn.net/arnery/article/details/17447635
简书的比较的好,重点参考:http://www.jianshu.com/p/5c8c6b170f6f
1、 首先是需要安装Tesseract-OCR3(现在比较流行这个版本的东西),好像是可以识别中文的了。
2、 因为如果不是简单的一些数字,一般是没有那么容易进行识别出来的,可以说大部分都识别不出来的,所以我们需要进行语料库的训练,才可以更加大可能的去识别验证码之类的图片出来。
3、 然后就把下载的所有的图片使用cadsee工具进行对图片组织格式的转换出来为tif格式。
4、 使用VietOCR.NET软件进行把在点击菜单栏中Tools--->Merge TIFF。在弹出的对话框中选择样本图像(按Shift选择多张),合并成num.font.exp0.tif文件。(合并成一张图片)。
5、 我生成一个名为 why4.tif 的图片集, 进入 cd进入 why4.tif 所在的目录,生成对应的 .box 文件
执行命令:tesseract why.tif why4 batch.nochop makebox
生成的效果为:
6、调整,因为 tesseract 识别的不准确,所以我们用 jTessBoxEditor来调整识别文字的位置、结果。
用 jTessBoxEditor打开生成的图片集why4.tif ,注意 why4.tif 对应的box文件一定要和他处于同一个文件夹下(请保持文件名),否则,用jTessBoxEditor打开没有 位置、识别结果等信息,然后就可以调整了,调整完之后保存。
主要是进行调整左右上下位置,尽可能让字符在框内。
1、 生成.tr文件
tesseract why4.tif why4 nobatch box.train (一样实在why.tif的根目录下进行一个生成)
效果图为:
1、 计算字符集,从生成的 box文件中提取
unicharset_extractor why4.box (所有的命令行都是在同个文件夹下面进行的)
2、 生成字体特征文件,现在文件夹下新建任意文件名的 特征文件,里面的内容格式为:
<fontname> <italic> <bold> <fixed> <serif> <fraktur>
fontname为字体名称,保持和 图片集文件 .tif 和.box文件的前缀名一致 ,italic> 、<bold> 、<fixed> 、<serif>、 <fraktur>的取值为1或0,表示字体是否具有这些属性
例如我新建了一个 名为 font,内容 为
- why4 0 0 0 0 0
-
的文件
输入命令
mftraining -F font -U unicharset why4.tr
发现如果是这样子的话,是会报错的,错误提示为:
Mtrainning停止工作。Windows联机工作(这是一个对话框弹出来的)。
注意:需要在font后面加上txt才可以的。
如图所示:
最后效果图为:
9、、聚集tesseract 识别的训练文件
cntraining why4.tr
执行完这一步之后发现文件夹下生产了许多文件,把unicharset, inttemp, normproto, pfftable这几个文件加上前缀 why4.
1、最后一步,合并相关文件,生成字典文件
2、 combine_tessdata why4.
1. 下载MS2003(http://soft.hao123.com/soft/appid/21282.html),安装MS Office Document Imaging, 使用该软件打开TIF图片集合,然后参照JTessBoxEditor删除指定的图片。
2. 删除图片之后,因为box文件中的数据最后一列代表图片的序号,所以需要在Excel中进行重新排序。
-- 2.1 box文件,先在ecxel中利用空格进行分列;
-- 2.2 在辅助列中利用公式 =INT((ROW()-1)/4) 生成每四列一个自然增长序号;
-- 2.3 公式 =A1&" "&B1&" "&C1&" "&D1&" "&E1&" "&F1 合并分列。
3. 把excel中生成的新的box文件内容复制粘贴到box文件中,替换之前的内容。