训练 tesseract 3 以获取字母表
Posted
技术标签:
【中文标题】训练 tesseract 3 以获取字母表【英文标题】:Train tesseract 3 to get table of letters 【发布时间】:2014-05-03 23:52:15 【问题描述】:我一直在尝试使用普通的 tesseract 3 OCR,使用不同的选项从字母表中获取数据,我的学生将其中一个字母标记为多项选择题的答案,如下所示:
最好的输出之一是:
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
如果你们有类似的经验,任何信息将不胜感激! 提前致谢!
【问题讨论】:
似乎绘制的字符被tesseract输出为空格,不是吗?您现在唯一的问题是,似乎只有一个空间可容纳任意数量的连续绘制块。它也将 6 误认为 5,但这很容易修复,除此之外它似乎工作得很好。您是否尝试过训练它以将绘制的块解释为“-”?这可能行得通。 正如我所说,我只尝试过普通的tesseract。我对它对矩阵的转座感到有点害怕,哈哈!但你认为适当的训练会奏效吗? (我仍然不知道如何训练 tesseract)有什么地方可以开始吗?类似的例子?谢谢! 训练 Tesseract 的说明可以在这里找到code.google.com/p/tesseract-ocr/wiki/TrainingTesseract3,但我不确定从你的图像训练有多容易,我看到它与 .tiff 文件一起使用。 softwarerecs.stackexchange.com/questions/34358/… 【参考方案1】:首先,我建议您对图像进行预处理,例如使暗部变暗,稍微模糊一下。随意尝试,直到 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
不完美,但还过得去。
【讨论】:
这太棒了!您能否详细说明哪些设置禁用了使用英文字母? 我不是禁用字母表,而是禁用字典。这样做需要所有________dawg
设置。
@KarolS,我知道你回答这个问题已经有一段时间了,但这仍然对我有很大帮助。谢谢!
@KarolS : 有没有一种方法可以逐个盒子地进行?,类似于每个盒子的 csv 类型输出以上是关于训练 tesseract 3 以获取字母表的主要内容,如果未能解决你的问题,请参考以下文章
如何训练 tesseract 只识别 20 到 30 位数字?