Pytesseract 不适用于低分辨率图像

Posted

技术标签:

【中文标题】Pytesseract 不适用于低分辨率图像【英文标题】:Pytesseract not working for low resolution images 【发布时间】:2021-12-11 10:11:52 【问题描述】:

我正在尝试从分辨率为 20x10 的图像中读取数字。我知道这个问题可能是重复的。我已经解决了这里关于堆栈溢出的大部分问题,但似乎没有一个答案对我有用。 这是我试图从中读取文本的图像:

这是我当前的代码:

import pytesseract as pt
from PIL import Image


pt.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"

img = Image.open('foo.PNG')
text = pt.image_to_string(img)
print(text)
?

我是 pytesseract 和图像处理的新手。任何建议或帮助将不胜感激。

【问题讨论】:

请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。 【参考方案1】:

其实我不得不说tesseract 玩起来很敏感。根据我的经验,我可以很容易地说,如果你——作为一个人——不能清楚地阅读文本,你也不应该指望tesseract 能读懂它。

首先;为了得到更好的结果,必须做好预处理。我强烈建议任何与 tesseract 打交道的人检查他们的documentation about Improving the quality。

在您的情况下,问题在于分辨率。低分辨率是 tesseract 不阅读文本的原因吗?答案是肯定的。文档说:

Tesseract 最适用于 DPI 至少为 300 dpi 的图像, 因此调整图像大小可能会有所帮助。

这里 DPI 表示dots per inch,其建议的下限为 300 DPI,高于您的图像。当您将图像大小调整为更高的分辨率时,例如大 10 倍:

现在即使 DPI 满足,现在您正在失​​去准确性并得到噪音。

注意:这也不意味着更高的分辨率意味着更好的结果。请查看here。

注意:如果您确实需要继续处理这些类型的图像,您可能需要查看here。首先你得到更高的分辨率,然后去模糊操作,这可能有助于弄清楚。

【讨论】:

实际上,我从浏览器中裁剪了图像。浏览器中提供的数字非常小,我必须捕获带有红色背景的数字,这就是图像分辨率低的原因,我将尝试在浏览器中放大页面并再试一次。谢谢。 “去模糊”对低分辨率数据没有帮助。您链接到的内容称为“反卷积”。这绝对不适用于这里。 “更高分辨率”的字面意思是更高分辨率的数据(即更多信息),而不仅仅是对其进行上采样(包含相同的信息)。一个基本事实是,信息不能凭空添加。基本观点是:此图像无法使用,因此 OP 不应希望在这里实现任何目标。 @ChristophRackwitz 不同意谢谢

以上是关于Pytesseract 不适用于低分辨率图像的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 OCR 从低分辨率图像中获得更好/准确的结果

为啥 pytesseract 无法识别背景较暗的图像中的数字?

超分重建数据集

Cordova/PhoneGap:childBrowser UI 图像低分辨率/大块(iOS)

用于 OCR 的 OpenCv pytesseract

极端低分辨率场景下的图像识别方案