pytesseract - 无效分辨率 0 dpi

Ani*_*l B 9 ocr python-tesseract

我正在使用 pytesseract v5.0,并使用 OpenCV 旋转图像,然后将其传递给 pytesseract.image_to_osd()。有一些图像可以与 image_to_osd 一起使用,但其他图像则不能,并且程序会给出以下错误: TesseractError: (1, 'Tesseract Open Source OCR Engine v5.0.0-alpha.20201127 with Leptonica警告:无效分辨率 0 dpi .使用 70 代替。估计分辨率为 179 警告。无效分辨率 0 dpi。使用 70 代替。字符太少。跳过此页处理过程中出错。')我正在使用 python 3.9.5。

请分享解决方案/示例代码来解决此问题。

Esr*_*oud 7

我已经面对这个错误很长时间了,但终于意识到了原因。

  1. 如果图像旋转只有 0、90、180 或 270,Tesseract OSD 似乎就能获得正确的图像旋转。
  2. 如果您使用 OpenCV 或 Pillow 读取图像,则可能会出现上述错误。
  3. 如果您查看 Tesseract 参数,您会注意到名为“Min_characters_to_try”的内容,它是运行 OSD 的最小字符数。默认设置为 50,这对您来说可能太多了。所以,我们必须减少它。

您可以做的是裁剪背景以使您的对象具有上述角度之一。然后,将图像文件直接传递到 Tesseract 并减少min_characters_to_try,如下所示:

osd = pytesseract.image_to_osd(r'D:\image.jpg',config='--psm 0 -c min_characters_to_try=5')
Run Code Online (Sandbox Code Playgroud)