【问题标题】:Pytesseract not working for low resolution imagesPytesseract 不适用于低分辨率图像
【发布时间】:2023-03-21 05:07:01
【问题描述】:

我正在尝试从分辨率为 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 和图像处理的新手。任何建议或帮助将不胜感激。

【问题讨论】:

  • 请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。

标签: python image-processing ocr python-tesseract


【解决方案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 不同意谢谢
猜你喜欢
  • 1970-01-01
  • 2019-04-26
  • 2014-11-20
  • 1970-01-01
  • 2017-08-23
  • 2011-04-07
  • 2020-09-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多