Ubuntu Peronista@TTBP

Este es un espejo en el Tilde Blog Project del blog original Ubuntu Peronista. Se encuentra disponible en Tildeverso únicamente con fin histórico.



04 september 2022

¿Cómo extraigo páginas y corrijo un PDF escaneado en Ubuntu?

¡Trabajadadores argentinos!

Es indudable que las redes telemáticas constituyen hoy una de las formas más extendidas para lograr el conocimiento, y que para ello la existencia de archivos de documentación electrónica es un gran medio.

La informática nos permite distribuir electrónica todo tipo de documentos, incluyendo libros, y hacerlo en meros segundos. La gran compresibilidad de los datos textuales al pasarlos a formato digital hace que la concepción "sin papel" sea una Realidad Efectiva que el Justicialismo ha legado al Pueblo. El formato de documento electrónico Adobe PDF es privativo, y si bien es preferible utilizar el formato de documento libre DjVu, no puede negarse que PDF está ampliamente extendido y disponible. Aún así, este formato cuenta con algunas desventajas que se hacen patentes cuando el contenido del documento está conformado imperfectamente en base a un original escaneado.

Vean señores, en condiciones ideales, un documento debe estar escaneado de una manera específica para que su uso pueda ser adecuado para distribución. Esto pide utilizar una resolución de escaneado de unos 600 DPI (previendo así el doble de resolución utilizado en las tecnologías de impresión normales, que suelen rondar los 300dpi en el caso de una impresora láser). También conviene emplear el escaneo en modalidad "escala de grises" (o a color, según corresponda).

Si los hombres fuesen perfectos, poco tendríamos que hacer para corregirnos. Pero no somos dioses ni heroes, bastante con que seamos hombres. Por tal motivo, estos requerimientos de perfección no siempre se cumplen. Pero la buena voluntad no puede negarse a nadie. Típicamente, podemos encontrarnos con reproducciones realizadas a partir de páginas escaneadas de forma torcida, o con defectos típicos del tratamiento de digitalización. Si bien estos problemas no suelen ser graves como para impedir la lectura del texto, es cierto que estas desprolijidades pueden ser inaceptables para la posterior distribución del documento.

Para corregir esto haremos uso de un flujo de trabajo especialmente pensado utilizando herramientas libres. El mismo se podría resumir de la siguiente manera:

Tener un archivo PDF defectuosamente escaneado 
Extraerle las láminas (hojas dobles escaneadas) y convertirlas a formato PNG 
Dividir los archvos PNG en páginas individuales
Enderezar, corregir, redimensionar las páginas individuales
Volverlos a armar las páginas individuales en un archivo PDF. 

Veamos un ejemplo clásico, pues esto suele explicarlo todo como decía Napoleón.

Supongamos ya contamos con un archivo llamado "sinceramente.pdf". Este se trata de un libro de 500 páginas ya escaneadas en escala de grises a 600 DPI de resolución, pero que el mismo cuenta con las láminas dobles (dos páginas por hoja). Esto lo hace sumamente incómodo de utilizar en dispositivos como e-Readers, que requieren una página. Además, los dobleces complican el trabajo de OCR, lo hacen incómodo de leer, etc. Comenzaremos a seguir el flujo de trabajo que os he propuesto, y lograremos excelentes resultados.

Lo primero será extraer las hojas dobles del archivo PDF y convertirlas a un formato de imagen que podamos utilizar con Scan Tailor. Esto se puede hacer desde la Terminal. A fin de extraer las páginas del PDF y convertirlas en imágenes, podríamos ingresar:

pdftoppm sinceramente.pdf lamina -r 600 -png

Esto creará una serie de archivos numerados llamados lamina-xxx.png, con una resolución de 600 DPI. Debemos tener en cuenta que si bien podremos usar la opción -jpg en lugar de -png para cambiar el formato de los archivos resultantes, os recomiendo utilizar fundamentalmente el formato png pues es muy superior para estos menesteres ya que dispone de compresión sin pérdida, y evitará enormemente la formación de "halos o borroneados" en las letras. Esta acción tardará un rato en hacerlo, dependiendo de la cantidad de láminas a extraer. En el caso que referimos, tardó unos 12 minutos para extraer las 250 láminas de dos hojas cada una.

