Tesseract混淆了两个数字

19
我正在编写一个应用程序,用于从图像中扫描数字。
这些数字使用OCR-B字体,并且可能还包含"+"和">"字符。
这是我的源图像:

source image

使用Tesseract进行扫描时效果不太好,即使将字符集限制为所提到的字符。由于我没有找到适用于Tesseract的OCRB训练文件,因此决定自己进行训练。
我创建了此培训图像并从中制作了框文件。框文件是正确的,所有字母都被正确匹配。
然后我执行了此处描述的所有步骤来创建其他必要的文件。
使用这个新训练的OCR-B tessdata-set,在源图像上得到了相当不错的结果,但有一个小错误:所有的1都被误认为是8,反之亦然。处理该图像的命令如下:
$ tesseract esr2c.tif ocrb-esr2c -l ocrb

对于源图像的输出为:

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

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

为什么会发生这种情况?在训练过程中是否犯了一些错误?我该如何解决?


在这里发布那些数据不会有任何安全隐患吧? - andrew cooke
@andrew 不是很严重。只是一张旧的、无效的账单,参考编号中没有任何个人信息。 - Danilo Bargen
@DaniloBargen:如果可能的话,你能分享OCR-B字体的训练数据吗? - Ravi Gupta
@RaviGupta 我已经没有了,而且结果也不好。 - Danilo Bargen
1
嗨,抱歉修改了这个,跳到五年后再快进一年,那个培训有帮助你得到正确的结果吗?我的意思是,你是否继续使用Tesseract? - Marko
2个回答

6

你的文本文件中可能存在1和8字符的错误值。你可以使用jTessBoxEditor程序进行验证。如果确实存在错误值,那么请修正并重新生成语言数据文件,然后再试一遍。


我无法让jTessBoxEditor正常工作(与imageio库有一些问题),但是我使用OwlBoxer检查了框文件(实际上我使用该工具处理了该文件),并且一切看起来都正确。 - Danilo Bargen
我还使用tesseractTrainer.py再次仔细检查了盒子文件,但仍然没有发现任何错误。 - Danilo Bargen
你能发布一下你的 box 文件链接吗?你正在训练哪个版本的 Tesseract? - nguyenq
我正在使用Tesseract 2.04。这是框文件和相应的图像:http://w00t.ws/boxfile.tar.gz - Danilo Bargen
2
一开始,我就可以通过jTessBoxEditor看到,盒子文件中的前四个字符(行)位置和顺序不正确。请尝试将它们移动到正确的位置和顺序,并继续进行剩余的训练步骤。(抱歉,我还没有设置上传文件的地方。) - nguyenq
1
哇,这样做就行了!我没想到顺序会有任何影响 :) 感谢你的帮助!你可能想在回答中提及解决方案。 - Danilo Bargen

2

我花了一个月的时间训练Tesseract 2.04来识别OCR A扩展字体,现在它的表现非常好,使用14号字体大小时准确率超过90%。

训练图像应该是高对比度的图像。使用"GIMP"图像编辑器并执行以下操作:菜单栏中选择Colors->Info->Histogram-读取标准偏差值,然后Colors->Threshold->将"标准偏差值"写入阈值值,最后保存图像并用于训练。

使用"qt-box-editor-1.06.exe"检查和编辑您的框文件非常容易。务必检查其中所有的框和字符,这非常重要。您的框文件中某些地方可能会出现错误的1和8字符。

运行其他命令。


我已经解决了这个问题(请参见其他答案的评论)。在jTessBoxEditor中,盒子的顺序是错误的。无论如何,谢谢。 - Danilo Bargen
我训练了用于OCR-B的Tesseract 3.02。它在相同的训练集上返回了大约100%的准确度。但是,当我使用真实生活中的图片进行检查时,它的准确率几乎为零。你们有没有解决这个问题? - Masri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接