Tesseract OCR 不会忽略黑名单字符
Posted
技术标签:
【中文标题】Tesseract OCR 不会忽略黑名单字符【英文标题】:blacklist characters are not ignored by Tesseract OCR 【发布时间】:2013-02-18 10:05:09 【问题描述】:我正在使用 Tessearct OCR 来识别图像的字符。但我希望 OCR 使用
忽略数字字符_tesseract->SetVariable("tessedit_char_blacklist", "0123456789");
通过这种方式,OCR 无法识别数字字符,但它提供了一些我不想要的其他字符来代替它们。
例如:有一张图片的文本为 USD 12 ,当我在该图片上应用 OCR 时,它会为我提供 USD fl
正如我们在上面看到的那样,OCR 将 12 转换为我不想要的 fl 。我希望 OCR 忽略 12。
有什么方法可以得到 USD 而不是 USD fl
的结果为此提供任何解决方案。任何帮助都将不胜感激。
【问题讨论】:
您可以简单地使用正则表达式从输出文本中删除数字字符吗? 我想改进结果。你有什么想法可以让我改进结果吗? 你好 @nguyenq 我想讨论一些与 tesseract sdk 相关的事情,你可以加入 chat.***.com/rooms/info/25582/… 通过将数字列入黑名单,Tesseract 被指示用其他可能不正确的字母替换它们——这使得删除真正的数字变得困难。所以不要将数字列入黑名单,让 Tesseract 检测到它们,然后用正则表达式从输出文本中删除它们。识别准确率仍然很大程度上取决于输入图像的质量,因此请尽可能对其进行预处理。 【参考方案1】:方法SetVariable()
见此评论:
// For most variables, it is wise to set them before calling Init.
我和你有同样的问题,在 Init
修复它之前移动代码:
tess = new TessBaseAPI();
tess->SetVariable("tessedit_char_whitelist",
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
tess->SimpleInit([dataPath cStringUsingEncoding:NSUTF8StringEncoding],
"eng", false);
【讨论】:
【参考方案2】:这不是tessedit_char_blacklist
的用途。 tessedit_char_blacklist
保证数字不会出现在图像中。如果你告诉 Tesseract 不正确的信息,你会得到不好的结果。
您想要的是对 Tesseract 的输出进行后处理。让它输出正确的OCR,然后去掉数字字符。
【讨论】:
以上是关于Tesseract OCR 不会忽略黑名单字符的主要内容,如果未能解决你的问题,请参考以下文章