Pytesseract Image_to_string返回Windows错误:Python中的访问被拒绝错误

时间:2017-10-04 14:14:37

标签: python-2.7 tesseract python-tesseract windowserror

我尝试使用Pytesseract从图像中读取文本。当我运行以下脚本时,我收到了拒绝访问的消息。

     from PIL import Image
     import pytesseract
     import cv2
     import os

     filename=r'C:\Users\ychandra\Documents\teaching-text-structure-3-728.jpg'
     pytesseract.pytesseract.tesseract_cmd = r'C:\Python27\Lib\site-packages\pytesseract'
     image=cv2.imread(filename)
     gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)

     gray=cv2.threshold(gray,0,255,cv2.THRESH_BINARY|cv2.THRESH_OTSU)[1]
     gray=cv2.medianBlur(gray,3)

     filename='{}.png'.format(os.getpid())
     cv2.imwrite(filename,gray)

     text=pytesseract.image_to_string(Image.open(filename))
     print text

     cv2.imshow("image",image)
     cv2.imshow("res",gray)
     cv2.waitKey(0)

当我运行脚本时,我遇到错误

    Traceback (most recent call last):
    File "F:\opencv\New_folder_3\text_from_image.py", line 17, in <module>
text=pytesseract.image_to_string(Image.open(filename))
    File "C:\Python27\lib\site-packages\pytesseract\pytesseract.py", line 122, in image_to_string
config=config)
    File "C:\Python27\lib\site-packages\pytesseract\pytesseract.py", line 46, in run_tesseract
    proc = subprocess.Popen(command, stderr=subprocess.PIPE)
    File "C:\Python27\lib\subprocess.py", line 390, in __init__
errread, errwrite)
    File "C:\Python27\lib\subprocess.py", line 640, in _execute_child
startupinfo)
    WindowsError: [Error 5] Access is denied 

1 个答案:

答案 0 :(得分:4)

pytesseract.pytesseract.tesseract_cmd的设置外,您的代码无效。 tesseract_cmd应设置为您计算机中安装的tesseract executable file

以下是它的示例用法。

pytesseract.pytesseract.tesseract_cmd = "C:/Program Files/Tesseract 4.0.0/tesseract.exe"

如果在Windows PC中没有正确搜索tesseract_cmd设置,则需要PATH

希望得到这个帮助。


更新:

在使用tesseract使用pytesseract模块从Python运行Windows shell中的tesseract之前,您需要在PC中安装subprocess二进制文件。

单击此Tesseract 4.00 alpha下载64位Windows版本并进行安装。然后分别设置指向PATHTESSDATA_PREFIX目录的tesseract.exe~\tessdataenter image description here

如果您需要任何其他语言trained data file,则可以获得[here]

如果在Windows中找不到~\tessdata目录,您可以手动创建它并将至少一个traineddata文件复制到那里,例如eng.traineddata为英文。

如果tesseract正在运行,则在命令提示符下键入tesseract -v时将返回版本信息,如下所示。 enter image description here