2016-07-21 7 views
2

Ich verwende Python 3.x und mit dem folgenden Code Bild in Text konvertieren:Bild zu Text Python

from PIL import Image 
from pytesseract import image_to_string 

image = Image.open('image.png', mode='r') 
print(image_to_string(image)) 

ich die folgende Fehlermeldung erhalten:

Traceback (most recent call last): 
    File "C:/Users/hp/Desktop/GII/Image_to_text.py", line 12, in <module> 
    print(image_to_string(image)) 
    File "C:\Users\hp\Downloads\WinPython-64bit-3.5.1.2\python-3.5.1.amd64\lib\site-packages\pytesseract\pytesseract.py", line 161, in image_to_string 
    config=config) 
    File "C:\Users\hp\Downloads\WinPython-64bit-3.5.1.2\python-3.5.1.amd64\lib\site-packages\pytesseract\pytesseract.py", line 94, in run_tesseract 
    stderr=subprocess.PIPE) 
    File "C:\Users\hp\Downloads\WinPython-64bit-3.5.1.2\python-3.5.1.amd64\lib\subprocess.py", line 950, in __init__ 
    restore_signals, start_new_session) 
    File "C:\Users\hp\Downloads\WinPython-64bit-3.5.1.2\python-3.5.1.amd64\lib\subprocess.py", line 1220, in _execute_child 
    startupinfo) 
FileNotFoundError: [WinError 2] The system cannot find the file specified 

Bitte beachten Sie, dass ich habe das Bild in das gleiche Verzeichnis geschrieben, in dem mein Python vorhanden ist. Auch es wird kein Fehler auf image = Image.open('image.png', mode='r') ausgelöst, aber es erhöht sich auf der Linie print(image_to_string(image)).

Irgendeine Idee, was hier falsch sein könnte? Danke

+0

Dieser Code funktioniert für mich, wenn ich beide Dateien im selben Verzeichnis habe und das Bild einige Wörter enthält. Könnte etwas über absolute und relative Pfade sein ... – Ohumeronen

+0

Sie können auch versuchen: os.path importieren; os.path.exists ('image.png') – Ohumeronen

+1

Ich benutze diesen Code jetzt: 'if (os.path.exists ('image.png')): image = Bild.open ('image.png') print (image_to_string (image)) sonst: print ('Existiert nicht') 'aber bekomme den gleichen Fehler, der bedeutet, dass die Datei existiert, aber es wird ein Fehler angezeigt, wenn man versucht, den Text zu lesen. – muazfaiz

Antwort

3

Sie müssen tesseract installiert und in Ihrem Weg zugänglich sein.

According to source, pytesseract ist lediglich ein Wrapper für subprocess.Popen mit Tesseracts binären als binärem auszuführen. Es führt keine Art von OCR selbst aus.

Relevante Teil Quellen:

def run_tesseract(input_filename, output_filename_base, lang=None, boxes=False, config=None): 
    ''' 
    runs the command: 
     `tesseract_cmd` `input_filename` `output_filename_base` 

    returns the exit status of tesseract, as well as tesseract's stderr output 
    ''' 
    command = [tesseract_cmd, input_filename, output_filename_base] 

    if lang is not None: 
     command += ['-l', lang] 

    if boxes: 
     command += ['batch.nochop', 'makebox'] 

    if config: 
     command += shlex.split(config) 

    proc = subprocess.Popen(command, 
      stderr=subprocess.PIPE) 
    return (proc.wait(), proc.stderr.read()) 

einen anderen Teil der Quelle zitierend:

# CHANGE THIS IF TESSERACT IS NOT IN YOUR PATH, OR IS NAMED DIFFERENTLY 
tesseract_cmd = 'tesseract' 

So schnellen Weg Tesserakts Weg der Veränderung wäre:

import pytesseract 
pytesseract.tesseract_cmd = "/absolute/path/to/tesseract" # this should be done only once 
pytesseract.image_to_string(img) 
+0

Ich denke, Sie haben recht, aber ich habe 'tesseract' installiert, aber es gibt immer noch den gleichen Fehler. Tatsächlich ist der brutale Teil, dass, wenn ich das Bild mit der 'image.show()' Methode öffne, es das Bild öffnet, aber in der nächsten Zeile, wenn ich das Bild verarbeitet, wird FileNotFoundError ausgelöst.Ich bin völlig stecken geblieben :( – muazfaiz

+0

'FileNotFoundError' ist aus Mangel an' tesseract', nicht Mangel an Bilddatei selbst. Siehe Bearbeiten meiner Antwort. –

-1

Ihr "aktuelles" Verzeichnis ist nicht wo Sie denken.

==> Sie können den vollständigen Pfad zum Bild angeben, zum Beispiel: image = Image.open (r'C: \ Benutzer \ hp \ Downloads \ WinPython-64bit-3.5.1.2 \ python-3.5. 1.amd64 \ image.png ', mode =' r ')

0

Sie herunterladen müssen Tesseract OCR-Setup. Verwenden Sie diesen Link, um die Einrichtung zum Download: http://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-setup-3.05.01.exe

Dann schließen Sie diese Zeile im Code Tesserakts ausführbare zu verwenden: pytesseract.pytesseract.tesseract_cmd = 'C: \ Program Files (x86) \ Tesseract-OCR \ Tesserakts'

Dies ist der Standardort, an dem Tesseract installiert wird.

Das ist es. Ich habe diese Schritte auch ausgeführt, um den Code an meinem Ende auszuführen.

Hoffe, das wird helfen.