Python 2.7 PyteSeract Image_to_字符串返回Windows错误:Python中的拒绝访问错误
我试图使用Pytesseract读取图像中的文本。当我运行下面的脚本时,收到拒绝访问的消息Python 2.7 PyteSeract Image_to_字符串返回Windows错误:Python中的拒绝访问错误,python-2.7,tesseract,python-tesseract,windowserror,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
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
回溯(最近一次呼叫最后一次):
文件“F:\opencv\New\u folder\u 3\text\u from\u image.py”,第17行,在
text=pytesseract.image_to_字符串(image.open(文件名))
文件“C:\Python27\lib\site packages\pytesseract\pytesseract.py”,第122行,在图像\u到\u字符串中
config=config)
文件“C:\Python27\lib\site packages\pytesseract\pytesseract.py”,第46行,在run\u tesseract中
proc=subprocess.Popen(命令,stderr=subprocess.PIPE)
文件“C:\Python27\lib\subprocess.py”,第390行,在\uuu init中__
错误读取,错误写入)
文件“C:\Python27\lib\subprocess.py”,第640行,在执行子进程中
startupinfo)
WindowsError:[错误5]访问被拒绝
除了设置pytesseract.pytesseract.tesseract\u cmd
之外,您的代码可以正常工作。tesseract\u cmd
应设置为机器中安装的tesseract可执行文件
下面是它的一个示例用法
pytesseract.pytesseract.tesseract_cmd = "C:/Program Files/Tesseract 4.0.0/tesseract.exe"
如果Windows PC中没有正确的搜索路径设置,则需要使用tesseract\u cmd
希望这有帮助
更新: 在使用
pytesseract
之前,您需要将tesseract
二进制文件安装到您的电脑中。pytesseract使用subprocess
模块从Python在Windows shell中运行tesseract
单击此按钮可下载64位Windows版本并进行安装。然后设置路径
和TESSDATA\u前缀
,分别指向您的tesseract.exe
和~\TESSDATA
目录。
如果您需要任何其他语言训练过的数据文件
,您可以获得它
如果在您的Windows中找不到~\tessdata
目录,您可以手动创建它,并将至少一个traineddata
文件复制到该目录,例如英语的eng.traineddata
如果tesseract
正在工作,当您在命令提示符下键入tesseract-v
时,它将返回版本信息,如下所示。
除了设置
pytesseract.pytesseract.tesseract\u cmd
之外,您的代码可以正常工作。tesseract\u cmd
应设置为机器中安装的tesseract可执行文件
下面是它的一个示例用法
pytesseract.pytesseract.tesseract_cmd = "C:/Program Files/Tesseract 4.0.0/tesseract.exe"
如果Windows PC中没有正确的搜索路径设置,则需要使用tesseract\u cmd
希望这有帮助
更新: 在使用
pytesseract
之前,您需要将tesseract
二进制文件安装到您的电脑中。pytesseract使用subprocess
模块从Python在Windows shell中运行tesseract
单击此按钮可下载64位Windows版本并进行安装。然后设置路径
和TESSDATA\u前缀
,分别指向您的tesseract.exe
和~\TESSDATA
目录。
如果您需要任何其他语言训练过的数据文件
,您可以获得它
如果在您的Windows中找不到~\tessdata
目录,您可以手动创建它,并将至少一个traineddata
文件复制到该目录,例如英语的eng.traineddata
如果tesseract
正在工作,当您在命令提示符下键入tesseract-v
时,它将返回版本信息,如下所示。
请参阅我的答复。以下是以防万一你还没有读过-。请看我的回答。以下内容只是为了防止您尚未阅读-。我尝试了将tesseract可执行文件路径设置为tesseract_cmd,正如您上面提到的。我得到了一个不同的错误,如下所示。
raise TesseractError(status,errors)TesseractError:(1,u'error opening data file\\Python27\\Lib\\site packages\\pytesseract\\tessdata/eng.traineddata')
我的pytesseract中没有testdata文件夹。我使用PIP安装了pytesseract。您知道我在哪里可以找到它。@chandrakanthChandra您可以在上面的更新中查看我的答复。谢谢。我会检查的。我尝试过将tesseract可执行文件路径设置为tesseract_cmd,如上所述。我收到了一个不同的错误,如下所示。引发TesseractError(状态,错误)TesseractError:(1,u'Error opening data file\\Python27\\Lib\\site packages\\pytesseract\\tessdata/eng.traineddata')
我的pytesseract中没有testdata文件夹。我使用PIP安装了pytesseract。你知道在哪里可以找到它。@chandrakanthChandra你可以在上面的更新中查看我的回复。谢谢。我会检查这个