训练tesseract 3得到信件表

Mau*_*aes 4 ocr tesseract pattern-recognition image-processing image-recognition

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

图像与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
Run Code Online (Sandbox Code Playgroud)

我知道我可以解析.txt并获得更好的结果,但它错过了很多信息并得到了一些彩绘块的字母.

我想知道如何才能在这种情况下获得更好的结果.

我还希望有一个表格,其中绘制的块显示为不同的字符,例如,对于图像的第一行和第二行:

01 A B C - E   26 A B C D E
02 A - C D E   27 A B C D E
Run Code Online (Sandbox Code Playgroud)

如果你们有类似的经历,任何信息将不胜感激!提前致谢!

Kar*_*l S 6

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

其次,您有两种选择:

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

  • 或者,尝试使Tesseract正确识别布局,而不是旋转90°.

无论如何,这就是我做的:

我通过ImageMagick运行图像:

$ convert CDZjN.png -deskew 40% -contrast-stretch 7%x10% -filter lanczos -resize 250% ooo.png

2.我t.conf为Tesseract 创建了一个配置文件,禁用了垂直文本检测和英文字典:

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

我只是跑了它:

$ 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认同)
  • 我不是禁用字母表,而是禁用字典.所有`________ dawg`设置都必须这样做. (2认同)