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 OCRmyPDF, que añade una capa de texto sobre el archivo original usando el motor 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 el codificador jbig2 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:
-l spa: establece el idioma (español en este caso).-r: rota automáticamente las páginas si hace falta.--optimize 3: aplica una compresión bastante agresiva.--clean-final: elimina artefactos tras el OCR.
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.