2012-08-26 16 views
21

Estoy tratando de extraer datos de reciepts y facturas usando Tessaract, estoy usando la versión tesseract 3.02.Tesseract Datos entrenados

Estoy usando solo datos en inglés, pero la precisión de salida es de aproximadamente 60%.

¿Hay datos disponibles entrenados que acabo de reemplazar en la carpeta tessdata

+0

sí lo han i nueva versión, Still salida no es bueno. – nicky

+1

Es imposible decirle cómo mejorar la precisión si no proporciona al menos un archivo de ejemplo típico (enlace a uno). –

+0

esta es la imagen – nicky

Respuesta

29

Ésta es la imagen proporcionada Nicky como un "archivo de ejemplo típico":

typical example file

Mirándolo que había decir claramente: "¡Olvídalo! ¡No puedes entrenar a Tesseract para que reconozca el 100% del texto de este tipo de imagen!"

Sin embargo, que podría entrenarse para tomar mejores fotos con su iPhone 3GS (que es el dispositivo que se utilizó para las imágenes de ejemplo) a partir de este tipo de recibos. Aquí hay algunos consejos:

  • No utilice un fondo oscuro. Use blanco en su lugar.
  • No deje que el papel del recibo se desmorone. Enderezarlo
  • No coloque el recibo de forma suelta en un terreno irregular. Fíjelo en una superficie plana:
    • O colóquelo en una hoja de papel blanco y póngalo sobre él.
    • O use un poco de pegamento y péguelo sobre una hoja blanca de papel sin bordes doblados o esquinas.
  • No utilice una resolución baja como solo 640x480 píxeles (como la imagen de ejemplo). Use uno más alto, como 1280x960 píxeles en su lugar.
  • No utilice la exposición estándar. Configure la cámara para usar un contraste extremadamente alto. Desea que las letras sean negras y el fondo blanco sea realmente blanco (no necesita los grises en la imagen ...)
  • Intente hacerlo de modo que cualquier carácter de una fuente de 10-12 pt use aproximadamente 24-30 píxeles de altura (es decir, hacer que la imagen sea de aproximadamente 300 ppp para un zoom del 100%).

Dicho esto, algo así como el siguiente comando ImageMagick probablemente aumentará tasa de reconocimiento de Tesseract por un cierto grado:

convert        \ 
    http://i.stack.imgur.com/q3Ad4.jpg \ 
    -colorspace gray     \ 
    -rotate 90       \ 
    -crop 260x540+110+75 +repage  \ 
    -scale 166%       \ 
    -normalize       \ 
    -colors 32       \ 
    out1 .png 

Se produce el siguiente resultado:

ImageMagick optimization for OCR

Incluso podría agregar algo como -threshold 30%como la última opción de línea de comandos al comando anterior para conseguir esto:

enter image description here

(que debe jugar un poco con algunas variaciones en el valor 30% para modificar el resultado ...No tengo tiempo para esto.)

2

Puede obtener una imagen postprocesada mucho más limpia antes de usar Tesseract para OCR el texto. Intente utilizar la técnica de Umbral de superficie de fondo (BST) en lugar de otros métodos de umbralización simples. Puede encontrar un libro blanco sobre el tema here.

Existe una implementación de BST para OpenCV que funciona bastante bien https://stackoverflow.com/a/22127181/3475075

Cuestiones relacionadas