You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python OCR程序遇PermissionError[WinError5]权限拒绝问题求助

问题描述

我正在开发一个Python程序,计划通过OCR分析游戏赛事统计数据,生成玩家/团队的表现总结。作为Python新手,此前安装过多个Python(2-3)版本,现已全部卸载并重新安装了最新版Python3到默认推荐的AppData路径。

使用pytesseract和cv2完成OCR任务时,出现权限拒绝错误,更换其他OCR库也遇到相同问题。尝试过修改文件夹权限、以管理员身份运行VS Code、更换磁盘运行项目,均无法解决。

代码片段

def ocr_core(img):
    text = pytesseract.image_to_string(img)
    return text

报错信息

Exception has occurred: PermissionError
[WinError 5] Access is denied
  File "G:\PythonProjects\NewWorldWarStats.py", line 7, in ocr_core
    text = pytesseract.image_to_string(img)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "G:\PythonProjects\NewWorldWarStats.py", line 25, in <module>
    print(ocr_core(img))
          ^^^^^^^^^^^^^
PermissionError: [WinError 5] Access is denied
解决思路
  • 指定Tesseract可执行文件的完整路径
    权限问题常因pytesseract无法定位正确的Tesseract程序,或默认路径下的程序无执行权限导致。在代码中手动指定路径:

    import pytesseract
    # 替换为你的Tesseract实际安装路径
    pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
    
    def ocr_core(img):
        text = pytesseract.image_to_string(img)
        return text
    

    确认该exe文件对当前用户拥有读取和执行权限,若安装在其他位置需对应修改路径。

  • 验证Python解释器权限与路径
    在VS Code终端输入python --version,确认使用的是AppData路径下的新版本Python。右键Python安装目录(如C:\Users\<你的用户名>\AppData\Local\Programs\Python\PythonXX),进入“属性-安全”,确保当前用户拥有完全控制或至少读取、执行、写入权限。

  • 更换项目存储目录
    部分系统保护目录会限制程序权限,将项目移至非系统盘的普通用户目录(如D:\MyPythonProjects),并确保该目录对当前用户开放读写权限。

  • 检查图片文件权限
    若处理的图片来自系统桌面、受保护下载目录,或文件本身设为只读,可能导致读取失败。将图片复制到项目目录后再尝试读取,同时确认图片文件允许当前用户读取。

  • 排查安全软件拦截
    杀毒软件或Windows Defender可能拦截Python调用外部exe(如Tesseract),引发权限拒绝。可暂时关闭安全软件测试,若问题解决,将Python解释器和Tesseract程序添加至安全软件信任列表。

  • 重新安装Tesseract到非系统保护路径
    默认安装在Program Files目录的Tesseract可能需管理员权限,卸载后重新安装到普通用户可访问路径(如D:\Tesseract-OCR),安装时勾选“添加到系统PATH”,或手动将该路径加入系统环境变量PATH。

内容的提问来源于stack exchange,提问作者Daniel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 00:30:38