训练Tesseract 3以获取字母表格。

4

我一直在尝试使用不同的选项来使用纯tesseract 3 OCR从字母表格中获取数据,其中我的学生将一个作为多项选择题答案标记,如下所示:

image with the table of letters used in tesseract

最好的输出之一是:

EEEEEEEEEEEEEEEEEEEEEEEEE
DDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCCCC
BBBBBBBEBBBBBBBBBBBBBBBBB
AAAAAAAAAAAAAAAAAAAAAAAAA
6789012345678901234567890
2222333333333344444444445
EEEEE EEEE EE EEE EEEEEEE
DDDDDD DDD DDDDDDDDDDDD
CCCCCCCCCCCCCCCCCC CCCCC
B BEBE BB BBBBBBBBBBBBBBB
AA AAA AAAAA AAAAAAAA
1234567890123455789012345
OOOOOOOOO1111111111222222

我知道我可以解析那个 .txt 文件并获得更好的结果,但是它丢失了很多信息并从一些绘制块中获取了字母。
我想知道在这种情况下我能做什么来获得更好的结果。
我还想要一个表格,将绘制的块显示为不同的字符,例如,对于图像的第一行和第二行:
01 A B C - E   26 A B C D E
02 A - C D E   27 A B C D E

如果你们有类似的经验,任何信息都会受到赞赏!提前致谢!

1
看起来Tesseract将绘制的字符输出为空格,对吧?你现在唯一的问题是连续的绘制块只有一个空格。它还把6误认为是5,但这很容易解决,除此之外似乎工作得很好。你试过训练它将绘制块解释为“-”吗?或许可以试试。 - anana
就像我说的,我只尝试过普通的Tesseract。它对矩阵进行的转置让我有点害怕,哈哈!但是你认为适当的训练会奏效吗?(我仍然不知道如何训练Tesseract)有什么地方可以开始吗?类似的例子?谢谢! - Mauricio Moraes
1
训练 Tesseract 的说明可以在这里找到:https://code.google.com/p/tesseract-ocr/wiki/TrainingTesseract3,但我不确定从您的图像训练有多容易,我看到它与 .tiff 文件一起使用。 - anana
https://softwarerecs.stackexchange.com/questions/34358/program-to-generate-a-csv-file-from-an-image-containing-a-table - Nicolas Raoul
1个回答

6
首先,我建议您对图像进行预处理,例如加深暗部,稍微模糊一下。随意尝试直到 Tesseract 停止在填充的方框中看到字母。
其次,您有两个选择:
1. 您可以启用 hOCR 输出并尝试自己解析扫描字母的布局。hOCR 是 HTML 的子集,它包含所有识别单词的坐标。尝试找出行和列的位置。 2. 或者,尝试让 Tesseract 正确识别布局,而不是旋转 90°。
无论如何,这是我所做的:
1. 我通过 ImageMagick 运行图像: $ convert CDZjN.png -deskew 40% -contrast-stretch 7%x10% -filter lanczos -resize 250% ooo.png
2. 我为 Tesseract 创建了一个名为 t.conf 的配置文件,禁用垂直文本检测和英语词典:
textord_tabfind_vertical_text 0 load_system_dawg 0 load_freq_dawg 0 load_punc_dawg 0 load_number_dawg 0 load_unambig_dawg 0 load_bigram_dawg 0 load_fixed_length_dawgs 0
3. 我只需运行它: $ tesseract ooo.png ooo t.conf ; cat ooo.txt Tesseract Open Source OCR Engine v3.02 with Leptonica 01ABC-E 26ABCDE 02A CDE 27ABCDE o3 BCDE 28ABCDE o4 BCDE 29ABCDE o5 BCDE 30ABCDE 06ABCD. 31ABCDE 07A-CDE 32ABCDE 08ABC.E 33ABCDE o9 BCDE 34ABCDE 10A CDE 35ABCDE 11ABCD 36ABCDE 12ABC E 37ABCDE 13ABC E 38ABCDE 14ABCD 39ABCDE 15 BCDE 40ABCDE 1s BCDE 41ABCDE 17 BCDE 42ABCDE 18ABCD_ 43ABCDE 19AB DE 44ABCDE 20AB DE 45ABCDE 21ABCDE 46ABCDE 22ABCDE 47ABCDE 23ABCDE 48ABCDE 24ABCDE 49ABCDE 25ABCDE 50ABCDE
不是完美的,但可以接受。

2
太好了!您可以详细说明一下哪个设定可以禁用使用英文字母吗? - anana
2
我不是禁用字母表,而是禁用字典。所有的“________dawg”设置都是必需的。 - Karol S
@KarolS,我知道你回答这个问题已经有一段时间了,但是那仍然对我很有帮助。谢谢! - Mauricio Moraes
@KarolS:有没有一种方法可以逐个框进行操作?就像为每个框创建CSV类型的输出一样。 - Girish Nair

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