操作系统错误:[Errno 2] 没有这个文件或目录使用pytesser。

14

这是我的问题,我想使用pytesser获取一张图片的内容。我的操作系统是Mac OS 10.11,我已经安装了PIL、pytesser、tesseract-ocr引擎和其他支持库,例如libpng等。但是当我运行以下代码时,会发生错误。

from pytesser import *
import os
image = Image.open('/Users/Grant/Desktop/1.png')
text = image_to_string(image)
print text
下面是错误信息。
Traceback (most recent call last):
File "/Users/Grant/Documents/workspace/image_test/image_test.py",    line 10, in <module>
text = image_to_string(im)
File   "/Users/Grant/Documents/workspace/image_test/pytesser/pytesser.py", line   30, in image_to_string
call_tesseract(scratch_image_name, scratch_text_name_root)
File "/Users/Grant/Documents/workspace/image_test/pytesser/pytesser.py", line 21, in call_tesseract
retcode = subprocess.call(args)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 522, in call
return Popen(*popenargs, **kwargs).wait()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 710, in __init__
errread, errwrite)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1335, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory

此外,tesseract-ocr引擎在我的Mac上运行良好,我可以在终端中运行它并获得结果。以下是测试图片的结果。 tesseract结果

能否有人帮我解决这个问题?谢谢!


你尝试使用 \ 而不是 / 了吗? - user987654321
我刚刚尝试了一下,它不起作用。它返回一个错误消息 "IOError: [Errno 2] No such file or directory: '\Users\Grant\Desktop\1.png' "。 - grant
您需要安装Tesseract OCR引擎并提供其路径。 此处讨论了相同的问题。 - Abdul
7个回答

14
幸运的是,我解决了这个问题。
起初,我运行了以下命令:
pip install pytesseract

安装该软件包。

但我收到了“使用pytesser时没有这样的文件或目录”错误消息。

然后我阅读了这个链接:image_to_string doesn't work in Mac 因此,只需运行以下脚本:

brew link libtiff 
brew link libpng 
brew link jpeg
brew install tesseract

对我来说很有效~

10

我曾经遇到同样的问题,但是我成功把图片转换成字符串。 使用apt高级包管理工具应该能解决问题:

sudo apt install tesseract-ocr

如果您无法在Python脚本中使用它,只需执行以下操作:

from os import system

system("tesseract -l eng /image.png text.txt")

8

打开文件 pytesseract.py

我的文件在 /Users/yourUser/.virtualenvs/cv/lib/python2.7/site-packages/pytesseract/pytesseract.py

tesseract_cmd = 'tesseract' 改为 tesseract_cmd = '/usr/local/bin/tesseract'


1
我尝试了多次链接和更改路径,但这些都不起作用。这是唯一有效的解决方案。谢谢! - user1610719

如果 TESSERACT 不在你的 PATH 中,或者名称不同,请更改此处

在涉及到的行的上一行 :-) 加入 tesseract 到 $PATH 中也能使其工作,而无需修改文件。更新后,您需要再次编辑,因此最好在第一次将其添加到路径中。我这里的二进制文件名为 pytesseract,因此除非你正确命名,否则没有一个都会起作用。
- m3nda
@em3nda,你的最后一句话是什么意思?你是说更改路径对你不起作用吗?尽管我的路径中有tesseract的bin文件夹,但它仍然无法正常工作。 - agent18

4

您之所以会收到异常是因为子进程无法找到二进制文件(tesser可执行文件)。

安装过程分为三步:

1. 下载/安装系统级别的库/二进制文件

对于不同的操作系统,请参考此帮助文档。在MacOS上,您可以直接使用brew进行安装。

安装Google Tesseract OCR(有关如何在Linux、Mac OSX和Windows上安装引擎的其他信息)。您必须能够调用tesseract命令作为tesseract。如果不是这种情况,例如因为tesseract不在您的PATH中,则必须更改tesseract.py顶部的“tesseract_cmd”变量。在Debian / Ubuntu上,您可以使用tesseract-ocr软件包。对于Mac OS用户,请安装homebrew软件包tesseract。

  • 适用于RHEL/CentOS 7的Bash脚本,用于安装tesseract-ocr

  • 使用yum - 参考此答案 - /usr/bin/yum --enablerepo epel-testing install tesseract.x86_64

  • 适用于CentOS的手动安装指南 - 参考此答案

2. 安装Python包

pip install pytesseract

3. 最后,您需要在PATH中拥有tesseract二进制文件。

或者,在运行时设置:

import pytesseract

pytesseract.pytesseract.tesseract_cmd = '<path-to-tesseract-bin>'

默认路径应该是/usr/local/bin/tesseract

2
第三点是这个问题中最相关的。$ which tesseract 将给出 tesseract 可执行文件的实际路径,将其复制到 'path/to/bin' 中。谢谢。 - agent18
*path/to/bin/tesseract - agent18

2
我遇到了同样的问题两次,分别是在MacOS和Ubuntu上。这个方法对我有用,希望它也能帮到你。
首先,打开终端,然后:

2
您需要安装tesseract-ocr: sudo apt-get install tesseract-ocr 并在脚本中使用。
    from PIL import Image
    import os
    import pytesseract

    text = pytesseract.image_to_string(Image.open(os.path.abspath('test.png')))

0
这可能不是每个人都会遇到的问题,但我遇到了类似的问题,是因为在安装tesseract时出现了错误。 我一直收到错误消息:
Making install in ccutil
/bin/sh: /Applications/Xcode: No such file or directory
make: *** [install-recursive] Error 1

这是因为我之前将 /Applications/Xcode 重命名为 /Applications/Xcode 8,以便更容易区分系统中安装的不同 Xcode 版本。
我暂时将其重新命名为 /Applications/Xcode,然后运行了该命令。
sudo xcode-select --switch /Applications/Xcode.app

最后尝试重新安装Tesseract,这次幸运地没有收到任何错误消息。

brew install tesseract --all-languages

现在Python代码运行良好,我不再收到“OSError:[Errno 2] No such file or directory”错误消息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接