训练tesseract 3得到信件表

时间:2014-03-25 21:16:18

标签: image-processing ocr tesseract image-recognition pattern-recognition

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

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 个答案:

答案 0 :(得分:6)

首先,我建议你对图像进行预处理,例如使暗部变暗,稍微模糊一点。随意进行实验,直到Tesseract停止在填充的方块中看到字母。

其次,您有两种选择:

  • 一,您可以启用hOCR输出并尝试自己解析扫描字母的布局。 hOCR是HTML的一个子集,它包含所有已识别单词的坐标。尝试确定行和列的位置。

  • 或者,尝试使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

不完美,但可以接受。