2016-06-10 14 views
11

ho bisogno di usare pytesseract per estrarre il testo da questa immagine: enter image description hereuso pytesseract di riconoscere il testo da un'immagine

e il codice:

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) 

e la "temp.jpg" è enter image description here

Non male, ma il risultato della stampa è ,2 WW Non il testo corretto 2HHH, quindi come posso rimuovere quei punti neri?

risposta

15

Ecco la mia soluzione:

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

Ciao, quando uso questo codice che sto ottenendo sotto l'errore "UnicodeEncodeError: 'charmap' codec non può codificare i caratteri in posizione 11-12: c mappe haracter a ". puoi suggerire un modo per venire questo – MAK

+0

@MAK Avrai bisogno di installare win-unicode-console su Windows –

+0

restituisce una stringa vuota ... – Ray

Problemi correlati