2012-03-06 14 views
6

sto cercando di eseguire il codice seguenteErrore in apertura del file immagine nella 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 

ottengo il seguente errore

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' 

Qualcuno può spiegare quello che sto facendo male qui.

Rinominato il file immagine. Ha spostato il file python e le immagini in una nuova cartella. Spostato la cartella in E unità Ora il codice è il seguente:

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 

Ora l'errore è la seguente:

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

Assicuratevi di avere la strada giusta. 'da os.isfile di importazione del percorso; asser isfile (i)) 'dove attualmente hai' print i'. – AdamKG

+0

Questo file esiste attualmente in quella posizione? –

+0

Sì, il file esiste. – Jonah

risposta

3

L'eccezione è abbastanza chiaro: il file o non esiste, o non hai sufficienti permessi per accedervi. Se nessuno dei due è il caso, fornire le prove (ad esempio, i relativi comandi dir con output, eseguiti come lo stesso utente).

+2

Sto scommettendo sui permessi, dal momento che stanno cercando di accedere a qualcosa di proprietà dell'amministratore. –

+0

Sono l'amministratore. – Jonah

+0

@Jonah, sto cambiando idea - quel percorso non sembra corretto. Passare al file in Esplora risorse e copiare/incollare il percorso dal menu a discesa della posizione in alto. –

0

il percorso dell'immagine forse?

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

provare questo:

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

si dovrebbe ottenere una stringa simile a quella della riga precedente

0

Prova questa prima:

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

Potrebbe essere che lo spazio in "Documenti e Impostazioni" sta causando questo problema .

EDIT:

Usa os.path.join in modo che utilizza il separatore di directory corretta.

+0

Ho provato a cambiare la directory in D restituisce il seguente errore 'WindowsError: [Errore 2] Il sistema non riesce a trovare il file specificato' – Jonah

+0

Windows è in grado di usare' '/' 'e' '\\' 'in modo intercambiabile, quindi il separatore non è il problema –

0

Basta aggiungere queste due righe nel codice

importazione OS

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

prima

from pytesser import * 
4

È necessario installare prima Tesseract. L'installazione di pytesseract non è sufficiente. Quindi modifica la variabile tesseract_cmd in pytesseract.py per puntare il binario tessseract. Per esempio, nella mia installazione ho impostato a

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

non c'è una variabile tesseracr_cmd nel mio pytesser.py, come posso correggere questo errore? –

0

Se si utilizza pytesseract, è necessario assicurarsi di aver installato Tesseract OCR-nel vostro sistema. Dopo di che è necessario inserire il percorso della tesseract nel codice, come di seguito

from PIL import Image 
import pytesseract 

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

È possibile scaricare il modulo di Tesseract OCR-https://github.com/UB-Mannheim/tesseract/wiki

Problemi correlati