Error al intentar utilizar pytesseract
Estoy tratando de usar pytesseract para resolver este captcha pero aún no obtengo ningún resultado.
Aquí tienes el código que utilizo:
import pytesseract
from PIL import Image
path = 'Captcha.jpg'
img = Image.open(path)
thresh = 200
fn = lambda x: 0 if x > thresh else 255
r = img.convert('L').point(fn, mode='1')
r.save('temp.jpg')
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
text = pytesseract.image_to_string(r)
print(text)
No imprime nada.
No estoy seguro de cómo funciona el algoritmo image_to_string, pero creo que el problema podría estar en los ángulos de los dígitos y esas líneas en el fondo. ¿Es cierto? Si es cierto, ¿hay algún método que pueda utilizar?
davy.ai
Solución para el funcionamiento incorrecto de pytesseract en una imagen de Captcha
El problema con pytesseract que no funciona en la imagen de Captcha dada puede deberse a los dígitos inclinados y las líneas en el fondo. Para resolver este problema, podemos usar OpenCV (Biblioteca de Visión Computacional de Código Abierto) para preprocesar la imagen y facilitar el reconocimiento de los caracteres por parte de pytesseract.
Aquí tienes un código actualizado que utiliza OpenCV y pytesseract para resolver la imagen de Captcha:
El código anterior preprocesa la imagen convirtiéndola a escala de grises, aplicando umbral y luego dilatación para facilitar el reconocimiento de los caracteres. Luego guarda la imagen preprocesada y aplica pytesseract para reconocer los caracteres en la imagen preprocesada.
La bandera
config='--psm 6'
se utiliza para especificar el modo de segmentación de página para pytesseract. En este caso, utilizamos el modo 6 que asume un único bloque uniforme de texto alineado verticalmente.Con este código, deberíamos poder reconocer con éxito los caracteres en la imagen de Captcha.