Pytesseract 不适用于低分辨率图像

Pytesseract not working for low resolution images

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

这是我当前的代码:

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 和图像处理的新手。任何建议或帮助将不胜感激。

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

首先;为了获得更好的结果,必须进行良好的预处理。我强烈建议任何处理 tesseract 的人检查他们的 documentation about Improving the quality.

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

Tesseract works best on images which have a DPI of at least 300 dpi, so it may be beneficial to resize images.

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

现在即使 DPI 满足,你也会失去准确性并产生噪音。

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

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