Sab Jul 16, 2011 6:21 am
Hola a todos.
Me acabo de registrar porque quería daros algunos consejos basados en mi experiencia digitalizando libros como imágenes. Un verdadero coñazo tener que registrarse, meter el numerito del captcha, comprobar el correo de activación, y logearse... pero por fin estoy!
Como he dicho, yo ripeo todos mis libros en formato de imagen. La razón principal de elegir este formato es que ripear un libro con calidad lleva mucho trabajo, y el trabajo prefiero invertirlo en títulos lo más valiosos posibles. Los libros más valiosos (y caros) suelen ser libros técnicos y en general libros que no son de lectura, con fotografías, fórmulas, gráficos, referencias a otra páginas, texto en varios idiomas, etc. De esta forma conservo el formato original del libro página a página. Igualmente, al tener el libro como imagen, no es tan importante revisar el OCR, ya que lo que vemos es la imagen original y el OCR solo afecta al buscar y extraer texto, por lo que pequeños fallos son admisibles. Por otra parte, aunque te ahorras revisar el OCR, tienes que procesar las imágenes de las páginas, y es un verdadero coñazo también, pero mucho menos pesado.
Para dejar el libro como imagen, hay que escanear al menos a 300dpi en gris de 8 bits. Escanear en blanco y negro es un desperdicio, porque no tarda menos y procesar las imágenes después produce muy malos resultados. Como apaño, si no se va a procesar en absoluto (salvo recortar bordes), el blanco y negro vale, pero no podrás ni corregir páginas torcidas. Usando escaneos en gris a 300dpi nos aseguramos una definición de imagen suficiente para trabajar sobre las páginas. Por supuesto, si hay imágenes en color, en vez de gris tendremos que usar RGB de 24 bits.
El procesado de las páginas consiste básicamente en corregir la inclinación (rotación), separar las páginas dobles (si se ha escaneado así), ajustar márgenes y tamaño de página, aplicar alguna mejora opcional a la imagen (sharpen, etc.) y finalmente convertir la imagen en escala de grises a blanco y negro de 1 bit. Este último paso es el más importante y se debe realizar al terminar todo lo mencionado. La imagen de 300dpi en gris se agranda al doble de tamaño normalmente, y se aplica un threshold del valor adecuado para convertir a blanco/negro de 600dpi. Para terminar, se eliminan pequeñas marcas (despeckling) limpiando así la imagen.
Se utiliza 1bit por pixel (blanco y negro) porque el texto no requiere otro tipo de imagen y porque es el formato óptimo para compresión (usando algoritmos de fax como group 4, o los recientes JBIG2 o JB2). Con la resolución adecuada, que suele ser 600dpi, obtenddrás resultados excelentes que aprovecharán al máximo la definición de la impresora (si por el contrario tratas de imprimir una página en grises, obtendrás halftone con casi cualquier impresora). La imagen monocroma, al ser mostrada en pantalla a tamaño reducido, se convierte automáticamente a grises y lo verás perfectamente.
Si el libro tuviese imágenes, habría que extraerlas tal cual en su tamaño original y sin aplicar ningún threshold. Las imágenes suelen ser reproducidas en papel usando halftone, por lo que es necesario eliminar el halftone (con un desenfoque gaussiano con sigma apropiado para que borre los puntos y reduciendo después su tamaño hasta el mínimo necesario). Finalmente, pueden aplicarse mejoras en las imágenes como correción de niveles y sharpen.
Todos los procesos explicados se pueden (y se deben) hacer automáticamente con el magnífico programa ruso ScanKromsator (algo lioso al empezar), o con alguna alternativa como ScanTailor (recomendado para principiantes, porque lo hace todo automáticamente), el programa de línea de comandos unpaper, o la propia automatización que ofrece Photoshop (no recomendable, salvo para casos muy particulares).
El texto y las imágenes deben codificarse de forma distinta, porque son tipos de datos distintos y existen codecs específicos para cada uno. Para el texto, que será imagen de 1 bit, suelen usarse codecs de fax, como CCITT Group 4 (en TIFF o PDF), JBIG2 (en PDF) o JB2 (en DjVu). Las imágenes son imágenes de tono contínuo y deben codificarse con JPEG, JPEG2000 o cualquier otro para imágenes de este tipo (con transiciones suaves entre colores).
Yo uso DjVu porque soporta JB2 y es el algoritmo más eficiente. Este formato usa una capa para el texto (imagen de 1 bit) y otra opcional para las imágenes (codificadas en IW44, similar a JPEG2000). El problema de DjVu es que tendréis que usar los programas de línea de comandos de código abierto que existen, pero superan con creces a los de pago. Tenéis DjVuLibre (para todo) y minidjvu (para codificación de imágenes de 1 bit multipágina, que es con lo que aplasta al formato PDF). Puedo deciros que he comprimido diccionarios de más de 900 páginas a 600dpi en 40MB. Con PDF, lo hagáis como lo hagáis, es imposible conseguir estos resultados (como mucho llegaréis a 100MB en el mejor de los casos si sabéis lo que hacéis).
Sobre el texto OCR con DjVu, utilizo ABBYY FineReader sobre las páginas procesadas a 1 bit. Como FR no soporta DjVu, hay que usar un hack llamado FRFGrab para extraer el texto reconocido y su información posicional. Esto requiere usar la version 9 de FR, porque en las anteriores no es posible desactivar la rotación automática de las páginas (aunque estén ya enderezadas, da igual) y porque FRFGrab no soporta las nuevas versiones. Como un un hack un poco chapucero, a veces hay problemas con la ordenación de las páginas, y hay que parchear antes el batch de FR y siempre revisar los resultados a mano. Lo único bueno es que no es necesario pagar una licencia de FineReader, porque con la versión de prueba basta. Además de FR, también puede usarse Tesseract (que es mucho más flexible y es entrenable para reconocer otros idiomas, como inglés antiguo, pero los resultados con idiomas comunes no son tan buenos como los de FR).
Este peñazo es todo. Si alguien tiene dudas que yo pueda resolver, estaré encantado de ayudar.