PIL中打开图像文件出现错误

6
我正在尝试执行以下代码。
from pytesser import *
import Image

i="C:/Documents and Settings/Administrator/Desktop/attachments/R1PNDTCB.jpg"
print i
im = Image.open(i.strip())
text = image_to_string(im)
print text

我收到了以下错误信息。
C:/Documents and Settings/Administrator/Desktop/attachments/R1PNDTCB.jpg
Traceback (most recent call last):
  File "C:\Python27\Lib\site-packages\Pythonwin\pywin\framework\scriptutils.py", line 322, in RunScript
    debugger.run(codeObject, __main__.__dict__, start_stepping=0)
  File "C:\Python27\Lib\site-packages\Pythonwin\pywin\debugger\__init__.py", line 60, in run
    _GetCurrentDebugger().run(cmd, globals,locals, start_stepping)
  File "C:\Python27\Lib\site-packages\Pythonwin\pywin\debugger\debugger.py", line 655, in run
    exec cmd in globals, locals
  File "C:\Documents and Settings\Administrator\Desktop\attachments\ocr.py", line 1, in <module>
    from pytesser import *
  File "C:\Python27\lib\site-packages\PIL\Image.py", line 1952, in open
    fp = __builtin__.open(fp, "rb")
IOError: [Errno 2] No such file or directory: 'C:/Documents and Settings/Administrator/Desktop/attachments/R1PNDTCB.jpg'

请问我在这里做错了什么。

已重命名图像文件。将Python文件和图像移动到新文件夹。将该文件夹移动到E驱动器。 现在代码如下:

from pytesser import *
import Image
import os

i=os.path.join("E:\\","ocr","a.jpg")
print i
im = Image.open(i.strip())
text = image_to_string(im)
print text

现在的错误如下:
E:\ocr\a.jpg
Traceback (most recent call last):
  File "or.py", line 8, in <module>
    text = image_to_string(im)
  File "C:\Python27\lib\pytesser.py", line 31, in image_to_string
    call_tesseract(scratch_image_name, scratch_text_name_root)
  File "C:\Python27\lib\pytesser.py", line 21, in call_tesseract
    proc = subprocess.Popen(args)
  File "C:\Python27\lib\subprocess.py", line 679, in __init__
    errread, errwrite)
  File "C:\Python27\lib\subprocess.py", line 893, in _execute_child
    startupinfo)
WindowsError: [Error 2] The system cannot find the file specified

1
确保你的路径正确。在你当前的 print i 语句中,使用 from os.path import isfile; assert isfile(i) - AdamKG
该文件当前是否存在于该位置? - Spencer Rathbun
6个回答

4

首先,您需要安装Tesseract。仅仅安装pytesseract是不够的。然后,编辑pytesseract.py中的tesseract_cmd变量以指向tessseract二进制文件。例如,在我的安装中,我将其设置为

tesseract_cmd = 'C:\\Program Files (x86)\\Tesseract-OCR\\tesseract.exe'

我的 pytesser.py 中没有 tesseracr_cmd 变量,我该如何纠正这个错误? - Akhil Nadh PC

3

异常情况很明显:文件不存在或者您缺乏访问它的足够权限。如果两种情况都不是,请提供证据(例如,以相同用户身份运行的相关dir命令及其输出)。


2
我打赌是权限的问题,因为他们试图访问管理员拥有的某些内容。 - Mark Ransom
@Jonah,我改变主意了-那条路径看起来不正确。在Windows资源管理器中导航到该文件,并从顶部的位置下拉菜单中复制/粘贴路径。 - Mark Ransom
Pytesser需要被授予任何权限吗? - Jonah

0

你的图片路径是什么?

i="C:\\Documents and Settings\\Administrator\\Desktop\\attachments\\R1PNDTCB.jpg"

试一下这个:

import os
os.path.join("C:\\", "Documents and Settings", "Administrator")

你应该得到一个类似于上一行的字符串


0

只需在您的代码中添加这两行:

导入 OS

os.chdir('C:\Python27\Lib\site-packages\pytesser')  

之前

from pytesser import *

0

首先尝试这个:

os.path.expanduser('~/Desktop/attachments/R1PNDTCB.jpg')

可能是“文档和设置”中的空格导致了这个问题。
编辑:
使用os.path.join,这样它就会使用正确的目录分隔符。

我尝试将目录更改为D,但出现以下错误WindowsError:[Error 2]系统找不到指定的文件 - Jonah
Windows 能够交替使用 '/''\\',因此分隔符不是问题。 - Mark Ransom

0
如果您正在使用pytesseract,您必须确保已在系统中安装了Tesseract-OCR。之后,您需要在代码中插入tesseract的路径,如下所示。
from PIL import Image
import pytesseract

pytesseract.pytesseract.tesseract_cmd = 'C:/Program Files (x86)/Tesseract 
OCR/tesseract'

您可以从https://github.com/UB-Mannheim/tesseract/wiki下载Tesseract-OCR。


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