2017-03-26 2 views
0

Ich versuche, Bangla-Zeichen aus Bild mit Python zu erkennen, so entschied ich mich zu pytasseract zu verwenden. Zu diesem Zweck i unten Code verwendet haben:Erkennung von Bangla-Zeichen mit pytasseract

import pytesseract 
from PIL import Image, ImageEnhance, ImageFilter 

im = Image.open("input.png") # the second one 
im = im.filter(ImageFilter.MedianFilter()) 
enhancer = ImageEnhance.Contrast(im) 
im = enhancer.enhance(2) 
im = im.convert('1') 
im.save('temp2.png') 
pytesseract.pytesseract.tesseract_cmd = 'C:/Program Files (x86)/Tesseract-OCR/tesseract' 
text = pytesseract.image_to_string(Image.open('temp2.png'),lang="ben") 
print text 

Das Problem ist, dass, wenn ich ein Bild von Englisch Charakter gab erfasst ist. Aber wenn ich schreibe lang="ben" und Erkennung von Bild von Bengali Zeichen läuft mein Code für endlose Zeit oder wie für immer.

P. S: I bengalische Sprache Zugdaten auf tessdata Ordner heruntergeladen haben, und ich versuche, es in PyCharm zu laufen.

Kann mir jemand helfen, dieses Problem zu lösen?

sample of input.png

Antwort

1

Ich habe Bangla(india) Sprache auf Windows. Heruntergeladen ben.traineddata zu TESSDATA_PREFIX, die zu C:\Program Files\Tesseract 4.0.0\tessdata in meinem PC entspricht. Dann läuft,

> tesseract -l ben bangla.jpg bangla_out

in Eingabeaufforderung, und erhielt das Ergebnis unten in 2 Sekunden. Das Ergebnis sieht gut aus, auch wenn ich die Sprache nicht verstehe.

enter image description here

Haben Sie tesseract in Eingabeaufforderung auszuführen versucht, um zu überprüfen, ob es für -l ben funktioniert?

EDIT:

Gebrauchte Spyder, ähnlich wie PyCharm, die mit Anaconda kommt es zu testen. Der Code wurde so geändert, dass Tesseract wie folgt aufgerufen wird.

pytesseract.pytesseract.tesseract_cmd = "C:/Program Files/Tesseract 4.0.0/tesseract.exe" 

Testcode in Spyder:

import pytesseract 
from PIL import Image, ImageEnhance, ImageFilter 
import os 

im = Image.open("bangla.jpg") # the second one 
im = im.filter(ImageFilter.MedianFilter()) 
enhancer = ImageEnhance.Contrast(im) 
im = enhancer.enhance(2) 
im = im.convert('1') 
im.save("bangla_pp.jpg") 

pytesseract.pytesseract.tesseract_cmd = "C:/Program Files/Tesseract 4.0.0/tesseract.exe" 
text = pytesseract.image_to_string(Image.open("bangla_pp.jpg"),lang="ben") 
print text 

Es funktioniert und Ergebnis unterhalb auf dem bearbeiteten Bild erzeugt. Offensichtlich ist das OCR-Ergebnis des verarbeiteten Bildes nicht so gut wie das ursprüngliche.

Ergebnis aus dem verarbeiteten bangla_pp.jpg:

প্রত্যাবর্তনকারীরা 
    তাঁদের দেশে গিয়ে 

    -~~-<~~~~-- 

    প্রত্যাবর্তন-পরবর্তী 
    আর্থিক সহায়তা 
    = পাবেন তার 

Ergebnis aus dem Originalbild, Futtermittel direkt an Tesseract.

Code:

from PIL import Image  
import pytesseract as tess 

print tess.image_to_string(Image.open('bangla.jpg'), lang='ben') 

Ausgang:

প্রত্যাবর্তনকারীরা 
তাঁদের দেশে গিয়ে 

প্রত্যাবর্তন-পরবর্তী 
আর্থিক সহায়তা 
পাবেন তার 
+0

ich es in Befehl versucht haben, aufgefordert, es funktioniert. Aber der obige Code ist in ** pycharm ** geschrieben. In ** pycharm ** läuft es für unbegrenzte Zeit. –

+0

@pial siehe EDIT oben. – thewaywewere