sábado, 13 de abril de 2019

Como extraer el texto de un documento PDF mediante OCR con tesseract

El objetivo es convertir un archivo PDF digitalizado directamente de un documento en un archivo de texto.

¿Qué necesitamos?

ImageMagic y Tesserant

sudo apt install imagemagick tesseract-ocr

Desactivamos las restricciones de ImageMagick

Hacemos una copia de seguridad del archivo del políticas de ImageMagick por si tenemos que volver atrás:
sudo cp /etc/ImageMagick-6/policy.xml /etc/ImageMagick-6/policy.xml_backup
Hay que cambiar la línea de  /etc/ImageMagick-6/policy.xml que contiene:
<policy domain="coder" rights="none" pattern="{GIF,JPEG,PNG,WEBP}" />
Por
<policy domain="coder" rights="read|write" pattern="{GIF,JPEG,PNG,WEBP,PDF}" />

Comandos para la conversión

Convertimos a tiff, pasamos el ocr y borramos el tiff:
convert -density 300 mi_doc.pdf -depth 8 mi_doc.tiff
tesseract mi_doc.tiff mi_doc.txt.pdf spa
rm mi_doc.tiff
En la línea del commando tesseract el tercer parámetro es el idioma, en nuestro caso español, si no se pone nada usa inglés y podemos saber que idiomas hay disponibles con el comando:
tesseract --list-langs

Posibles problemas

Si la imagen no está lo suficiente limpia o no es adecuada nos podemos encontrar errores como:
  • Image too small to scale!! (2x36 vs min width of 3)
  • LSTM: Training - Image not trainable
  • Tesseract not detecting text 
Las razones pueden ser diversas: las imágenes están rotadas, no tienen nitidez, poca resolución, etc... a lo mejor con algún programa gráfico como Gimp puedes limpiar el tiff y conseguir mejores resultados.

Es cuestión de prueba y error y si es necesario ampliar la información con tu buscador favorito en internet.

No hay comentarios:

Publicar un comentario