权限尝试访问'/usr/local/Cellar/tesseract/4.1.1/share/tessdata/'时出错



我正在学习如何使用tesseract,我刚刚安装了使用自制的tesseract和使用pip的pytesseract。
我的代码是这样的:

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/'

如果你需要,我可以提供进一步的信息。

这对我有用

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")))

我已经安装了tesseract与brew install tesseract和pytesseract在一个新的虚拟环境与pip install pytesseract。我对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

你不需要使用tesseract_cmd,如果你使用mac。并尝试是否可以在venv.

中使用tesseract

这可能是因为tessdata不可执行。在README中,它们是这样说的:

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-OCRtesseract'

变量tesseract_cmd在此文件中run_tesseract函数下的使用如下:

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在他的回答中指出的,它可能位于"/usr/local/bin/tesseract"。在这种情况下,您不应该修改变量tesseract_cmd,因为它最初引用的命令tesseract已经可以从PATH环境变量访问。

最新更新