python pytesseract.image_to_string 无法读取图像中的文本

Posted

技术标签:

【中文标题】python pytesseract.image_to_string 无法读取图像中的文本【英文标题】:python pytesseract.image_to_string can't read text in image 【发布时间】:2020-04-17 03:55:21 【问题描述】:

我在我的 Windows 10 机器上使用 python3.7 和 Tesseract-OCR 版本 5。我有包含数字的图片。然而,尽管它对人眼来说非常清晰,但 Tesseract 无法正确提取它们。有些人给了我几个正确的读数。有些根本不返回任何东西。附一张是什么都不返回的极端情况……

text = pytesseract.image_to_string(n)
print(text) -> returns nothing

我读到我必须将 DPI 更改为 300,Tesseract 才能正确读取它。你能告诉我最好的方法吗?我用谷歌搜索,但找不到直接的方法。谢谢!

输入图像


嗨 Nathancy,这是我在运行 pytesseract 命令时遇到的“不支持的图像对象”错误

>>> data = pytesseract.image_to_string(thresh, lang='eng', config='--psm 6')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python37\lib\site-packages\pytesseract\pytesseract.py", line 309, in image_to_string
[output_type]()
  File "C:\Python37\lib\site-packages\pytesseract\pytesseract.py", line 308, in <lambda>
Output.STRING: lambda: run_and_get_output(*args),
  File "C:\Python37\lib\site-packages\pytesseract\pytesseract.py", line 208, in run_and_get_output
temp_name, input_filename = save_image(image)
  File "C:\Python37\lib\site-packages\pytesseract\pytesseract.py", line 121, in save_image
image = prepare(image)
  File "C:\Python37\lib\site-packages\pytesseract\pytesseract.py", line 113, in prepare
raise TypeError('Unsupported image object')
TypeError: Unsupported image object

【问题讨论】:

【参考方案1】:

这是一个使用 OpenCV 进行一些预处理的快速示例:

Pytesseract OCR 的结果:

55 58 6 25 41 1

代码

import cv2
import pytesseract

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

# Load image, grayscale, Otsu's threshold
image = cv2.imread('1.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
thresh = 255 - cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]

# Blur and perform text extraction
thresh = cv2.GaussianBlur(thresh, (3,3), 0)
data = pytesseract.image_to_string(thresh, lang='eng', config='--psm 6')
print(data)

cv2.imshow('thresh', thresh)
cv2.waitKey()

【讨论】:

今晚我会试一试。感谢您的回复! 嗨 Nathancy,我在运行 pytesseract 命令时收到此“不支持的图像对象”错误... 嗯这可能与您的安装有关。见this 我想我明白了。 “thresh”是一种数组格式。我必须用这个“image_new = Image.fromarray(thresh)”转换回图像格式。然后此命令将起作用“data = pytesseract.image_to_string(image_new, lang='eng', config='--psm 6')”。它现在给了我正确的结果。谢谢! 绝对!谢谢

以上是关于python pytesseract.image_to_string 无法读取图像中的文本的主要内容,如果未能解决你的问题,请参考以下文章

获取方向pytesseract Python3

pytesseract文字识别

python之图像识别

如何使用 pytesseract 获得每一行的信心

Windows pytesseract image_to_osd Invalid resolution 0 dpi. Using 70 instead. Too few characters报错及解决

无法使用 pytesseract.image_to_string 从图像中读取文本