2016-06-10 16 views
11

Ich brauche pytesseract zu verwenden, um Text aus diesem Bild zu extrahieren: enter image description hereVerwendung pytesseract zu erkennen, Text aus Bild

und den Code:

from PIL import Image, ImageEnhance, ImageFilter 
import pytesseract 
path = 'pic.gif' 
img = Image.open(path) 
img = img.convert('RGBA') 
pix = img.load() 
for y in range(img.size[1]): 
    for x in range(img.size[0]): 
     if pix[x, y][0] < 102 or pix[x, y][1] < 102 or pix[x, y][2] < 102: 
      pix[x, y] = (0, 0, 0, 255) 
     else: 
      pix[x, y] = (255, 255, 255, 255) 
img.save('temp.jpg') 
text = pytesseract.image_to_string(Image.open('temp.jpg')) 
# os.remove('temp.jpg') 
print(text) 

und die "temp.jpg" ist enter image description here

Nicht schlecht, aber das Ergebnis des Drucks ist ,2 WW Nicht der richtige Text 2HHH, also wie kann ich diese schwarzen Punkte entfernen?

Antwort

15

Hier ist meine Lösung:

import pytesseract 
from PIL import Image, ImageEnhance, ImageFilter 

im = Image.open("temp.jpg") # the second one 
im = im.filter(ImageFilter.MedianFilter()) 
enhancer = ImageEnhance.Contrast(im) 
im = enhancer.enhance(2) 
im = im.convert('1') 
im.save('temp2.jpg') 
text = pytesseract.image_to_string(Image.open('temp2.jpg')) 
print(text) 
+0

Hallo, wenn ich diesen Code verwenden i unten Fehler „UnicodeEncodeError bin immer: 'charmap' Codec kann in Position nicht kodieren Zeichen 11-12: c haracter Karten ". können Sie einen Weg vorschlagen, um diese – MAK

+0

@MAK zu kommen Sie müssen Win-Unicode-Konsole auf Ihrem Windows –

+0

installieren es gibt eine leere Zeichenfolge zurück ... – Ray