Me encontré ante un PDF originalmente escaneado, probablemente en forma automática y sin ninguna mejoría de las imágenes (salvo alinearlas). Tenía un fondo muy visible y poco contraste con el texto.
Decidí que iba a mejorarlo con software libre exclusivamente, en Linux Mint para ser específico.
Ya conocía el uso de scantailor, así que lo abrí. Para mi desconsuelo, no aceptaba archivos PDF como fuente. Tenía que encontrar la forma de transformar el PDF (de más de 300) páginas en imágenes.
Probé primero con pdftoimage pdftoimage https://code.google.com/p/pdf2image/
Usándola así:
pdf2image libro.pdf -compress -dev png16m
Esta y otras combinaciones me producían varias imágenes por página. Una para la porción color/grayscale de la página, donde estaba el fondo (que yo quería eliminar) y las imágenes (que yo quería mantener) y otra para lo que sería el texto, aparentemente superpuestos en el pdf, que llegaban en forma invertida (de negativo). Claramente esto no me iba a servir para, finalmente, reconstruir un PDF más nítido, porque o perdería las imágenes, o perdería el texto.
Llegué, indagando un poco, a la siguiente herramienta, que hizo exactamente lo que yo necesitaba:
pdftoppm -png -r 300 libro.pdf libro
Me produjo imágenes png de cada página, llevadas a 300dpi, numeradas.
Finalmente entré en scantailor http://scantailor.sourceforge.net/
Para no irme del tema general, resumo:
Elegí un area manual y la apliqué a todo (para que no hiciese autoarea en cada página)
Elegí como tipo de imagen combinado (entre color/grayscale y monochrome) con el umbral en el medio Márgenes de 2 por cada lado
Apliqué una rotación manual de 0 grados (para que no autorotase ninguna página)
En la parte de división forcé manualmente a 1 sola página por imagen escaneada y lo apliqué a todo. Autodeformación apagada y eliminar manchas encendido en su mínima expresión
El resultado fue un nuevo conjunto de imágenes (en tif esta vez) donde se leía en blanco sobre negro el texto, y las imágenes se veían bien.
Ahora tocaba hacer un pdf a partir de todas esas imágenes
Utilicé el comando convert... de imagemagick http://www.imagemagick.org/ de la siguiente forma:
convert *.tif libro.pdf
Pero llenaba al 100% el procesador, la máquina no responde hasta que uno logra hacer ctrl-c (el mouse se mueve, se puede cambiar el foco o cerrar cosas, pero no abren otros terminales, ni el administrador de procesos).
Si uno observa el archivo pdf que se está compilando, crece lentamente, y nunca llegué a ver si terminaba.
Me puse a investigar cómo controlar la intensidad con la que se ejecuta ese comando (o cualquier otro) y fui a dar con varias opciones:
nice -n 19 convert... usar nice
http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=10847
agregar -limit memory 1mb -limit map 2mb
http://totaki.com/poesiabinaria/2011/04/limitando-recursos-en-imagemagick/
Incluso en algunas páginas recomendaban usar otro comando llamado ionice (para graduar el flujo de entrada y salida del proceso)
También encontré cómo identificar un proceso que ya se está comiendo al procesador, y regularlo usando cpulimit, incluso tutoriales sobre cómo dejar un demonio de cpulimit monitoreando que ningún proceso supere el 20& del cpu
http://www.maketecheasier.com/limit-cpu-usage-of-any-process-in-linux
de la siguiente fomra:
ps aux | grep convert
sudo cpulimit -p PID -l CPU%
Pero terminé utilizando un enfoque distinto para convert... que es convertir cada imagen en un pdf (cosa que se puede ejecutar en paralelo con cada nucleo del procesador)... eso fue mucho más rápido, y luego utilizar pdftk para unir los pdfs en uno solo.
en vez de convert *.tif blah.pdf usar find . -iname '*.tif' | xargs -I% convert % %.pdf
luego pdftk *.pdf cat output merged.pdf (sudo apt-get install pdftk)
http://askubuntu.com/questions/221378/how-do-i-throttle-a-command-in-a-terminal-window
Terminé con un nuevo PDF impecable de aspecto, aunque algo pesado... probablemente no optimizado.
Buscando la forma de comprimirlo pasé por 2 secuencias
Una asi: qpdf --linearize stbk.pdf tbk2.pdf (http://qpdf.sourceforge.net/)
que redujo en un 20% el archivo
Y la otra que es básicamente convertir el pdf en ps y luego el ps en pdf
pdf2ps libro.pdf libro-pesado.ps
ps2pdf libro-pesado.ps libro-liviano.pdf
Todavía pienso que se puede optimizar más, usando alguna otra utilidad como pdfopt.
En definitiva, fueron varios pasos y varios tutoriales que tuve que seguir para lograrlo, supongo que existen herramientas que acortan pasos, scripts que automatizan un poco más, etc.
Los comentarios son bienvenidos!
No hay comentarios:
Publicar un comentario