2012-03-06 13 views
6

próbuję wykonać następujący kodBłąd podczas otwierania pliku obrazu w 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 

I pojawia się następujący błąd

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' 

Czy ktoś mógłby wyjaśnić, co robię źle tutaj.

Zmieniono nazwę pliku obrazu. Przesunięto plik python i obrazy do nowego folderu. Przesunięty folder na dysku E Teraz kod wygląda następująco:

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 

Teraz błąd jest w następujący sposób:

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

Sprawdź, czy masz właściwą ścieżkę. 'z os.ścieżka importuj plik isfile; assert isfile (i)) 'gdzie aktualnie masz' print i'. – AdamKG

+0

Czy ten plik istnieje obecnie w tej lokalizacji? –

+0

Tak, plik istnieje. – Jonah

Odpowiedz

3

Wyjątkiem jest całkiem jasne: plik albo nie istnieje, albo brak wystarczających uprawnień, aby uzyskać do niego dostęp. Jeśli tak nie jest, należy dostarczyć dowody (np. Odpowiednie komendy dir z danymi wyjściowymi, uruchomić jako ten sam użytkownik).

+2

Stawiam na uprawnienia, ponieważ próbują uzyskać dostęp do czegoś posiadanego przez administratora. –

+0

Jestem administratorem. – Jonah

+0

@Jonah, zmieniam zdanie - ta ścieżka nie wygląda poprawnie. Przejdź do pliku w Eksploratorze Windows i skopiuj/wklej ścieżkę z listy rozwijanej lokalizacji u góry. –

0

Twoja ścieżka obrazu może?

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

spróbuj tego:

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

należy uzyskać ciąg podobny do tego z poprzedniej linii

0

Spróbuj najpierw:

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

To może być że miejsce w "Dokumentach i ustawieniach" powoduje ten problem .

EDIT:

Zastosowanie os.path.join więc używa poprawnej separator katalogów.

+0

Próbowałem zmienić katalog na D, który daje następujący błąd 'WindowsError: [Błąd 2] System nie może znaleźć określonego pliku' – Jonah

+0

Windows potrafi używać ''/''' '' '' '' '' '' separator nie jest problemem. –

0

Wystarczy dodać te dwie linie w kodzie

importowej OS

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

przed

from pytesser import * 
4

Musisz zainstalować tesseract pierwszy. Samo zainstalowanie pytesseract nie wystarczy. Następnie edytuj zmienną tesseract_cmd w pytesseract.py, aby wskazać plik binarny tessseract. Na przykład w mojej instalacji ustawić go do

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

W moim pytesser.py nie ma zmiennej tesseracr_cmd, Jak mogę poprawić ten błąd? –

0

Jeśli używasz pytesseract, trzeba upewnić się, że masz zainstalowane tesseract-OCR w systemie. Potem trzeba wstawić ścieżkę tesserakt w kodzie, jak poniżej

from PIL import Image 
import pytesseract 

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

można pobrać formularz Tesseract-OCR https://github.com/UB-Mannheim/tesseract/wiki

Powiązane problemy