Aprende a convertir un PDF con imágenes en contenido seleccionable utilizando la herramienta CLI OCRmyPDF en su servidor Ubuntu.

¿Cuántas veces intentó seleccionar el contenido de un PDF pero lamentablemente el contenido del PDF era una imagen? Bastante molesto, ¿no? Afortunadamente, si está trabajando en alguna aplicación que necesita convertir las imágenes en texto, OCRmyPDF es la herramienta adecuada para lograr este objetivo. Aunque en Ubuntu 16.10 y versiones posteriores es bastante fácil instalar esta herramienta, en Ubuntu 16.04 el proceso de instalación es un poco complicado, por lo que deberá seguir algunos pasos adicionales.

En este tutorial, le mostraremos cómo instalar esta herramienta correctamente en su sistema Ubuntu 16.04 con facilidad.

¿Cuál es el objetivo de esta herramienta?

Para explicar rápidamente en qué te ayudará esta herramienta a conseguir, vamos a exponer el siguiente caso sencillo. Tenemos un PDF como resultado de algunas páginas escaneadas de un libro real. Si abre el PDF con algún visor de PDF, verá con la mayoría de ellos que el texto no se puede seleccionar, el PDF es básicamente una imagen:

PDF Unselectable Text Scanned

Sin embargo, lo que la gente esperaría y necesitaría es la posibilidad de seleccionar el texto con el mouse:

PDF Selectable Text OCR

Eso es básicamente lo que producirá la herramienta, un nuevo PDF con una capa de texto seleccionable sobre el PDF original para que el usuario pueda extraer la información fácilmente.

1. Instale OCRmyPDF

OCRmyPDF agrega una capa de texto OCR a los archivos PDF escaneados, lo que permite buscarlos o copiarlos y pegarlos. Esta herramienta incluye:

  • Genera un archivo PDF / A con capacidad de búsqueda a partir de un PDF normal  
  • Coloca el texto OCR con precisión debajo de la imagen para facilitar la copia / pegado
  • Mantiene la resolución exacta de las imágenes incrustadas originales
  • Cuando es posible, inserta información de OCR como una operación "sin pérdidas" sin interrumpir ningún otro contenido
  • Optimiza las imágenes PDF, a menudo produciendo archivos más pequeños que el archivo de entrada
  • Si se solicita, endereza y / o limpia la imagen antes de realizar el OCR
  • Valida archivos de entrada y salida
  • Distribuye el trabajo en todos los núcleos de CPU disponibles
  • Utiliza el motor Tesseract OCR  
  • Soporta más de 100 idiomas reconocidos por Tesseract  
  • Probado en batalla con miles de archivos PDF, un conjunto de pruebas e integración continua

Para instalar esta herramienta en su servidor Ubuntu, deberá seguir algunos pasos adicionales ya que para esta versión de Ubuntu no hay ningún paquete disponible. Como si no fuera suficiente, OCRmyPDF 8.0 y versiones posteriores requieren Python 3.6, sin embargo, Ubuntu 16.04 incluye Python 3.5, por lo que debe instalar Python 3.6 en él. Proceda como primero para instalar el paquete de propiedades del software Python con el siguiente comando:

# Actualizar repositorios
sudo apt-get update

# Instale el paquete de propiedades del software Python
sudo apt-get install -y software-properties-common python-software-properties

Una vez instaladas las propiedades del software de Python, puedes agregar el repositorio de Python 3.6 y la versión requerida de Tesseract en su sistema con los siguientes comandos, no olvide actualizar los repositorios:

# Agregar repositorio de Python 3.6
sudo add-apt-repository -y ppa:jonathonf/python-3.6

# Agregar repositorio Tesseract OCR
sudo add-apt-repository -y ppa:alex-p/tesseract-ocr

# Actualice los repositorios una vez más; de lo contrario, durante la instalación de paquetes más tarde, algunos fallarán, por ejemplo, Python
sudo apt-get update

Después de eliminar los repositorios, instale los paquetes necesarios para permitir que OCRmyPDF se ejecute correctamente:

sudo apt-get install ghostscript
sudo apt-get install libexempi3
sudo apt-get install libffi6
sudo apt-get install pngquant
sudo apt-get install python3.6
sudo apt-get install qpdf
sudo apt-get install tesseract-ocr
sudo apt-get install unpaper

Después de instalar todos los paquetes, también deberá hacer que Python esté disponible en la Ruta. El sudo apt-get install python3.6comando instalará un binario de Python 3.6 /usr/bin/python3.6junto con el Python 3.5 del sistema. No elimine el sistema Python. Esto también instalará Tesseract 4.0 desde un PPA, ya que la versión disponible en Ubuntu 16.04 es demasiado antigua para OCRmyPDF.

Como paso final, deberá instalar la biblioteca OCRmyPDF a través de Python usando pip. Ejecute las siguientes instrucciones para instalarlo:

Nota

Es posible que deba ejecutar estos comandos cada vez que se reinicie el sistema ubuntu, ya que ocrmypdf no estará disponible en la ruta nuevamente.

export PATH=$HOME/.local/bin:$PATH
pip3 install --user ocrmypdf

Después de la instalación, podrás ejecutar la utilidad desde la línea de comandos. Puede probarlo imprimiendo la versión de la herramienta en la CLI con:

# En este momento imprimiria 8.0.1
ocrmypdf --version

Para obtener más información sobre esta herramienta, visite el repositorio oficial en Github aquí  y la  documentación . Se admiten Linux, UNIX y macOS. Windows no es compatible directamente, pero hay una imagen de Docker disponible que se ejecuta en Windows.

2. Usando OCRmyPDF

El uso de OCRmyPDF es bastante sencillo y fácil de hacer. Simplemente proporcione como primer argumento la ruta del PDF de entrada y el nombre del nuevo PDF que se creará a partir de la entrada:

# Cree una capa seleccionable de texto en el PDF a partir del archivo de entrada y cree un nuevo archivo PDF con el resultado
ocrmypdf input_file.pdf output_file.pdf

Después de ejecutar el comando, la herramienta comenzará con la tarea y tomará un tiempo hasta que finalice. La salida CLI será similar a:

INFO - Optimize ratio: 1.00 savings: 0.0%
INFO - Output file is a PDF/A-2B (as expected)
INFO - Page orientations detected: 1 2

La herramienta CLI ofrece también algunos parámetros que puede personalizar según sus necesidades, por ejemplo, especificar el idioma del texto que se reconocerá, fijar la orientación de las páginas en el PDF, etc.

ocrmypdf                      # es un programa de línea de comandos con secuencias de comandos
   -l eng+fra                 # es compatible con varios idiomas
   --rotate-pages             # puede arreglar páginas que están mal rotadas
   --deskew                   #¡Puede enderezar archivos PDF torcidos!
   --title "My PDF"           # puede cambiar los metadatos de salida
   --jobs 4                   # usa múltiples núcleos por defecto
   --output-type pdfa         # produce PDF / A por defecto
   input_scanned.pdf          # toma entrada PDF (o imágenes)
   output_searchable.pdf      # produce una salida PDF valida

Que te diviertas ❤️!


Interesado en la programación desde los 14 años, Carlos es un programador autodidacta, fundador y autor de la mayoría de los artículos de Our Code World.

Conviertete en un programador más sociable

Patrocinadores