我正在编写一个应用程序来扫描图像中的数字。
这些数字使用的是OCR-B字体,也可能包含+
和>
个字符。
这是我的源图片:
即使将字符集限制为上述字符,使用Tesseract的扫描也不是很好。由于我没有找到任何针对Tesseract的OCRB培训文件,我决定自己进行培训。
我创建了this training image并从中制作了一个盒子文件。盒子文件正确,所有字母都正确匹配。
然后我完成了所有步骤described here以创建其他必要文件。
使用这个新训练的OCR-B tessdata-set,我在源图像上得到了相当不错的结果,有一个小错误:所有1
被误认为8
s,反之亦然。用于处理图像的命令是
$ tesseract esr2c.tif ocrb-esr2c -l ocrb
,源图像的输出为
0800000001456> 8 00000195731208 8 01050008 023+ 08 0301226> 20
如果您交换所有1
和8
并将其与源图像进行比较,则输出将是正确的(除了我可以忽略的最后两个字母)。
怎么会发生这种情况?我在培训过程中是否犯了一些错误?我该如何解决?
答案 0 :(得分:6)
您的Box文件中的某个位置可能包含1和8的错误值(字符)。您可以使用jTessBoxEditor程序进行验证。如果是,请更正,重新生成语言数据文件,然后重试。
答案 1 :(得分:2)
我在为OCR A扩展字体工作1个月后训练了tesseract 2.04。它的工作非常好,并且显示高于90的精度,字体大小为14。
训练图像应该是高对比度图像。 使用“GIMP”图像编辑器并执行以下操作 菜单颜色 - >信息 - > Histgram-读取标准偏差值 颜色 - >阈值 - >将“Std Deviation value”写为Threshould值 保存图片 用它来训练。
使用“qt-box-editor-1.06.exe”检查并编辑您的盒子文件。它非常易于使用。 选中其中的所有框和字符。 这是非常重要的。你的盒子文件中的某个地方有1和8的错误字符。
运行其他cmds。