2012-03-06 14 views
6

Estoy intentando ejecutar el siguiente códigoerror al abrir archivo de imagen en PIL

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 

me sale el siguiente error

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' 

Por favor alguien puede explicar lo que estoy haciendo mal aquí.

Cambié el nombre del archivo de imagen. Cambié el archivo python y las imágenes a una carpeta nueva. Desplazado a la carpeta E unidad Ahora, el código es el siguiente:

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 

Ahora el error es como sigue:

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

Asegúrate de que tienes el camino correcto. 'desde el os.ruta de acceso isfile de importación; assert isfile (i)) 'donde actualmente tienes' print i'. – AdamKG

+0

¿Ese archivo existe actualmente en esa ubicación? –

+0

Sí, el archivo existe. – Jonah

Respuesta

3

La excepción es bastante claro: el archivo o bien no existe, o te faltan permisos suficientes para acceder a él. Si ninguno es el caso, proporcione pruebas (por ejemplo, los comandos pertinentes dir con salida, ejecute como el mismo usuario).

+2

Estoy apostando a los permisos, ya que están tratando de acceder a algo que es propiedad del Administrador. –

+0

Soy el administrador. – Jonah

+0

@Jonah, estoy cambiando de opinión: esa ruta no parece correcta. Navega hasta el archivo en el Explorador de Windows y copia/pega la ruta desde el menú desplegable de ubicación en la parte superior. –

0

¿su ruta de imagen tal vez?

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

probar esto:

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

usted debe conseguir una cadena similar a la de la línea anterior

0

probar este primero:

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

Podría ser que el espacio en 'Documentos y configuración' está causando este problema .

EDIT:

Uso os.path.join por lo que utiliza el separador de directorio correcto.

+0

Intenté cambiar el directorio a D da el siguiente error 'WindowsError: [Error 2] El sistema no puede encontrar el archivo especificado' – Jonah

+0

Windows puede usar' '/' 'y' '\\' 'indistintamente, por lo que separador no es el problema. –

0

Sólo añadir estas dos líneas en el código

importación OS

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

antes

from pytesser import * 
4

Es necesario instalar primero Tesseract. Simplemente instalar Pytesseract no es suficiente. A continuación, edite la variable tesseract_cmd en pytesseract.py para señalar el binario tessseract. Por ejemplo, en la instalación de lo fijo a

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

no hay una variable tesseracr_cmd en mi pytesser.py, ¿Cómo rectifico este error? –

0

Si está utilizando pytesseract, usted tiene que asegurarse de que ha instalado Tesseract OCR en su sistema. Después de que usted tiene que insertar la ruta de la Tesseract en su código, como a continuación

from PIL import Image 
import pytesseract 

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

Puede descargar el formulario de Tesseract OCR-https://github.com/UB-Mannheim/tesseract/wiki

Cuestiones relacionadas