2011-09-03 18 views
15

Estoy escribiendo una aplicación para escanear números de una imagen.Tesseract confunde dos números

Los números están utilizando la fuente OCR-B y también pueden contener + y > caracteres.

Ésta es mi imagen de la fuente:

source image

Las exploraciones mediante Tesseract no eran muy buenos, aunque limitando el juego de caracteres que los personajes mencionados. Como no encontré ningún archivo de entrenamiento OCRB para Tesseract, decidí entrenarlo yo mismo.

Creé this training image e hice un archivo de caja de él. El archivo de caja es correcto, todas las letras coinciden correctamente.

Luego hice todos los pasos described here para crear los otros archivos necesarios.

Usando este conjunto de datos testados de OCR-B recientemente entrenado, obtengo resultados bastante buenos en la imagen de origen, con un pequeño error: Todos 1 s se confunden con 8 sy viceversa. El comando utilizado para procesar la imagen era

$ tesseract esr2c.tif ocrb-esr2c -l ocrb 

y la salida de la imagen de origen era

0800000001456> 8 00000195731208 8 01050008 023+ 08 0301226> 20

Si se cambia todo 1 s y 8 s y compararlo con la imagen de origen, la salida sería correcta (a excepción de las dos últimas letras que puedo ignorar).

¿Cómo pudo suceder esto? ¿Cometí algún error en el proceso de entrenamiento? ¿Cómo puedo arreglarlo?

+0

no hay implicancia de seguridad al publicar esos datos aquí? –

+0

@andrew no realmente. solo una factura vieja, inválida sin información personal en la identificación de referencia. –

+0

@DaniloBargen: Si es posible, ¿puede compartir los datos de entrenamiento para la fuente OCRB? –

Respuesta

6

Es probable que en algún lugar de su archivo de caja tenga valores (caracteres) incorrectos para 1 y 8. Puede verificar usando el programa jTessBoxEditor. De ser así, corrija, vuelva a generar el archivo de datos del idioma y vuelva a intentarlo.

+0

No puedo hacer que jTessBoxEditor funcione (algunos problemas con la biblioteca de imageio), pero verifiqué el archivo de cuadro con [OwlBoxer] (http://code.google.com/p/owlboxer/) (en realidad procesé el archivo usando esa herramienta) y todo parece correcto. –

+0

También comprobé el archivo de caja usando tesseractTrainer.py y aún no encontré ningún error. –

+0

¿Puedes publicar un enlace a tu archivo de caja? ¿Para qué versión de Tesseract estás entrenando? – nguyenq

2

He entrenado tesseract 2.04 después de 1 mes de esfuerzos para OCR Una fuente extendida. Está funcionando muy bien y muestra por encima de 90 Precisión con tamaño de fuente 14.

La imagen de entrenamiento debe ser alta Imagen de contraste. Uso "GIMP" editor de imágenes y que tras Menú colores-> Info-> valor de la desviación estándar Histgram- Leer colores-> Threshould -> Escribir "valor de la desviación estándar" valor Threshould Guardar imagen Lo utilizan para la formación como.

Revise y edite su archivo de caja usando "qt-box-editor-1.06.exe" .Es muy fácil de usar. Marque todos los cuadros y caracteres en él. Es muy importante. En algún lugar de su archivo de caja tiene caracteres incorrectos para 1 y 8.

Ejecute otros cmds.

+0

Ya he resuelto el problema (ver comentario en otra respuesta). El orden de los cuadros era incorrecto en jTessBoxEditor. Gracias de todos modos. –

+0

Entrené tesseract 3.02 para OCR-B. Regresa con una precisión del 100% en el mismo grupo de entrenamiento. Pero cuando miro con imágenes de la vida real, tengo una precisión casi nula. ¿Funcionó para ustedes? – Masri