python - tesseractnotfounderror - usa pytesseract para reconocer el texto de la imagen
tesseract is not installed or it''s not in your path windows (4)
Necesito usar pytesseract para extraer texto de esta imagen:
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)
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 pequeño avance con la eliminación del 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)
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(''https://i.stack.imgur.com/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)
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)