070-073_CreaciondeEbooksLM66

LINUX USER • Creación de E-Books

Herramientas para producción de e-books

LIBRITOS
Trabajar con libros escaneados puede ser un engorro. Sin embargo, armados con el juego de herramientas idóneo podemos automatizar el proceso de creación de e-books que soporten búsquedas de texto completo y tablas de contenidos. POR DANIEL STENDER

xisten en Linux muchas herramientas para la creación de ebooks de calidad a partir de documentos o de libros escaneados. Un método popular es utilizar Sane y sus front-ends para leer los documentos. Con una pequeña ayuda de ImageMagick podemos compilar convenientemente los resultados con un proceso por lotes. El procesador unpaper proporciona un servicio útil, especialmente en el post-procesamiento automatizado y actualización del escaneado de libros. Tras esto, es lógico empaquetar las imágenes en un formato DjVu (pronunciado “déjà vu”) o PDF y añadir marcapáginas. DjVu es un formato contenedor para gráficos rasterizados desarrollado por AT&T. Esta alternativa potencial al PDF tiene un algoritmo de comprensión más efectivo y rápido. Los visores se encuentran disponibles para la mayoría de las plataformas. La línea de comandos ofrece un método perfectamente adecuado. Como guinda al pastel, podemos añadir una capa OCR (optical character recognition, o reconocimiento óptico de caracteres) a un libro, si fuera necesario, para añadir la capacidad de búsqueda de texto. Linux dispone también de herramientas de código abierto para hacer esto mismo. El software libre es tan profesional en este campo como los productos comerciales.

E

Herramientas
La suite para escáneres Sane [1] es extremadamente popular y forma parte habitual de la mayoría de las distribuciones. Gracias a la interfaz gráfica XSane [2] podemos crear el scan completo de un libro a partir de una serie de páginas escaneadas individualmente. Para resultados OCR óptimos, es buena idea escanear el texto con una resolución de no menos de 300 dpi. El escaneado en escala de grises – en, pongamos, el formato PGM (“Portable Graymap”) – debe ser traducido a monocromo (PBM, “Portable Bitmap”). El programa enumera automáticamente las imágenes escaneadas. También escanea secciones

70

Número 66

WWW.LINUX- MAGAZINE.ES

