Tesseract 无法识别随机英文字符序列
Posted
技术标签:
【中文标题】Tesseract 无法识别随机英文字符序列【英文标题】:Tesseract fails to recognize a sequence of random English characters 【发布时间】:2019-12-04 06:59:17 【问题描述】:我正在寻找一些帮助来配置 Tesseract 以识别以下图像(称为 token.png)中的字符:
使用默认设置运行 Tesseract
tesseract token.png output
结果
lidad3dbecsc2dedeeaedsd72bbest4 bsddo60cdetsdic?
在wiki page 建议禁用字典
如果您的大部分文本不是字典单词,禁用 Tesseract 使用的字典应该会提高识别率。可以通过将配置变量 load_system_dawg 和 load_freq_dawg 都设置为 false 来禁用它们。
但是,这无济于事。比如构造文本文件config
为
load_system_dawg F
load_freq_dawg F
然后运行
tesseract token.png output config
不会提高识别率。
任何人都可以就如何解决这个问题提出建议吗?
下面的屏幕截图显示了我在 Windows 10 上的命令提示符
评论 1
如果上面显示的图像 token.png 被裁剪以连续构建字符串,那么很明显,Tesseract 在识别字符时应用了一些额外的逻辑。如下图所示。
看起来问题是在将字母添加到带有数字的字符串时开始的,例如174
被正确识别,但 174a
被识别为 1ida
如果 Tesseract 应用额外的逻辑,如字典查找,如何关闭此功能?
【问题讨论】:
在同一个 wiki 上还有其他如何提高质量的建议。你试过了吗? 是的,但除了缩放、移除 alpha 通道和转换为白色背景上的黑色文本之外,并没有太大的改进。我在问题中添加了一条评论,说明 Tessearct 在识别过程中应用了一些额外的逻辑。 Tesseract 有很多配置选项,例如识别单个字符 --psm 10 需要设置。我正在努力寻找一种设置来识别随机的数字和字母序列。 好吧,在这篇文章中没有代码图像,没有输出错误图像,并且在介绍中提供了一个最小的可重现示例。终端的屏幕截图显示了使用的 Teseract 版本,以及一些库信息。该表是在 Inkspae 中构建的结果摘要,来自引言中提供的最小可重现示例的多次运行。我认为我非常严格地遵循准则! 【参考方案1】:调整图像大小,使字母高 30 px,将 dpi 设置为 300,模糊图像,二值化:
然后:
tesseract KYCvf_.png - --psm 8 --oem 1
174ad3d62c3c29e9eeae03d72h6e5f47h94d060cde 78d 107
【讨论】:
这看起来是一个很大的改进,但我无法重现。你用的是什么版本的 Tesseract? tesseract 4.1 或者用最好的traindata试试master以上是关于Tesseract 无法识别随机英文字符序列的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Tesseract OCR 库(iOS)根本无法识别文本?
带有 Tesseract OCR 的 EmguCV 甚至无法识别二进制黑白单字符图像