之前做数字自动识别的时候用了一下Tesseract OCR, 对于手写的数字,自己当时测试了一下,调试后准确率还是蛮高的,然而,对于八段管,经过训练后也只有83%,本文主要是对调试结果分析,以及调试过程中的一些问题进行总结。
首先插入参考文章,作者朝花夕拾的利用jTessBoxEditor工具进行Tesseract3.02.02样本训练,提高验证码识别率,文章很详细,对过程阐述的很明白,还有github上关于Tesseract的讲解;
1. JRE安装jTessBoxEditor需要在JAVA 环境下运行,这是只需安装JRE即可,下载正确的版本,我的是64位,配置环境变量,Path:\bin; classpath :\lib; JavaHome:\Java;
cmd运行: java -version看安装是否成功;
2. 下载jTessBoxEditor,下载好压缩包后解压,在cmd命令中输入java可以看到文件的执行格式,进入jTessBoxEditor的目录下,运行java -jar jTessBoxEditor.jar ,打开文件。
3. shapeclustering 有未经处理的win32问题,联机解决;
Error:Assert failed: in file..\..\classify\training sampleset.cpp, line622
出现这个问题的原因主要是自己刚一开始的时候名字没有起对,对tif文件刚开始起名为num.tif,后来看到博主的名字要求后又半路改名,其实这个时候已经晚了,很多需要的文件已经生成,最好的办法是从一开始按照要求给tif文件起名字,如果已经出现问题,就把之前生成的文件全部删除,重新来一遍就好。
4. 在用boxeditor进行tif文件merge的时候,经常会出现如下错误:
Merge TIFF: 0070 and 0084 can not be merged.
主要原因是图片的格式问题,因为要处理大量图片,就用了网上说的那种批量修改后缀的方法,即新建.bat文件,但是运行.bat只是改变了后缀,在boxeditor里并没有认为其为.tif文件,所以,还是用画图一个个另存为比较靠谱。
琐碎的问题弄完后就是训练和识别,输入图像最好是二值化后的,噪音较少,如下图:
还有就是最好是联通的,这是八段管识别最大的问题,可以用闭运算尽量消除空隙:
这张图片就无法被tesseract识别,有时则会错误识别,将0识别成L和7,但是在将其连通后,却可以正确识别,具体分析大家可以参考我做的ppt文件;