usa pytesseract para reconocer el texto de la imagen

Necesito usar pytesseract para extraer texto de esta imagen: introduzca la descripción de la imagen aquí

y el código:

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) 

y el “temp.jpg” es introduzca la descripción de la imagen aquí

No está mal, pero el resultado de la impresión es ,2 WW No es el texto correcto 2HHH , entonces, ¿cómo puedo eliminar esos puntos negros?

    Aquí está mi solución:

     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) 

    Para extraer el texto directamente de la web, puede probar la siguiente implementación (making use of the first image) :

     import io import requests import pytesseract from PIL import Image, ImageFilter, ImageEnhance response = requests.get('http://sofes.miximages.com/python/HWLay.gif') img = Image.open(io.BytesIO(response.content)) img = img.convert('L') img = img.filter(ImageFilter.MedianFilter()) enhancer = ImageEnhance.Contrast(img) img = enhancer.enhance(2) img = img.convert('1') img.save('image.jpg') imagetext = pytesseract.image_to_string(img) print(imagetext) 

    Aquí está mi pequeño avance al eliminar el ruido y la línea arbitraria dentro de cierto rango de frecuencia de color.

     import pytesseract from PIL import Image, ImageEnhance, ImageFilter im = Image.open(img) # img is the path of the image im = im.convert("RGBA") newimdata = [] datas = im.getdata() for item in datas: if item[0] < 112 or item[1] < 112 or item[2] < 112: newimdata.append(item) else: newimdata.append((255, 255, 255)) im.putdata(newimdata) 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'),config='-c tessedit_char_whitelist=0123456789abcdefghijklmnopqrstuvwxyz -psm 6', lang='eng') print(text) 

    Tengo un enfoque diferente de pytesseract para nuestra comunidad. Aquí está mi enfoque

     import pytesseract from PIL import Image text = pytesseract.image_to_string(Image.open("temp.jpg"), lang='eng', config='--psm 10 --oem 3 -c tessedit_char_whitelist=0123456789') print(text)