19

我正在编写一个应用程序来扫描图像中的数字。

这些数字使用 OCR-B 字体,也可能包含+>字符。

这是我的源图像:

源图像

即使将字符集限制为提到的字符,使用 Tesseract 的扫描也不是很好。由于我没有找到 Tesseract 的任何 OCRB 训练文件,我决定自己训练它。

我创建了这个训练图像并从中制作了一个盒子文件。盒子文件是正确的,所有的字母都匹配正确。

然后我做了这里描述的所有步骤来创建其他必要的文件。

使用这个新训练的 OCR-B tessdata-set,我在源图像上得到了很好的结果,但有一个小错误:所有1s 都被误认为8s,反之亦然。用于处理图像的命令是

$ tesseract esr2c.tif ocrb-esr2c -l ocrb

源图像的输出是

0800000001456>8 00000195731208 8 01050008 023+ 08 0301226>20

如果您交换所有1s 和8s 并将其与源图像进行比较,则输出将是正确的(除了我可以忽略的最后两个字母)。

这怎么可能发生?我在训练过程中是否犯了一些错误?我该如何解决?

4

2 回答 2

6

您的 box 文件中的某处可能存在 1 和 8 的错误值(字符)。您可以使用jTessBoxEditor程序进行验证。如果是,请更正,重新生成语言数据文件,然后重试。

于 2011-09-03T16:53:25.437 回答
2

经过 1 个月的 OCR A 扩展字体努力,我已经训练了 tesseract 2.04。它工作得很好,字体大小为 14 时显示精度高于 90。

训练图像应该是高对比度的图像。使用“GIMP”图像编辑器并执行以下菜单颜色->信息->直方图-读取标准偏差值颜色->阈值->将“标准偏差值”写入阈值保存图像用于训练。

使用“qt-box-editor-1.06.exe”检查和编辑您的盒子文件。它非常易于使用。选中其中的所有框和字符。这是非常重要的。您的 box 文件中某处的 1 和 8 字符不正确。

运行其他 cmd。

于 2011-12-20T13:47:40.843 回答