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:
-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.