使用pytesseract与PIL提取图片文本时遇PermissionError:文件访问被拒绝
解决pytesseract image_to_string的PermissionError(Access Denied)问题
以下是针对该问题的具体排查和解决步骤:
指定Tesseract OCR的完整路径
pytesseract默认可能无法找到tesseract.exe,或者该程序的执行权限受限。在代码中显式指定其路径:import pytesseract from PIL import Image # 替换为你的tesseract.exe实际安装路径 pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' print(pytesseract.image_to_string(Image.open("screenshot.png")))检查图片文件的读取权限
右键screenshot.png→ 属性 → 安全选项卡,确认当前登录用户拥有该文件的读取权限,如果没有则添加对应权限。验证临时目录的读写权限
pytesseract运行时会生成临时文件,默认使用系统临时目录(如C:\Users\<你的用户名>\AppData\Local\Temp)。确保该目录对当前用户开放读写权限。若权限不足,可手动指定自定义临时目录:import pytesseract from PIL import Image import tempfile import os pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' # 替换为你有读写权限的自定义目录 custom_temp_dir = r'D:\MyTemp' os.makedirs(custom_temp_dir, exist_ok=True) with tempfile.TemporaryDirectory(dir=custom_temp_dir) as temp_dir: os.environ['TEMP'] = temp_dir print(pytesseract.image_to_string(Image.open("screenshot.png")))调整Tesseract的安装目录
若Tesseract安装在系统保护目录(如C:\Program Files),普通用户可能缺乏执行权限。尝试将Tesseract卸载后重新安装到非系统目录(如D:\Tesseract-OCR),并更新代码中的路径配置。排查杀毒软件/防火墙拦截
部分杀毒软件或防火墙会误判tesseract.exe为风险程序并拦截其运行。暂时关闭杀毒软件测试,或将tesseract.exe添加到信任列表中。
内容的提问来源于stack exchange,提问作者AK CRAWFORD
相关产品推荐
相关产品推荐

