【问题标题】:Can I get pytesseract command to work properly in pycharm which is throwing errors我可以让 pytesseract 命令在引发错误的 pycharm 中正常工作吗
【发布时间】:2018-12-12 14:21:02
【问题描述】:

我正在定义一个函数,它将图像转换为灰度(有点黑白色),然后我将它传递给:

text = pytesseract.image_to_string(Image.open(gray_scale_image))

然后我打印我收到的文本,但它抛出错误:

Traceback (most recent call last):
  File "C:\Users\HP\PycharmProjects\nayaproject\venv\lib\site-packages\PIL\Image.py", line 2613, in open
fp.seek(0)
AttributeError: 'numpy.ndarray' object has no attribute 'seek'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/Users/HP/PycharmProjects/nayaproject/new.py", line 17, in <module>
text = pytesseract.image_to_string(Image.open(g))
  File "C:\Users\HP\PycharmProjects\nayaproject\venv\lib\site-packages\PIL\Image.py", line 2615, in open
fp = io.BytesIO(fp.read())
AttributeError: 'numpy.ndarray' object has no attribute 'read'

当我使用 Image.fromarray(grayscale) 而不是 Image.open(grayscale) 时,我得到了这些错误:

Traceback (most recent call last):
  File "C:\Users\HP\PycharmProjects\nayaproject\venv\lib\site-packages\pytesseract\pytesseract.py", line 170, in run_tesseract
proc = subprocess.Popen(cmd_args, **subprocess_args())
  File "C:\Users\HP\AppData\Local\Programs\Python\Python36\lib\subprocess.py", line 709, in __init__
restore_signals, start_new_session)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python36\lib\subprocess.py", line 997, in _execute_child
startupinfo)

FileNotFoundError: [WinError 2] The system cannot find the file specified

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/Users/HP/PycharmProjects/nayaproject/new.py", line 17, in <module>
text = pytesseract.image_to_string(Image.fromarray(g))
  File "C:\Users\HP\PycharmProjects\nayaproject\venv\lib\site-packages\pytesseract\pytesseract.py", line 294, in image_to_string
return run_and_get_output(*args)
  File "C:\Users\HP\PycharmProjects\nayaproject\venv\lib\site-packages\pytesseract\pytesseract.py", line 202, in run_and_get_output
run_tesseract(**kwargs)
  File "C:\Users\HP\PycharmProjects\nayaproject\venv\lib\site-packages\pytesseract\pytesseract.py", line 172, in run_tesseract
raise TesseractNotFoundError()
pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your path

我正在研究 PyCharm,我已经为这个项目安装了 Pillow、numpy、opencv-python、pip 和 pytesseract。

【问题讨论】:

  • 你是如何安装 tesseract 的?
  • Image.open(gray_scale_image) => 你在这里传递什么作为 gray_scale_image ?这应该是图像的完整路径,即字符串而不是图像对象(不是数组)

标签: python python-3.x numpy tesseract


【解决方案1】:

因为我猜 gray_scale_image 是 OpenCV 的输出,因此是错误提示的 numpy 数组

AttributeError: 'numpy.ndarray' object has no attribute 'read'

您需要将数组转换为 PIL 对象。根据我自己的经验,我建议您自动将 numpy 数组转换为 np.uint8,因为 PIL 使用 8bit,您通常不了解 OpenCV 算法的内容。

text = pytesseract.image_to_string(Image.fromarray(gray_scale_image.astype(np.uint8)))

如果上述方法不起作用,则绝对不要传递任何形式的 Image 数组。尝试输入这些来查找argument的字符:

print(type(gray_scale_image))
print(gray_scale_image.shape)

这将解决您的第一个问题之后,将会出现您还不知道的新问题。您需要为您的 pytesseract 添加路径

pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your path

解决方案是在开头添加路径

pytesseract.pytesseract.tesseract_cmd = 'C:/Program Files (x86)/Tesseract-OCR/tesseract'
TESSDATA_PREFIX = 'C:/Program Files (x86)/Tesseract-OCR'

【讨论】:

  • 谢谢伙计,它确实工作得很好,但是 tesseract 没有从我提供给它的身份证中给出正确的结果,在这件事上有什么帮助吗?
  • 当然。我最近在车牌识别方面工作。这些点非常重要:1)Tesseract 的工作方式是翻译真实的文本——我的意思是由字体生成的文本。它为pdfs等构建。因此,将您的身份证字体安装到您的 tesseract 中 - 这将为您节省数天的研究时间 ->(trainyourtesseract.com) 2) 提高输入数组的分辨率(只需使用 opencv 或 PIL 调整数组大小)。3) 超级重要 - 您的形象加工必须完全干净。没有多余的点等等。在绘画中,写一些文字,保存为 png,加载它并尝试翻译 - 必须工作
  • 4) 要通过 tesseract 运行的图像应该被阈值化(只有 [0,0,0] 用于背景,[255,255,255] 用于文本)。当我进行车牌识别时,我必须为具有不同阈值的同一图像运行 pytesseract.image_to_string() 以确保获得一些输出。如果您没有得到任何输出,没关系,只需尝试使用来自绘画的纯生成文本的图像,它应该可以工作。像这样:i.ytimg.com/vi/1ns8tGgdpLY/maxresdefault.jpg
  • 如果您想了解如何训练新字体并将其集成到您的 pytesseract 中(添加字体会极大地提高识别率),请创建新问题并在此处提供链接,明天会回答 - 不难,但很棘手,因为很多教程都不起作用,而且需要更多解释 - 这个评论窗口并不适合它。
  • stackoverflow.com/questions/53761979/…这里是Tesseract用身份证训练的问题
猜你喜欢
  • 2014-01-30
  • 1970-01-01
  • 2022-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-10
相关资源
最近更新 更多