Página de Alejandro Muñoz Fernández

OCR en archivos PDF escaneados con OCRmyPDF

Si alguna vez has intentado copiar o buscar texto en un PDF escaneado, ya habrás visto que no funciona: básicamente es solo un conjunto de imágenes. Para solucionarlo, necesitas aplicar un proceso de reconocimiento óptico de caracteres (OCR).

Mi herramienta de referencia para esto es https://ocrmypdf.readthedocs.io/en/latest/, que añade una capa de texto sobre el archivo original usando el motor https://github.com/tesseract-ocr/tesseract.

1. Instalación

En sistemas basados en Debian puedes instalar todo lo necesario con:

sudo apt install ocrmypdf pngquant unpaper tesseract-ocr tesseract-ocr-spa

Nota: Si quieres usar la optimización avanzada --jbig2-lossy, tendrás que instalar https://ocrmypdf.readthedocs.io/en/latest/jbig2.html manualmente, ya que normalmente no viene en los repositorios oficiales por temas de licencia.

2. Uso básico: un solo archivo

Este es el comando que suelo usar para procesar un archivo. Limpia el escaneo, lo optimiza y genera un PDF en el que ya se puede buscar:

ocrmypdf -l spa --output-type pdf \
    -r --remove-background --clean-final --optimize 3 \
    -d -c -i --remove-vectors --jbig2-lossy \
    escaneado.pdf salida_con_ocr.pdf

2.1. Qué hacen las opciones principales:

3. Procesamiento por lotes

Si tienes muchos PDFs, este pequeño bucle los procesa todos de forma recursiva:

find . -name '*.pdf' | while read -r pdf; do
    ocrmypdf -l spa --output-type pdf \
    -r --remove-background --clean-final --optimize 3 \
    -d -c -i --remove-vectors --jbig2-lossy \
    "$pdf" "${pdf%.pdf}_ocr.pdf"
done

Y ya está: nada sofisticado, solo una referencia práctica que uso yo mismo y que quizá le venga bien a alguien más.

Etiquetas: