Tesseract 无法读取这个极其简单的数字字符串
Posted
技术标签:
【中文标题】Tesseract 无法读取这个极其简单的数字字符串【英文标题】:Tesseract has trouble reading this extremely simple string of numbers 【发布时间】:2013-11-25 22:12:38 【问题描述】:我目前正在用 python 编写一个脚本,它需要使用 tesseract 来读取这样的数字:
仅使用数字和 -psm 6(或 7)输出 5.551
我在其他数字上取得了一些成功(5.700 作品),但这个特定的数字给我带来了很多问题。不幸的是,我的程序需要高度的准确性,但我认为 tesseract 能够破译这样一个简单的字符串。
我也尝试使用 GOCR,它正确读取 6.881(耶!),但输出 5._00 为 5.700(嘘!)
知道为什么会这样做吗?
或者更重要的是,我可以做任何事情来解决这个问题(最好不用训练 tesseract)。
【问题讨论】:
【参考方案1】:我使用 Imagemagick 将其大小加倍并删除了透明度(将其替换为白色)(如果需要,您可以使用其他东西),并且 Tesseract OCR 正确地对增强后的图像进行了处理:
$ convert I1Zau.png -background white -flatten -resize 200% I1Zau_2.png
$ tesseract I1Zau_2.png o.txt
$ cat o.txt.txt
6.881
【讨论】:
太棒了,我会用更多的数字来测试它,看看会发生什么。 @Loocid:我想补充一点,我最近也在使用 Tesseract,我今天发现使用 Imagemagick 预处理文件(去除压缩伪影并将大小翻倍)大大增加了准确性。【参考方案2】:欢迎来到 OCR 的世界!不幸的是,即使是那些简单的情况,对于基本的 OCR 应用程序也可能存在问题。我已经成功使用的一种解决方法是实际上使您的图像更大(使用 imagemagick),然后输入 Tesseract。这只能在一定程度上起作用。您还可以尝试对图像进行形态学操作的标准策略。
根据您的总体要求(数字是否始终采用此字体/大小,背景是否嘈杂等...)您可能需要手动将每个数字设为单独的图像,以确保 Tesseract 可以处理字体类型您正在使用。如果它不能在个位数上工作,那么它不太可能在你通过它的其他任何东西上工作。
【讨论】:
反过来对我有用:我需要顶部使图像更小。 数字将始终采用与上述相同的格式,只是位数有所不同(最多 5 位)。我会玩一下 imagemagick,看看能不能找到 Tesseract 喜欢的设置。【参考方案3】:图像分辨率太低。简单地重新缩放到 300 DPI 对我来说已经产生了正确的结果。
【讨论】:
以上是关于Tesseract 无法读取这个极其简单的数字字符串的主要内容,如果未能解决你的问题,请参考以下文章
Pytesseract (Tesseract OCR) 没有收到一些数字
仅在我的 iOS 应用程序中将 tesseract 字符限制为 a-z 和数字