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 甚至无法识别二进制黑白单字符图像

Tesseract 错误空间识别

有用过tesseract OCR字符识别的吗?怎么识别率那么低

Tesseract OCR 无法识别除法符号“÷”

js无法识别的字符都有哪些