Tesseract用户模式匹配

18
任何人知道如何在Tesseract中使用用户模式(user_patterns_suffix)吗? 您能告诉我如何处理它以及如何测试它是否有效吗?我尝试按照Tesseract指南的操作(Tesseract用户模式),但我没有看到它对结果产生任何影响。 谢谢。

你尝试过追加“bazaar”配置文件吗?请参阅tesseract(1) - pvorb
1个回答

27
Tesseract使用一种模式来进行"正则表达式"的排序。如果您正在扫描的书籍数据都是相同格式的,那么可以使用该模式。该模式可用于告诉Tesseract应该期望什么格式,例如它期望用户词汇中的单词格式。以下是Tesseract描述如何使用模式的方法:
每个模式可以包含任何非空白字符,但只有包含相应语言的unicharset中的字符的模式才有用。唯一的元字符是\。要将其作为普通字符串在模式中使用,应该用\进行转义(例如,字符串C:\Documents应该在模式文件中写成C:\\Documents)。
此函数支持非常有限的正则表达式语法。可以表示一个字符、某个字符类和实体在模式中应重复的次数。
要表示字符类,请使用以下之一:
- \c - 使UNICHARSET::get_isalpha()为true的unichar(字符) - \d - 使UNICHARSET::get_isdigit()为true的unichar - \n - 使UNICHARSET::get_isdigit()和UNICHARSET::isalpha()都为true的unichar - \p - 使UNICHARSET::get_ispunct()为true的unichar - \a - 使UNICHARSET::get_islower()为true的unichar - \A - 使UNICHARSET::get_isupper()为true的unichar 可以在每个字符或模式后面指定\*,以指示可以在下一个字符/模式出现之前重复任意次数的字符/模式。
例如: - 1-8\d\d-GOOG-411将扩展为字符串:1-800-GOOG-411、1-801-GOOG-411、... 1-899-GOOG-411。 - "ww.\n\*.com"将扩展为字符串,例如:"ww.a.com"、"ww.a123.com"、... "ww.ABCDefgHIJKLMNop.com"
注意:在选择要包含的模式时,请注意提供非常通用的模式会使tesseract运行更慢。例如,在模式的开头使用\n\*将使Tesseract考虑每个分割的建议字符选择的所有组合,这将是无法接受的缓慢。由于可能存在难以识别的速度问题,因此每个用户模式必须从unicharset的开头具有至少kSaneNumConcreteChars个具体字符。

@Federinik 非常感谢!花了很多时间寻找这个,终于找到了! - Shivam Gaur
我正在尝试使用Tesseract从驾照上读取姓名、地址和出生日期。仅对图像运行它无法给我良好的结果,因为文本全部粘在一起,甚至没有换行来分隔各项信息。似乎模式可以帮助我,因为它可以每次在相同的位置查找出生日期或姓名。有人能帮我应用它吗? - Tanoshimi
看起来Tesseract 4.0 alpha (LSTM)中这个功能目前存在问题(char-whitelist似乎也有问题)。 https://github.com/tesseract-ocr/tesseract/issues/960 - NightFury13
12
这并没有明确解释如何使用模式。 - Michael P. Bazos
谢谢您从文档中复制粘贴,但它并没有解释如何使用它。它只是一个定义。 - Muhammad Uzair

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