我正在编写一个应用程序来扫描图像中的数字。
这些数字使用 OCR-B 字体,也可能包含+
和>
字符。
这是我的源图像:
即使将字符集限制为提到的字符,使用 Tesseract 的扫描也不是很好。由于我没有找到 Tesseract 的任何 OCRB 训练文件,我决定自己训练它。
我创建了这个训练图像并从中制作了一个盒子文件。盒子文件是正确的,所有的字母都匹配正确。
然后我做了这里描述的所有步骤来创建其他必要的文件。
使用这个新训练的 OCR-B tessdata-set,我在源图像上得到了很好的结果,但有一个小错误:所有1
s 都被误认为8
s,反之亦然。用于处理图像的命令是
$ tesseract esr2c.tif ocrb-esr2c -l ocrb
源图像的输出是
0800000001456>8 00000195731208 8 01050008 023+ 08 0301226>20
如果您交换所有1
s 和8
s 并将其与源图像进行比较,则输出将是正确的(除了我可以忽略的最后两个字母)。
这怎么可能发生?我在训练过程中是否犯了一些错误?我该如何解决?