Pregunta Tesseract Entrenamiento de datos


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

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

¿Hay algún dato entrenado que acabo de reemplazar en la carpeta tessdata?


22
2017-08-26 17:14


origen


Respuestas:


Esta es la imagen nicky proporcionada como un "archivo de ejemplo típico":

typical example file

Al mirarlo, diría claramente: "¡Olvídalo, nicky! ¡No puedes entrenar a Tesseract para que reconozca el 100% del texto de este tipo de imagen!"

Sin embargo, podrías entrenarte para hacer mejores fotos con tu iphone 3gs (ese es el dispositivo que se usó para las imágenes de ejemplo) de ese tipo de recibos. Aquí hay algunos consejos:

  • No uses un fondo oscuro. Use blanco en su lugar.
  • No permita que el papel del recibo se desmorone. Enderezarlo
  • No coloque el recibo sin apretar en un terreno irregular. Fijarlo a una superficie plana:
    • Ya sea que lo coloque sobre una hoja de papel blanco y coloque una placa de vidrio sobre él.
    • O use un poco de pegamento y péguelo en una hoja blanca de papel sin bordes o esquinas dobladas.
  • No use 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 use 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, haga que la imagen sea de aproximadamente 300 ppp para un zoom del 100%).

Dicho esto, algo así como el siguiente comando ImageMagick probablemente aumentará la tasa de reconocimiento de Tesseract en 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

Produce el siguiente resultado:

ImageMagick optimization for OCR

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

enter image description here

(Deberías jugar un poco con algunas variaciones al 30% valor para ajustar el resultado ... No tengo tiempo para esto.)


29
2017-08-29 19:28



Tomar información precisa de un recibo no es imposible con tesseract. Tendrá que agregar filtros de imagen y algunas otras herramientas como OpenCV, NumPy ImageMagick junto con Tesseract. Hubo una presentación en PyCon 2013 por Franck Chastagnol donde describe cómo lo hizo su compañía.

Aqui esta el link: http://pyvideo.org/video/1702/building-an-image-processing-pipeline-with-python


12
2018-05-08 10:28



Puede obtener una imagen procesada 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 aquí.

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


3
2018-01-09 21:27



Necesitaba exactamente lo mismo y probé algunas optimizaciones de imagen para mejorar la salida

puedes encontrar mi experimento con Tessaract aquí

https://github.com/aryansbtloe/ExperimentWithTesseract


0
2018-05-28 11:24