es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

PyTesseract: proceso de agregar caracteres a una lista negra en una posición específica

Estoy trabajando en Python utilizando PyTesseract y OpenCV.

Tengo una foto que contiene mezcla de números y letras. La foto es de una fecha y sigue el formato DDMMMYY, por ejemplo 01JAN22. Tesseract tiene problemas para distinguir entre el 0 y la O, y algunos otros errores de mezcla entre letras y números.

¿Hay alguna manera de poner en una lista negra / lista blanca las letras correspondientes a caracteres específicos en una cadena? Sé que puedo poner en una lista negra / lista blanca los caracteres de la función image-to-string completa usando config="-c tessedit_char_blacklist=".

Por ejemplo:
Para el carácter [0], lista blanca de 0-3 (ya que es una fecha, será 0, 1, 2 o 3).

La imagen de abajo es un ejemplo de lo que estoy trabajando. Actualmente, Tesseract devuelve el resultado OSJUNZ2, que es muy similar a 05JUN22.

Gracias por tu ayuda.

Imagen de ejemplo: Aquí

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, hay una forma de permitir únicamente ciertos caracteres en posiciones específicas de la cadena. Puede modificar el parámetro config en la función pytesseract.image_to_string() para incluir la opción tessedit_char_whitelist, con una cadena de caracteres permitidos para cada posición en la cadena esperada.

    Por ejemplo, para permitir únicamente los números del 0 al 3 para el primer carácter, y las letras de la A a la Z para los caracteres del segundo al cuarto, puedes usar lo siguiente:

    import pytesseract
    from PIL import Image
    
    # Leer archivo de imagen
    img = Image.open('example_image.png')
    
    # Permitir únicamente ciertos caracteres en posiciones específicas
    config = '--psm 6 -c tessedit_char_whitelist=0123 --oem 3 -c tessedit_char_whitelist=ABCDEFGHIJKLMNOPQRSTUVWXYZ --user-words my-words.txt --user-patterns my-patterns.txt'
    
    # Obtener texto de la imagen
    text = pytesseract.image_to_string(img, config=config)
    
    print(text)
    

    Luego, puedes procesar aún más el texto obtenido para asegurarte de que coincida con el formato esperado DDMMMYY.

Comments are closed.