2016-06-10 18 views
11

muszę korzystać pytesseract wyodrębnić tekst z obrazka: enter image description hereużycie pytesseract rozpoznawać tekst z obrazka

i kod:

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) 

i "temp.jpg" jest enter image description here

Nieźle, ale wynikiem wydruku jest ,2 WW Nieprawidłowy tekst 2HHH, więc jak mogę usunąć te czarne kropki?

Odpowiedz

15

Oto moje rozwiązanie:

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

Cześć, kiedy użyć tego kodu otrzymuję poniżej błędu „UnicodeEncodeError:«charmap»kodek nie może kodować znaków w pozycji 11-12: c haracter mapy do ". czy możesz zaproponować sposób, aby nadszedł ten – MAK

+0

@MAK Musisz zainstalować Win-Unicode-konsoli w systemie Windows –

+0

zwraca pusty ciąg ... – Ray