Cosas Interesantes

domingo, 14 de febrero de 2010

Cómo retocar con RegEx la conversión CALIBRE desde el formato PDF y conseguir mejores ebooks en ePUB para Mi reader PAPYRE 6.1 (Cap.02)

Coco profesorEn el capítulo anterior habíamos pedido ayuda a Coco para que nos enseñara cómo arreglar los errores que se producen en la conversión de un archivo PDF hacia ePUB en CALIBRE.
Vamos a continuar utilizando RegEx para retocar el texto paraPAPYRE STREET conseguir un archivo ePUB sin errores.

ARREGLANDO LOS ERRORES MÁS HABITUALES
Los errores más habituales tienen que ver con la interrupción del flujo de texto, partiendose frases y párrafos en donde no procede.

Párrafo interrumpido por un RETORNO DE CARRO:
Retorno de carro Vemos como la frase se corta y empieza un nuevo párrafo.
La expresión de búsqueda será:
CLICK para CODE  
20091020009

He incluido las vocales acentuadas con la expresión “\()
20091020008 La expresión de sustitución es: \1 \3 Es decir, la última letra del primer párrafo, un espacio y la primera letra del segundo párrafo.
Además de seleccionar el check de “Match Case” para asegurar la diferenciación entre MAYUSCULAS y MINUSCULAS, conviene seleccionar “Minimal Matching” que asegura que se seleccionan los “segmentos” de texto más pequeños de todos aquellos que cumplen la condición de búsqueda.
Pulsamos ENTER y ¡Voilá!…
20091020010 
Carácteres espúreos al final de una frase:
CARACTERES ESPÚREOS Son números, correspondientes a la paginación del archivo PDF. En este caso, la expresión de búsqueda es sencilla:
20091020012  
Buscamos un bloque de entre 1 y 3
números (el libro no tiene más de 999 páginas) situado entre un punto “.” con un espacio detrás y una etiqueta de cierre de párrafo.
Lo sustituimos simplemente por un punto “.” seguido de la etiqueta de cierre de párrafo.
Pulsamos ENTER y “Abra-ca-dabra”…

CORREGIDO 
MÁS párrafos interrumpidos por un RETORNO DE CARRO
20091020014 ¿Pero NO HABIAMOS RESUELTO ESTE TIPO DE ERROR antes? preguntareis. Pues sí, pero NO. Porque en la expresión de búsqueda anterior no incluimos caracteres especiales cómo la coma “,” y la interrogación “¿”. Así pues nos queda cubrir los casos en los que intervienen estos caracteres que son escasos pero que en un libro de 300 y pico páginas pueden darse cerca de 50 veces. Lo resolvemos sin necesidad de RegEx, simplemente copiando la cadena a sustituir:
20091020015  Le damos al ENTER y ¡Zas!…
20091020016 
Parrafos interrumpidos por un RETORNO DE CARRO después de un guión largo
CON GUIÓN LARGO Al incluir otro tipo de carácter especial, el guión largo “” (EM Dash) también se escapó de la primera expresión de sustitución. A veces no queda más remedio que realizar este tipo de depuración “por capas de cebolla”, desde lo más general hasta los casos particulares. Aquí la expresión de búsqueda es más compleja:
CLICK para CODE
20091020018Como siempre en este caso, debemos marcar el check de “Match Case” para asegurarnos de discriminar entre MAYUSCULAS y MINUSCULAS. Pulsamos ENTER para ver la magia de RegEx en acción:
RESUELTO 
Parrafos interrumpidos por un RETORNO DE CARRO después de un guión largo cuando es un COMIENZO de FRASE
20091020020 

Ya sólo nos queda por resolver el caso más enrevesado y dificil de diferenciar del texto correcto. Es cuando después de guión largo “” (EM Dash) se rompe el párrafo; y el primer carácter del párrafo siguiente es una MAYÚSCULA, lo cual hace que sea muy dificil de distinguir de un principio de frase legítimo.
Tendremos como expresión de busqueda:


CLICK para CODE
20091020021OJO! con el “Match Case” y “Minimal Matching”; Pero aquí el truco para comprobar que efectivamente se ha roto la frase de forma incorrecta es que existe un punto “.” justo antes del guión largo “” (EM Dash); lo que indica que el mismo es el primer caracter de una nueva frase y no el último de la corriente.
Como siempre despúés de pulsar ENTER:
20091020022 
Los casos que hemos resuelto con estos retoques han eliminado cerca de 800 errores del texto, lo que supone la diferencia entre un ebook decente y una chapuza.

9 comentarios

  1. ¡Bravo, Maestro!
    Estupendos los dos capítulos; algo que estaba buscando desde hace tiempo.
    Gracias.

    ResponderEliminar
  2. Me alegro.
    Si tienes alguna duda en concreto, ya sabes.
    Y si te gusta algo, ¡ponle estrellitas! y compartelo en redes sociales.

    ResponderEliminar
  3. Muchas gracias!

    Estos dos capítulos me van a venir genial adecentar mi biblioteca :D
    Una pregunta: existiría alguna forma para poder convertir un pdf dividido en dos columnas? Lo he intentado, pero todo lo que consigo es un texto en el que se entrelazan filas de las distintas columnas...

    ResponderEliminar
  4. ¡Magnífico! Esto me está ayudando mucho ;-)

    ResponderEliminar
  5. ¿Ya no actualizas el blog? ¡Qué pena! He aprendido un montonazo con este blog.

    ResponderEliminar
  6. Los PDFs a 2 columnas son muy complicados. Lo único que se me ocurre es modificarlo con ADOBE ACROBAT que tiene una opción donde se puede forzar el reflow. Pero habría que ver cada documento en particular. Si quieres mandame un archivo y le hago unas pruebas y te cuento.

    ResponderEliminar
  7. Ya estamos de vuelta y poniendonos al día para responder a todo el mundo.
    Gracias, todavia vamos a dar mucha guerra.

    ResponderEliminar
  8. No me queda muy claro el cambio que quieres hacer. ¿puedes darme más detalles? ¿Cual es el texto final que quieres que quede?

    ResponderEliminar
  9. Acabo de convertir un pdf a epub con Calibre, pero el código que genera es diferente. Un par de ejemplos de párrafos rotos por el número de página:

    http://textsnip.com/b662ef/css
    http://textsnip.com/b662ef/css

    ¿Hay alguna forma de corregirlo automáticamente (yo no lo he conseguido) o debería limpiar un poco el pdf antes de pasarlo por Calibre?

    Saludos y gracias por todos estos consejos.

    ResponderEliminar

© Cosas Interesantes