Reconocimiento de texto automático

De HackLab
Saltar a: navegación, buscar


Esta guía describe cómo procesar todas las páginas escaneadas sin intervención manual. Todas las instrucciones deben ejecutarse en una terminal GNU/Linux (o cualquier sistema con bash instalado).

Nota: no copies y pegues los comandos, porque NO te van a funcionar tal cual

Instalar los siguientes paquetes (los nombres pueden variar): djvulibre minidjvu unpaper tesseract-spa imagemagick git ghostscript

Clonar o actualizar dl.git, el repositorio donde están los programas ("scripts") para procesar textos.

git clone http://repo.hackcoop.com.ar/dl.git
cd dl
git pull

Extraer las páginas de un PDF

Si el texto son las páginas de un PDF, hay que extraer las páginas individuales:

mkdir NombreDelLibro
cd NombreDelLibro
pdftoppm -tiff Libro.pdf Libro

Reemplazar NombreDelLibro por el nombre del libro, Libro.pdf por el nombre y la ubicación del PDF y Libro por el prefijo que queremos que tengan las páginas individuales.

Esto va a crear un archivo .tif por cada página del PDF original.

Procesar las páginas con OCR

Una vez que tenemos las páginas por separado (vengan de un PDF o del escaner), las procesamos con el script book2txt:

cd NombreDelLibro
book2txt *.tif

Esto realiza lo siguiente:

  • Toma todas las páginas originales (.)
  • Las convierte al formato PBM (01_pbm)
  • Las endereza con unpaper (02_unp)
  • Las limpia con minidjvu (03_djvu)
  • Las vuelve a convertir a tif (04_tif)
  • Reconoce el texto con tesseract (05_txt)

El proceso se puede interrumpir en cualquier momento con ctrl+c, al correrlo de vuelta el programa retoma las páginas por donde las dejó. Si no encuentra ninguna, empieza desde cero ;)

Al finalizar, el texto de cada página va a estar en el directorio 05_txt.

Generar un archivo DjVu con capa de OCR

Para subir el libro procesado al Archivo Activo, hay que volver a convertirlo a un DjVu con capa de OCR:

cd NombreDelLibro
djvm -create Libro.djvu 03_djvu/*.djvu

Esto crea el archivo Libro.djvu a partir de todas las páginas individuales del directorio 03_djvu.

Luego, se le agrega el texto:

cd NombreDelLibro/05_txt
txt2djvu ../Libro.djvu *.txt

Esto toma todas las páginas convertidas a texto de 05_txt y las agrega al libro en formato DjVu.

Tips

Se puede limpiar un poco el txt antes de añadírselo al djvu:

  • Reemplazar los guiones largos, comillas especiales y f's con ligaturas en todo el texto:

sed -e 's/—/-/g' -e 's/[“”]/"/g' -e 's/fi/fi/g' -e "s/’/'/g" -i 05_txt/*.txt