尝试访问“/usr/local/cillar/tesseract/4.1.1/share/tessdata/”时发生PermissionError

2024-09-27 07:25:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习如何使用tesseract,我刚刚使用自制软件安装了tesseract,使用pip安装了Pyteseract。
我的代码如下所示:

pytesseract.pytesseract.tesseract_cmd = "/usr/local/Cellar/tesseract/4.1.1/share/tessdata/"

#...

但是当我运行它时,我得到了这个错误:

PermissionError: [Errno 13] Permission denied: '/usr/local/Cellar/tesseract/4.1.1/share/tessdata/'

如果你需要,我会提供更多的信息


Tags: pip代码cmdshare软件usrlocal错误
3条回答

这对我有用

try:
    from PIL import Image
except ImportError:
    import Image
import pytesseract

pytesseract.pytesseract.tesseract_cmd = "/usr/local/bin/tesseract"

print(pytesseract.image_to_string(Image.open("./test.jpg")))

我已经用brew install tesseract安装了tesseract,用pip install pytesseract在一个新的virtualenv中安装了Pyteseract。我对tesseract可执行文件(ls -la $(which tesseract)的权限为

lrwxr-xr-x  1 p13rr0m  admin  39 May 26  2020 /usr/local/bin/tesseract -> ../Cellar/tesseract/4.1.1/bin/tesseract    

我通过这样做解决了这个问题:

  • 通过自制程序安装tesseract,如下所示:brew install tesseract

  • 创建新的venv:python -m venv yourVenvName

  • 在venv内,运行pip install pytesseract

如果您使用的是mac,则不需要使用tesseract_cmd。 如果可以在venv中使用tesseract,请尝试

这可能是因为tessdata不可执行。在自述中,他们说:

import pytesseract

# If you don't have tesseract executable in your PATH, include the following:
pytesseract.pytesseract.tesseract_cmd = r'<full_path_to_your_tesseract_executable>'
# Example tesseract_cmd = r'C:\Program Files (x86)\Tesseract-OCR\tesseract'

变量tesseract_cmd在函数run_tesseract下的this file中使用如下:

    cmd_args = []
...
    cmd_args += (tesseract_cmd, input_filename, output_filename_base)
...
    try:
        proc = subprocess.Popen(cmd_args, **subprocess_args())
    except OSError as e:
        if e.errno != ENOENT:
            raise e
        raise TesseractNotFoundError()

异常可能是从try-except块引发的,因为您无法执行不可执行的文件,从而导致权限错误

您应该做的是找到tesseract可执行文件并引用它,而不是tessdata。正如@p13rr0m在他的answer中指出的,它可能位于"/usr/local/bin/tesseract"。在这种情况下,不应修改变量tesseract_cmd,因为它最初引用的命令tesseract已经可以从PATH环境变量访问

相关问题 更多 >

    热门问题