Training Tesseract OCR

  • por javier
  • 21 de Marzo de 2023

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 Disqus

Detecta dispositivos USB no autorizados en Linux (Extensible Python Snippet)

  • por javier
  • 21 de Marzo de 2023

La proliferación de dispositivos USB maliciosos, para hacerse con el control de nuestra máquina están a la orden del día.

Los hay muy variados y de diferente funcionalidad, y permiten un amplio rango de posibilidades a la hora de hackear nuestra máquina.

Contra esto, hay varias soluciones, como USBGuard, que no funciona bien en distros estables por problema de dependencias.

También hay otras soluciones como USB Canary que permite twittear y enviar sms con Twilio para avisarnos de dichos ataques.

No obstante, me he permitido el lujo de crear un snippet algo más abierto y sencillo para que modifiqueis a vuestro antojo y en base a vuestras necesidades.

Se me ocurre integrarlo con OSSEC, por ejemplo, con una regla e incorporarlo vuestro sistema de alertas..

Data Entry System. Un Framework Completo para DATA ENTRY

  • por javier
  • 22 de Marzo de 2023

Hace tiempo publiqué un framework. Me llevó varios años de trabajo y quedé más o menos satisfecho con el producto final.

Se trata de un Framework de Data Entry (Data Entry System). Este framework permite hacer cosas como, a partir de imágenes, procesar con OCR , grabación de datos, verificación de datos , estadísticas y exportación de datos en formato csv.

El framework está diseñado para la actuación de 3 roles diferentes dentro de la aplicación:

Posibles aplicaciones de Deep Learning

  • por javier
  • 22 de Marzo de 2023

Machine Learning y Deep Learning comenzaron su andadura en el siglo pasado y están de moda últimamente gracias a una mayor capacidad de cómputo en nuestras máquinas. En un futuro cercano, las aplicaciones de dicha tecnología aumentarán exponencialmente y acabarán siendo de uso cotidiano para cualquier programador. Podemos darle muchos usos al Machine Learning y a Deep Learning. En éste artículo me centraré en Deep Learning. En Deep Learning se utilizan Redes Neuronales ya sean Convolutional Neural Networks, Recurrent Neural Networks, Sequence Models… cada una de ellas tiene un uso específico pero nos centraremos más en los usos que se dan a dichas redes. Algunos usos son muy conocidos, pero solo el futuro podrá darnos la sorpresa de aplicaciones novedosas y poco conocidas hasta ahora.

Fast Wipe 2.0 Improved, English Tutorial

  • por javier
  • 22 de Marzo de 2023
None

        _____         _    __        ___
        |  ___|_ _ ___| |_  \ \      / (_)_ __   ___
        | |_ / _  / __| __|  \ \ /\ / /| | '_ \ / _ \
        |  _| (_| \__ \ |_    \ V  V / | | |_) |  __/
        |_|  \__,_|___/\__|    \_/\_/  |_| .__/ \___|
        ---------------------------------|_|----------WIPE-v2.0
         File & Directory Destroyer

Fast Wipe is an utility that works from command line (cmd).
Before continue, you need to know basic cmd usage
(cd, dir, del, directories or folders, files, wildcards...)
If you are not familiarized with that, this program is not for you.
-OR- you should learn the basics of cmd usage.

First of all, this program needs administrative rights (root or Administrator)
to work successfully in most cases.

Update cookies preferences