我正在学习如何使用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环境变量访问。