Ahora bien, estos archivos png que conforman las láminas dobles habremos de corregirlas con Scan Taylor. Para instalar este excelente programa, volvemos a recurrir a la terminal Linux, ingresando en ella el siguiente Comando de Organización:

sudo apt install scantailor

Scan Tailor no es un programa para escanear (para ello recomiendo Simple Scan o gScan2pdf, que pueden escanear de forma multipágina). Scan Tailor en cambio se especializa para realizar la tarea de corrección o postproducción en el escaneo de libros. Especialmente dividir, cortar y encuadrar un texto escaneado o fotocopiado a fin de producir hojas individuales de gran calidad, normalmente en formato TIFF. Estas pueden luego volverse a unir por medio de otros programas (por ejemplo, el mismo gScan2pdf).

Ahora podremos cargar estas láminas en el programa Scan Tailor. Para ejecutar el programa vamos a Aplicaciones / Gráficos / Scan Tailor.

Al iniciar el programa se desplegará una ventana que nos pedirá que inauguremos un archivo para el proyecto. Esto es así pues - si bien en este caso el proyecto forma parte de un solo volúmen - podría suceder que quisiéramos agregar páginas de varios volúmenes o documentos diferentes. Para ello es necesario crear una carpeta de proyecto. Dentro de esta carpeta se importarán las imágenes originales de las láminas (cada una de ellas contienen dos hojas).

En nuestro caso, le importamos todos los archivos cfk.xxx.png que creamos recién con el pdftoppm. Generalmente la carpeta de salida será una subcarpeta llamada "out", donde irán a parar las nuevas imágenes TIFF procesadas.

Una vez importadas las imágenes de origen al Scan Tailor, el programa nos presentará una ventana de trabajo dividida a tres paneles.

El panel de la izquierda define los seis pasos necesarios para tratar las imágenes. El del centro y mas grande nos permite ver la página actual donde vamos a trabajar, y el de la izquierda es un slider que contiene miniaturas de las láminas u hojas (según vayamos trabajando).

Se abrirá el programa con los seis pasos requeridos por el asistente. De todos ellos, los primeros cinco generan datos no destructivos (y nos muestran las presentaciones preliminares de los cambios). El sexto paso es el final que aplica los cambios y genera los archivos de salida. El accionar puede durar desde unos pocos segundos hasta un par de horas de trabajo para un archivo de muchas páginas, y algo más si contienen fotografías o diseños complejos.

Veamos el caso de un trabajo de documentar nuestro libro PDF de 500 páginas.

Podremos utilizar Scan Tailor directamente para escanear el libro, pero en este caso ya tenemos el libro escaneado en PDF. Sin embargo, Scan Tailor no acepta PDF directamente, sino que trabaja con los archivos de imagen. Para ello extraeremos el archivo

El primer paso consiste en la Orientación, y se encuentra detallado en dicha columna. Esto puede hacerse automáticamente presionando el botón Automatizar "play" que aparecerá en la fila "Orientación", del el panel izquierdo, no bien acerquemos la flecha del ratón sobre ella. Esta orientación automática suele llevar unos pocos segundos para todas las páginas. En el caso que el volúmen contara con láminas horizontales y verticales, se pueden especificar en las propiedades de Orientación.

