Convertir un pdf de imágenes a texto org-mode

Llega el verano y estoy preparando mi lector de libros electrónicos y mi tablet para la lectura estival. Normalmente leo mucho, pero en verano aún más. Tengo toda una lista de libros para cargar en los dispositivos, la mayoría en formato epub , otros en pdf . Aquí es donde empiezan los problemas con los formatos: pdf es un formato que se inventó para imprimir en papel; si tienes una pantalla del tamaño mínimo de una hoja de papel lo verás bien; si no, leer un libro en pdf se convertirá en un suplicio. De hecho, en la tablet según qué ficheros los puedo leer más o menos decentemente, pero otros no. El contenido del archivo no se ajusta a la pantalla y se hace incómodo leer, pasar página, etc. En el libro electrónico, ese cacharrito con pantalla de «tinta electrónica» del tamaño de un móvil grande o de una tablet pequeña, los pdf se convierten en una tortura.

Se pueden convertir los pdf a texto de forma fácil, si el pdf contiene texto. Que puede parecer una tontería, pero hay muchos pdf que en realidad son una serie de imágenes de páginas escaneadas y cuando los abres para mirar sólo contienen una ristra de imágenes.

Me gustaría que existiera algún modo de hacer que el pdf se convirtiera en epub de forma «automágica», pero no conozco ninguna herramienta que lo haga. Por otro lado, después de pegarme con el asunto un poco, la complejidad del problema es grande, porque envuelve tener una conversión de imagen a texto utilizando OCR y aunque los OCR han avanzado mucho, la salida del texto está plagada de errores: manchas en el escaneo, saltos de línea en medio de palabras, errores de codificación como confundir la «m» con «ni» o la «l» con el «1», o al revés.

La conversión por tanto la debemos hacer por pasos y supervisar los resultados:

Extraer las imágenes. Convertir en texto Supervisar y corregir los errores.

Así pues, vamos por partes.

Proceso manual Vamos a suponer que lo hacemos todo a mano, página a página. Los pasos serían los siguientes. Extraer las imágenes con poppler-tools Estas son unas herramientas similares a pdftk , concretamente un fork de xpdf y entre otras cosas nos permitirá extraer las imágenes que componen el pdf utilizando la herramienta pdfimages . Para extraer páginas con pdfimages la línea de comandos es sencilla de explicar: pdfimages -png -f 41 -l 50 archivo-origen.pdf nombre-base Suponiendo que el archivo-origen.pdf es el que deseamos convertir, la opción -png indica el tipo de fichero gráfico que se generará. La opción -f 41 indica que comience a extraer (first) en la página 41 y la opción l 50 indica que deje de hacerlo (last) en la 50. El parámetro nombre-base hará que las páginas convertidas en gráficos tengan los nombres de fichero nombre-base-000.png hasta nombre-base-009.png . Como se puede apreciar, la herramienta comienza la cuenta siempre desde cero, por lo que tenemos que tener cuidado si no queremos sobrescribir los ficheros con otros. Convertir la imagen en texto con tesseract En el momento en que hemos extraído una imagen con el texto es el momento de que el OCR haga su magia y lo convierta en algo legible. tesseract -l lang pagina.png fichero-salida También es una línea sencilla de entender, está el comando tesseract y las opciones casi se explican solas: la opción -l lang especifica el idioma en el que se encuentra el texto que se debe extraer. La opción pagina.png es la imagen escaneada y fichero-salida es el nombre de fichero que se convertirá en fichero-salida.txt cuando el OCR haya terminado. Con esos dos comandos, pdfimages y tesseract , consigo el texto plano. Pero la pregunta fundamental es: ¿Página a página?.