2012-03-06 54 views
6

Tôi cố gắng để thực hiện đoạn mã sauLỗi trong việc mở tập tin hình ảnh trong 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 

tôi nhận được lỗi sau

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' 

Ai đó có thể xin giải thích những gì tôi đang làm sai ở đây.

Đổi tên tệp hình ảnh. Đã đổi tệp python và hình ảnh thành thư mục mới. Chuyển thư mục E ổ Bây giờ mã được như sau:

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 

Bây giờ lỗi như sau:

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

Đảm bảo bạn có con đường đúng đắn. 'từ os.đường dẫn nhập isfile; khẳng định isfile (i)) 'nơi bạn hiện đang có' in i'. – AdamKG

+0

Tệp đó hiện có tồn tại ở vị trí đó không? –

+0

Có tệp tồn tại. – Jonah

Trả lời

3

Trường hợp ngoại lệ là khá rõ ràng: các tập tin hoặc không tồn tại, hoặc bạn thiếu đủ quyền để truy cập nó. Nếu không phải vậy, vui lòng cung cấp bằng chứng (ví dụ: dir lệnh có liên quan với đầu ra, chạy với cùng một người dùng).

+2

Tôi đang đặt cược vào quyền, vì họ đang cố gắng truy cập nội dung nào đó do Quản trị viên sở hữu. –

+0

Tôi là quản trị viên. – Jonah

+0

@Jonah, tôi đang thay đổi ý định của mình - con đường đó không chính xác. Điều hướng đến tệp trong Windows Explorer và sao chép/dán đường dẫn từ trình đơn thả xuống vị trí ở trên cùng. –

0

đường dẫn hình ảnh của bạn có thể?

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

thử điều này:

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

bạn sẽ nhận được một chuỗi tương tự như một trong những dòng trước

0

Hãy thử điều này đầu tiên:

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

Nó có thể là rằng không gian trong 'Tài liệu và Cài đặt' đang gây ra sự cố này .

CHỈNH SỬA:

Sử dụng os.path.join để sử dụng dấu phân cách thư mục chính xác.

+0

Tôi đã thử thay đổi thư mục thành D nó cho lỗi sau 'WindowsError: [Lỗi 2] Hệ thống không thể tìm thấy tệp được chỉ định' – Jonah

+0

Windows có thể sử dụng' '/' 'và' '\\' 'thay thế cho nhau, vì vậy dấu tách không phải là vấn đề. –

0

Chỉ cần thêm hai dòng sau trong mã của bạn

nhập khẩu OS

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

trước

from pytesser import * 
4

Bạn cần cài đặt Tesseract đầu tiên. Chỉ cần cài đặt pytesseract là không đủ. Sau đó chỉnh sửa biến tesseract_cmd trong pytesseract.py để trỏ nhị phân tessseract. Ví dụ, trong cài đặt của tôi, tôi đặt nó là

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

không có biến tesseracr_cmd trong pytesser.py của tôi, Làm cách nào để khắc phục lỗi này? –

0

Nếu bạn đang sử dụng pytesseract, bạn phải chắc chắn rằng bạn đã cài đặt Tesseract OCR-trong hệ thống của bạn. Sau đó bạn phải chèn đường dẫn của Tesseract trong mã của bạn, như sau

from PIL import Image 
import pytesseract 

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

Bạn có thể tải về các hình thức Tesseract OCR-https://github.com/UB-Mannheim/tesseract/wiki

Các vấn đề liên quan