Python 我能让pytesseract命令在pycharm中正常工作吗?pycharm正在抛出错误

Python 我能让pytesseract命令在pycharm中正常工作吗?pycharm正在抛出错误,python,python-3.x,numpy,tesseract,Python,Python 3.x,Numpy,Tesseract,我正在定义一个功能,该功能将图像转换为灰度(位黑白),然后将其传递给: 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 26

我正在定义一个功能,该功能将图像转换为灰度(位黑白),然后将其传递给:

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'
回溯(最近一次呼叫最后一次):
文件“C:\Users\HP\PycharmProjects\nayaproject\venv\lib\site packages\PIL\Image.py”,第2613行,处于打开状态
fp.seek(0)
AttributeError:'numpy.ndarray'对象没有属性'seek'
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“C:/Users/HP/PycharmProjects/nayaproject/new.py”,第17行,在
text=pytesseract.image_到_字符串(image.open(g))
文件“C:\Users\HP\PycharmProjects\nayaproject\venv\lib\site packages\PIL\Image.py”,第2615行,处于打开状态
fp=io.BytesIO(fp.read())
AttributeError:'numpy.ndarray'对象没有属性'read'
而不是Image.open(灰度),当我使用Image.fromarray(灰度)时,我得到以下错误:

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
回溯(最近一次呼叫最后一次):
文件“C:\Users\HP\PycharmProjects\nayaproject\venv\lib\site packages\pytesseract\pytesseract.py”,第170行,在run\u tesseract中
proc=subprocess.Popen(cmd_args,**subprocess_args())
文件“C:\Users\HP\AppData\Local\Programs\Python\36\lib\subprocess.py”,第709行,在\uuu init中__
恢复信号,启动新会话)
文件“C:\Users\HP\AppData\Local\Programs\Python\Python36\lib\subprocess.py”,第997行,在执行子进程中
startupinfo)
FileNotFoundError:[WinError 2]系统找不到指定的文件
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“C:/Users/HP/PycharmProjects/nayaproject/new.py”,第17行,在
text=pytesseract.image_to_字符串(image.fromarray(g))
文件“C:\Users\HP\PycharmProjects\nayaproject\venv\lib\site packages\pytesseract\pytesseract.py”,第294行,在图像字符串中
返回运行和获取输出(*args)
文件“C:\Users\HP\PycharmProjects\nayaproject\venv\lib\site packages\pytesseract\pytesseract.py”,第202行,在运行和获取输出中
运行_tesseract(**kwargs)
文件“C:\Users\HP\PycharmProjects\nayaproject\venv\lib\site packages\pytesseract\pytesseract.py”,第172行,在run\u tesseract中
引发TesseractNotFoundError()
PyteseRact.PyteseRact.TesseractNotFoundError:未安装tesseract或它不在您的路径中

我正在使用PyCharm,我已经为这个项目安装了Pillow、numpy、opencv python、pip和PyteseRact。

因为我猜灰度图像是从opencv输出的,因此是错误提示的numpy数组

AttributeError:'numpy.ndarray'对象没有属性'read'

您需要将数组转换为PIL对象。根据我自己的经验,我建议您自动将numpy数组转换为np.uint8,因为PIL使用的是8位,您通常不知道OpenCV算法会带来什么

text = pytesseract.image_to_string(Image.fromarray(gray_scale_image.astype(np.uint8)))
如果上述方法不起作用,您肯定不会通过任何形式的图像数组。尝试键入以下内容以查找arguemnt的字符:

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?Image.open(灰度图像)=>您在这里传递的灰度图像是什么?这应该是图像的完整路径,即字符串,而不是图像对象(不是数组)。谢谢,它确实工作得很好,但tesseract没有从我提供给它的id卡中给出正确的结果,在这方面有任何帮助吗?当然。我最近在研究车牌识别。这些要点非常重要:1)Tesseract的工作方式是翻译真实文本,我指的是由字体生成的文本。它为PDF等构建。因此,将您的身份证字体安装到tesseract中-这将节省您的研究时间->()2)提高输入阵列的分辨率(只需使用opencv或PIL调整阵列大小)。3)非常重要-您正在处理的图像必须完全干净。没有额外的点等。在绘制时,写一些文本,另存为png,加载并尝试翻译-必须工作4)要在tesseract中运行的图像应设置阈值(仅[0,0,0]为背景,[255255]为文本)。当我进行车牌识别时,我必须对具有不同阈值的相同图像运行pytesseract.image_to_string(),以确保获得一些输出。若你们并没有得到任何输出,没关系,只要试着用画作中purly生成的文本来制作图像就可以了。类似这样的事情:如果你想知道如何训练新字体并将其集成到你的pytesseract中(添加字体将极大地提高识别率),创建新问题并在此处提供链接,明天将回答它-这并不难,但很棘手,因为很多教程都不起作用,也不需要更多的解释,所以这个评论窗口并不适合它。以下是Tesseract使用身份证进行培训的问题