Python PIL权限错误求助:竞速图片OCR代码执行异常
解决OCR代码中的权限错误问题
我来帮你排查这个在竞速图片OCR时遇到的权限错误。先梳理下你的代码和报错情况:
你的OCR处理代码
from PIL import Image, ImageFilter, ImageEnhance import pytesseract im = Image.open("runners_1.jpg") # the second one im = im.filter(ImageFilter.MedianFilter()) enhancer = ImageEnhance.Contrast(im) im = enhancer.enhance(2) im = im.convert('1') im.save('temp2.jpg') text=pytesseract.image_to_string(Image.open('temp2.jpg','r'),config="--psm 8") print(text)
触发的权限错误
Traceback (most recent call last):
File "face_detection.py", line 27, in
text = pytesseract.image_to_string(Ima...
接下来分析几个可能的原因和对应的解决办法:
文件读写权限不足
你在保存临时文件temp2.jpg或者读取它的时候,当前用户没有对应目录的读写权限。比如如果脚本运行在系统级目录(像Windows的C:\Windows、Linux的/root),普通用户是没有写入权限的。- 解决办法:把脚本和图片移动到你有完全读写权限的目录(比如个人文档文件夹、用户主目录);或者在代码里明确指定有权限的保存路径,比如:
# Windows示例 im.save('C:/Users/YourName/Documents/temp2.jpg') # Linux/macOS示例 im.save('/home/YourName/Documents/temp2.jpg')
- 解决办法:把脚本和图片移动到你有完全读写权限的目录(比如个人文档文件夹、用户主目录);或者在代码里明确指定有权限的保存路径,比如:
Tesseract引擎的执行权限问题
pytesseract依赖系统中的Tesseract OCR引擎,如果当前用户没有执行该程序的权限,也会触发权限错误。- 解决办法:
- 确认Tesseract的安装路径(Windows通常是
C:\Program Files\Tesseract-OCR\tesseract.exe,Linux/macOS一般是/usr/bin/tesseract)。 - 在代码里手动指定Tesseract的路径,避免系统找不到或者权限受限:
# Windows环境 pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' # Linux/macOS环境 pytesseract.pytesseract.tesseract_cmd = '/usr/bin/tesseract' - Linux/macOS用户可以通过
chmod +x /usr/bin/tesseract命令确保Tesseract程序有可执行权限。
- 确认Tesseract的安装路径(Windows通常是
- 解决办法:
冗余的文件打开参数
你的代码里用了Image.open('temp2.jpg','r'),其实PIL的Image.open默认就是只读模式,不需要额外传入'r'参数,虽然这不一定是权限错误的直接原因,但简化成Image.open('temp2.jpg')可以避免不必要的参数问题。
内容的提问来源于stack exchange,提问作者Syed Salman Kazmi
相关产品推荐
相关产品推荐