El segundo paso consiste en delimitar la división de páginas (ya sea su corte vertical u horizontal según corresponda). Nuevamente, el botón Automatizar ("Play") de esta fila "Dividir Páginas" del panel izquierdo nos permitirá hacer esta tarea rápidamente. Scan Tailor suele detectar muy bien el centro del pliegue de las láminas y nos presentara una linea guía (móvil a través de sus nodos), que divide la misma en un campo azul para la página izquierda rojo para la derecha. Esta línea guía, además de servirnos como divisora de corte, también sirve como referencia de centro para hacer mucho más preciso el trabajo anterior. En los volúmenes muy gruesos (de 360 páginas o más) debemos prestar atención sobre todo a las láminas intermedias, ya que son las más complicadas a la hora de escanear un libro. Una cumplido el paso de dividir las láminas nos encontraremos con las páginas ahora individualizadas. El tercer paso será su alineación. Esto puede hacerse con muy buen grado de precisión de forma automatizada, de la misma forma que en los pasos anteriores. Sin embargo, es muy importante que la alineación sea lo más perfecta posible. A tal fin, podremos ajustar las hojas de forma manual si es requerido. A tal fin indicamos en el panel izquierdo la modalidad de alineación manual, y podremos rotar la página sobre su eje, valiéndonos de las líneas guías de color azul, que nos permiten enderezar tomando como referencias los renglones, márgenes o líneas que pudiésemos tener de referencia. El siguiente paso es tal vez el más crítico, y consiste en delimitar una "caja de contenido". La misma debe delimitar exactamente y bien al ras, el cuadro que queremos registrar en el archivo final. Es importante saber que lo que está por fuera del cuadro azulado es probable que se descarte en el proceso final. Convinee presentar la selección automática, pero en caso de tener un libro impreso grueso, debemos revisar página por página para asegurarnos que la selección esté bien hecha. Tomamos como referencia las letras enteras del renglón superior e inferior del cuadro, y los márgenes de texto izquierdo y derecho. En el caso de que el volúmen original estuviese perfectamente alineado y siempre fuese igual la tarea puede repetirse en todas las hojas.

En el caso extremos en el que quisiéramos omitir encabezados o pies de páginas, podremos redimensionar cada caja de contenido a mano tomándolas de sus nodos de las esquinas. El quinto paso consiste en definir márgenes generales para la obra terminada. Este margen se agrega a la caja de selección. Generalmente se utilizan 2 cm por lado para que quede un PDF con aire y prolijo, pero también podremos reducirlo a unos 2 milímetros o menos, a fin de lograr un documento apto para tablets o e-Readers. Es por este motivo que era muy recomendable hacer la caja de selección bien rasante en el texto.

El sexto paso consiste en definir el formato, calidad (DPI) y funciones de salida. Normalmente desearemos aplicar la función corregir dobleces (sombras o manchas) Esto lo hace el software automaticamente, aunque tenemos la posibilidad avanzada de hacerlo mediante zonas de enmascaramiento. En este caso hemos prescindido de ello.

Para contemplar un tutorial completo (incluyendo en video) podemos recurrir a la Wiki oficial de Scan Tailor.

El sexto paso es el procesamiento final y es el único que realmente genera archivos de salida. Naturalmente, este paso lleva más tiempo, pero Scan Tailor opera muy bien en equipos con varios núcleos. En este caso tardó unos 40 minutos en un equipo tipo i7.

El proceso nos dejó creadas las páginas de salida en formato TIFF.

Crear un nuevo PDF a partir de imágenes JPG o TIFF

Para hacer un nuevo PDF corregido a partir de estos archivos TIFF individuales, podremos utilizar el utilísimo gscan2pdf, que ya os he enseñado a utilizar.

Lo instalamos con:

sudo apt-get install gscan2pdf

Y lo ejecutamos desde Aplicaciones / Gráficos / gScan2pdf.

Este programa sencillo nos permite importar los archivos TIFF, y exportarlos a un PDF. Simplemente cargamos los TIFF de las páginas individuales arrastrándolas a gscan2pdf, y las exportamos como PDF. Como ya el formato, la resolución y demás parámetros de las páginas ya fueron configurados en los pasos anteriores, la exportación no debería requerir correcciones de ningún tipo, y por lo tanto no debería durar mucho.

Finalmente, ya contaremos con un PDF completamente corregido, y podremos gritar al cielo "¡Viva Perón!".