Training tesseract OCR
Tesseract es probablemente el motor de OCR mas preciso disponible actualmente. Combinado con Leptonica Image Processing Library puede leer una gran variedad de formatos de imágen y convertirlos a texto en unos 60 idiomas distintos. Fué uno de los 3 mejores motores de OCR en 1995 UNLV Accuracy test. Entre 1995 y 2006 se ha trabajado poco en él, pero desde entonces ha sido ampliamente mejorado por Google. Está liberado bajo licencia Apache License 2.0, esto es, se permite su uso comercial.
Tesseract-ocr, está incluído en los repositorios de la mayor parte de distribuciones Linux y también tiene versión para windows. Están disponibles para su uso, bases de datos para reconocimiento de los principales idiomas.
Si queremos incluír el reconocimiento de nuevas tipografías o idiomas, tendremos que hacer training del motor de OCR. Este training, se lleva a cabo de la siguiente manera:
1. Generamos los archivos .box a partir de imágenes que contengan textos con dichas tipografías y/o idiomas. Esta generación, se realiza de forma semi-automática con programas como QT Box Editor.
1.1 El uso de QT Box Editor, pasa primero por la instalación y compilación de éste. Las dependencias son QT4-dev y alguna más. Una vez compilado, se generará un binario que debemos ejecutar y configurar (Edit->Settings->Tesseract) antes de abrir la primera imágen para la generación de archivos .box .
1.2 Una vez configurado, cerramos en programa y lo volvemos a abrir, para posteriormente, abrir la imágen que contenga los caracteres que queramos reconocer. Al abrir la imágen, nos preguntará si queremos generar un nuevo archivo .box, a lo que contestaremos que sí.
1.3 Ahora tenemos que editar las boxes resultantes, ajustando los valores y los recuadros. Shortcuts de interés son : Ctr+1 ; Unir celdas , F2 Editar texto de celda y Ctrl+2 Separar celdas por la mitad.
1.5 No olvideis salvar el archivo .box a medida que vais trabajando en él, ya que, si falla algo, perdereis el trabajo.
1.6 Una vez Generado el archivo .box, pasamos al punto siguiente: Generación del archivo de training.
2. Para generar un archivo lng.traineddata, necesitaremos realizar una serie de pasos, utilizando diferentes programas desde la línea de comandos. Dichos pasos están detallados aquí No obstante, podeis utilizar dos scripts programados por mí, que facilitan dicha tarea.
train.sh y train2.sh
El primer script, admite n imágenes, que deberán tener asociados los archivos .box correspondientes. P.ej. img1.png img1.box Antes de ejecutarlo, deberíamos editar el script y modificar los parámetros de la parte superior del script, en concreto las variables lang y font.
La ejecución es como sigue:
./train.sh <imagen1.ext> [imagen2.ext ...] </imagen1.ext>
Si la ejecución va bien y no arroja mensajes de error, tendremos disponible el archivo sp2.traineddata, que deberemos copiar al subdirectorio tessdata en tesseract-ocr. En mi sistema (Debian) la ruta es /usr/share/tesseract-ocr/tessdata/
Una vez copiado el archivo de training, podremos realizar ocr de la siguiente manera:
tesseract <imagen> <output|-> -l <lang> </lang></output|-></imagen>
3. Si queremos realizar más training, esta vez de forma automática, podremos hacerlo con el programa train2.sh, que nos generará automáticamente los archivos .box que queramos, a partir de imágenes, de la siguiente manera:
./train2.sh <imagen1.ext> [imagen2.ext ...] </imagen1.ext>
Una vez tengamos los archivos .box, pasaríamos nuevamente al programa train.sh para regenerar el archivo .traineddata.
Copiamos el archivo lng.traineddata al directorio correspondiente y ya tenemos funcional la nueva fuente y/o idioma correspondiente.
Si teneis dudas, flames, etc... no dudeis en comentar.
Saludos y gracias por la lectura.
Referencias:
http://www.resolveradiologic.com/blog/2013/01/15/training-tesseract/
https://code.google.com/p/tesseract-ocr/
blog comments powered by