10 “Karmic Koala”. línea 1).ES Número 66 71 .LINUX. Si la herramienta se salta líneas durante el procesado.2.0 “Lenny”. done Podemos reducir el tamaño del espesor de las rayas negras en la mitad del escaneado causadas por la encuadernación del libro estableciendo un valor más bajo del -white-threshold (umbral de blanco) en la conversión. do U convert $i -rotate 90 -verbose U ${i%pgm}pbm. La herramienta elimina la suciedad y las manchas capturadas por el escáner junto con la línea negra de la parte central. lo mejor es redirigir la salida a un directorio diferente: $ unpaper --layout double U --output-pages 2 %4d. Tras la conversión. rotará. si fuera necesario. Si no existen aún. podemos sintoni- En este ejemplo. podamos cargar la imagen en GIMP [5]. o la versión 10 de Fedora o superior. usamos djvm para mezclar los contenedores (línea 2). djvulibre en openSUSE y Fedora) ayuda a los usuarios a manipular ficheros DjVu. ImageMagick [3] también es útil para la rotación. alineará y centrará los bloques de texto. Esta colección de programas incluye una variedad de herramientas que se pueden integrar fácilmente en scripts de la shell. Los sistemas basados en Debian y en Fedora lla- Unpaper Unpaper [6] de Jens Gulden es una herramienta de post-procesamiento inteligente de documentos escaneados.Creación de E-Books • LINUX USER y. Figura 1: La encuadernación del libro y la posición imprecisa en el escáner provocan áreas negras en el escaneado. El ejemplo siguiente utiliza convert para rotar una serie de imágenes PGM 90 grados y convertirlas a PBM : $ for i in *pgm. Hemos encontrado que valores comprendidos entre el 25% y 35% funcionan bien en casos de producción. La cadena de formato %04d da a los ficheros nombres consistentes en cuatro dígitos (0001. openSUSE 11. zar con precisión las funciones de unpaper configurando determinado número de opciones. las guarda rotadas 90 grados. Para evitar sobrescribir los ficheros de salida. cjb2 $i ${i%pbm}djvu. Para estar preparados para cualquier eventualidad. Usando un bucle del shell podemos pasar los escaneados de libros procesados a través del codificador monocromo de Djvulibre /cjb2) (Listado 1. Esto hace de unpaper la elección perfecta para el procesamiento de documentos escaneados a partir de fotocopias (Figura 1). dividirá páginas dobles en simples. El programa comparte con otros muchos visores de imágenes la capacidad de que. lo suyo es comprobar los escaneados con un visor gráfico. al pulsar el botón derecho del ratón (o un atajo teclado). el recorte y la edición. Para ello podemos usar Geeqie [4]. Si fuera necesario. Como toda buena herramienta de la línea de comandos.175. La salida abarca dos páginas individuales. nece- Listado 1: Escaneados de Libros 01 $ for i in *pbm.3 actual se encuentra disponible para Debian 5.pbm U out/%4d. Sin embargo. Ubuntu 9. Una vez en GIMP.pbm sitaremos crear el directorio para . Para hacerlo.MAGAZINE. Luego. la entrada es el escaneado de un libro de doble página.djvu *djvu Listado 2: Crear un Fichero Marcapáginas 01 (bookmarks 02 (“Title” “#1”) 03 (“Body” “#5” 04 (“Chapter 1” “#5”) 05 06 07 08 ) (Chapter 2” “#10”) (“Chapter 3” “#15”) ) WWW. la configuración predeterminada es normalmente idónea para obtener buenos resultados (Figura 2). DjVu y PDF Un paquete de herramientas Djvulibre [7] (djvulibre-bin en Debian y Ubuntu. A continuación podemos ver nuestro nuevo e-book./out antes de lanzar el comando. notas manuscritas y cosas por el estilo.pgm). podemos configurar la máscara de escaneado (-ms) dándole un valor más alto. utilizamos un visor como Djview. Unpaper se encargará de ellas. unpaper tiene la capacidad de procesar ficheros por lotes. podemos eliminar la suciedad. como 175. done 02 $ djvm -c miebook. do echo $i. La versión 0.

Esto hace posible resaltar la palabra que estamos buscando en el e-book.djvu -e U ‘set-outline miebook. Para completar el proceso de análisis de diseño sin análisis de diseño y módulos de lenguajes.4. Es un potente motor OCR utilizado por Google Books. tesseract-langpack en Fedora). El OCR también es útil para el scripting. Aunque podríamos usar Tesseract sin ninguna otra herramienta para el escaneo del texto. el cual es un formato de datos basado en XHTML que también incluye el diseño de un texto identificado. libtiff en Fedora). un pequeño bucle es cuanto se necesita (Listado 3. GOCR de Jörg Cshulenburg (0. El fichero ha de tener un aspecto similar al Listado 2. La salida toma la forma de ficheros OCR en formato hOCR [10]. openSUSE lo llama djvulibre-djview4. sino también los datos de posicionamiento durante el escaneado.3). Google está desarrollando actualmente el software bajo licencia Apache 2. el personal del Deutschen Forschungszentrum für Künstliche Intelligenz (DFKI – Centro de Investigación de Inteligencia Artificial de Alemania) en Kaiserslautern programó el wrapper OCR para utilizarlo con Tesseract (la última estable: 0. OCR y Tesseract pueden manejar escaneados e imágenes de escala de grises en los ficheros.ES . El paso siguiente es integrar el fichero OCR en el e-book como una capa OCR. Ubuntu Karmic.0. el software no sólo captura el texto. no incluido para openSUSE y Fedora) para llevar a cabo el análisis de diseño de los escaneados. A continuación creamos un TIFF multi-página de las imágenes individuales (línea 2) y convertimos el TIFF en un PDF con el último comando (línea 3). El comando tiff2pdf tiene las opciones -j y -z que nos permiten usar los algoritmos de compresión JPEG o ZIP.48).04) fue originalmente programado por HewlettPackard. Para ello creamos un fichero “outline” en formato de texto usando un editor. lo suyo es controlar el motor a través del wrapper OCRopus (0.3. Cuneiform y Tesseract incluyen datos de reconocimiento para distintas lenguas. De nuevo. 0. OCR de Código Abierto Existen en la actualidad cuatro motores OCR libremente disponibles: Cuneiform de Cognitive Technologie de Rusia (versión actual 0. U ocroscript recognize U --tesslanguage=deu U --charboxes *pbm > ${i%pbm}hocr. necesitaremos configurar algunos paquetes de lenguajes (tales como tesseractocr-deu.LINUX. Luego usamos la herramienta djvused para empaquetarlo en el contenedor de DjVu que habíamos creado previamente: % djvused miebook. Durante el proceso OCR. Las dos herramientas requeridas para hacer todo lo anterior son parte del paquete estándar libtiff-tools (libtiff3 en openSUSE. Tesseract es un motor sin un módulo de lenguaje estático o análisis de diseño. El administrador de paquetes nos mostrará las dependencias y ofrecerá resolverlas durante la instalación. tesseract en openSUSE y Fedora).2. De nuevo.LINUX USER • Creación de E-Books marán al paquete djview4. esto se denomina “outline” – o resumen). Tesseract (versión última 0. tesseract-data-deu en openSUSE. Podemos editar la salida con un editor de texto si fuera necesario. Para ello usamos ocroscript y lo pasamos al fichero de lenguaje Tesseract para unos resultados óptimos: $ for i in *pbm.1 en Debian Squeeze y Ubuntu “Lucid Lynx”. Además del programa Tesseract principal (tesseract-ocr. Para crear ficheros PDF desde ficheros escaneados en Linux. A diferencia de otros programas.outline’ -s No podía ser más fácil. podemos añadir marcapáginas al fichero DjVu si fuera necesario (en la jerga de DjVu. lo cual – junto con la capacidad para reconocer chino – se encuentra en la hoja de ruta para la siguiente versión principal. incrementando de este modo su precisión. do echo $i. Ocrad como parte de un proyecto GNU (0.9).19) y Tesseract. primero necesitamos convertir los ficheros PBM a TIFF. Figura 2: Los parámetros predeterminados de Unpaper son cuanto necesitamos para producir resultados aceptables. en Ambos. U done OCR El motor OCR de Tesseract [8] y el wrapper OCRopus [9] permiten a los usuarios crear escaneados de libros de alta calidad con una capa OCR añadida.MAGAZINE. Seguidamente. 72 Número 66 WWW. línea 1).

Creación de E-Books • LINUX USER Listado 3: Conversión de Ficheros PBM a TIFFs 01 $ for i in *pbm.org [6] unpaper: http://unpaper. siempre podemos editar los datos recogidos por OCRopus o Tesseract usando un editor de textos para eliminar los fallos finales.tif 03 $ tiff2pdf -0 miebook. En el momento de escribir esto no se encuentra soportado el escaneado de la escala de grises.linux-magazine. para un acabado perfecto. también incluye porte para OCRopus.net [5] GIMP.sourceforge. http://scantailor.uk/openDIAS/ Daniel Stender es Graduado en Indología clásica y ha usado Debian en el escritorio durante años excluyendo a los restantes sistemas operativos. como con los PDFs. aunque este puede ser un proceso que consuma mucho tiempo. podemos empaquetar los ficheros individuales en un contenedor utilizando pdftk [13]: $ pdftk *pdf cat U output miebook. en una única interfaz (versión 0.sane-project. tales como escaneados limpios y una resolución suficiente. pasando por unpaper y OCR. después de haber creado los PDFs.google. co. pg. Sin embargo. Luego. merece la pena investigar los servidores libres y más importan- [14] ocrodjvu: HTTP://JWILK. Luego. el desarrollo está fuertemente atado al último software OCR libre que hemos utilizado en este taller. que combina todos los componentes de los programas de escaneado. Para hacerlo necesitamos convertir los ficheros PBM anteriores a TIFFs después del proceso OCR.net [8] Tesseract: http://code. http://www. Evidentemente.exactcode. Finalmente. Está interesado en el uso de aplicaciones de código abierto en Filología Sánscrita. done 02 $ tiffcp *tif miebook. existe un ayudante útil llamado ocrodjvu de Jakub Wilk [14] (Debian Squeeze y Ubuntu Lucid). Ubuntu Karmic y openSUSE 11.9.9.ES Número 66 73 .NET/ SOFTWARE/OCRODJVU.pdf miebook. done Los ficheros de diseño aquí presentan algunos errores – los resaltados están desplazados – pero los desarrolladores son conscientes del problema [12].MAGAZINE.es/issue/ 14/XSane.30 (Debian Squeeze y Fedora 12). Los motores OCR actuales producirán bastante texto útil dadas unas condiciones óptimas.sourceforge. como una alternativa a Tesseract/ OCRopus.tif En el caso de e-books basados en PDFs podemos utilizar la herramienta hocr2pdf de la suite Exact Imaga [11] (Debian “Squeeze” y Ubuntu Karmic) para añadir los metadatos hOCR creados por OCRopus a la capa OCR.net http://gscan2pdf.net [16] gscan2pdf: sourceforge.pdf cutar Djvm para crear un contenedor. esto supone que hemos instalado el paquete del lenguaje Aspell correcto y especificado el uso de este paquete.pl/archivistabox4 [19] openDias: http://essentialcollections. también podemos usar Cuneiform (véase el cuadro “OCR de Código Abierto”).archivista.pdf [4] Geeqie: http://geeqie. GNU Aspell [15] (actualmente en su versión 0. Scan Tailor [17] es otro candidato.wikipedia.2).com/ Front Ends Existen front ends disponibles para controlar los procedimientos descritos en este artículo para la creación de e-books hasta la obtención del DjVu o PDF final. antes de eje- Evidentemente. existen planes para cambiarlo. [18] ArchivistaBox: http://www. pg.LINUX. Estas herramientas están más aconsejadas para volúmenes grandes de documentos.net [17] Scan Tailor: sourceforge.linux-magazine.com/p/ ocropus [10] hOCR: http://de. Linux Magazine número 14. aunque mucho más limitado.com/yhao2jk [13] pdftk: pdftk/ Si estamos creando e-books en formato DjVu. gscan2pdf 0.de [7] DjVu: http://djvu. combinamos los datos con los ficheros hOCR coincidentes en PDFs individuales: $ for i in *tif.org [2] “Ecaneando “ de Kristian Kissling.HTML [15] Aspell: http://aspell. podemos usar Djvused para insertar los resultados en ficheros individuales.com/ granthinam. Para comprobar todos los ficheros hOCR en un directorio. do U hocr2pdf -i $i -o ${i%tif}pdf U < ${i%tif}hocr. U do aspell --lang=de U --mode=html -c $i. Una potente aplicación con GUI es gscan2pdf [16].es/issue/ 39/072-076_ImageMagickLM39.6) nos brinda la posibilidad de excluir todas las etiquetas XHTML del corrector. Una buena idea es ejecutar un corrector ortográfico sobre los resultados finales. Para proyectos más grandes que incluyen archivado.accesspdf. La última versión. Ocrodjvu toma el control de OCRopus y automatiza el proceso completo de la extracción e inserción de texto en un e-book basado en DjVu existente.60.gimp.29 en Debian Stable. Linux Magazine número 39. done tes de e-document tales como ArchivistaBox [18] u openDias [19]. ch/index.danielstender. de/site/open_source/exactimage/ [12] Error de Destacado (comentario 5º): http://tinyurl.org/wiki/ HOCR_(Standard) [11] ExactImage: http://www.com/p/ tesseract-ocr/ [9] OCRopus: http://code. do convert $i -verbose ${i%pbm}tif. 72: http://www. Más información en su blog http://www. El paquete ocrodjvu también incluye el convertidor hocr2djvu que nos permite convertir ficheros hOCR en formato de metadatos DjVu. EL AUTOR WWW. sin embargo. http://www. I RECURSOS [1] Sane: http://www.google.pdf [3] “Pixel Perfecto” de Tim Schürman.berlios. podemos arrancar Aspell dentro de un bucle: $ for i in *hocr. 21: http://www.

Sign up to vote on this title
UsefulNot useful