Bibliohack Stack
Referencia de los componentes:
Dalclick
Dalclcik es un software escrito en Lua y Bash que debe ser cargado por CHDKPTP https://app.assembla.com/wiki/show/chdkptp
Dalclick abre una consola que le permite al usuario:
- generar un proyecto de digitalización
- activar y configurar cámaras Canon que tengan instalado CHDK
- descargar capturas desde las cámaras
- aplicar ciertos filtros básicos a las imágenes (resample, rotate, etc)
- mostrar en pantalla las imágenes capturadas
- sobreescribir capturas anteriores
- generar un proyecto scantailor
- generar un "job" de postproceso para su posterior ejecución
Dalclick maneja la mayoría de las funciones desde una interfaz de línea de comandos, pero incluye un módulo con una interfaz gráfica para facilitar el proceso de captura. La interfaz gráfica usa las librerías Tecgraf IUP (Portable User Interface) https://www.tecgraf.puc-rio.br/iup/, CD (Canvas Draw) https://www.tecgraf.puc-rio.br/cd/ e IM (toolkit for Digital Imaging) https://www.tecgraf.puc-rio.br/im/
Un proyecto dalclick es básicamente un árbol de directorios donde dalclick y demás componentes van guardando las imágenes correspondientes a los diferentes pasos del proceso de captura y post-proceso, y ciertos archivos de configuración en modo texto.
Opciones al inicio, normalmente se presiona ENTER y se continúa con el último proyecto abierto
Creación de un nuevo proyecto
Opciones de la pantalla de captura
Opciones avanzadas
Opciones para scantailor
Explorador GUI
Opciones de post-proceso
Opciones para acciones en lote sobre varios proyectos
Mensaje cuando falla una o las dos cámaras
CHDKPTP
CHDKPTP es una extensión PTP para CHDK, es decir, le permite a un dispositivo como una PC, comunicarse con una cámara digital que esté conectada mediante un enlace USB usando un protocolo PTP (Picture Transfer Protocol). https://app.assembla.com/wiki/show/chdkptp
Dalproc/fcen-tesis
Es una colección de scripts en Bash que procesa un 'job' de post-proceso generado por Dalclick, utilizando los recursos de post-procesado de "fcen-tesis" https://github.com/Bibliohack/fcen-tesis.
El script principal de fcen-tesis es fcen-postprocessing
, que aplica a los archivos cuatro instancias de postproceso a partir de una extensa lista de parámetros, utilizando diferentes librerías y aplicaciones:
- 1) filtro previo: corre un script en bash de la carpeta
/scripts/filters
que aplica imagen por imagen. - 2) scantailor-cli: utilizando la interfaz de linea de comandos de scantailor genera un proyecto y aplica el set de filtros de scantailor (en general) hasta conseguir una imagen TIFF apta para embeber en un pdf y realizar OCR (reconocimiento óptico de caracteres).
- 3) tesseract ocr: al resultado de scantailor-cli se le realiza un reconocimiento óptico de caracteres con tesserac ocr. El resultado es un archivo
.hOCR
, por cada imagen que contiene el texto reconocido y sus coordenadas de ubicación en la página. hOCR es un formato estándar XML. - 4) pdfbeads: genera un PDF a partir de los archivos generados por scantailor-cli (incluyendo los archivos con canales alfa que permiten combinar imágenes con distinta profundidad de color) y agrega el layer de texto "seleccionable" al PDF a partir de los hOCR generados por tesseract)
Dalproc da la posibilidad de correr un script al finalizar el proceso que permite, por ejemplo, mover o copiar el pdf obtenido a otra ubicación.
Dalclick da varias opciones de posproceso que Dalproc lleva adelante, en este caso describimos el proceso más estandarizado que es transformar las capturas de un libro en un archivo pdf con layer OCR y apto para distribuiirse vía web, pero en otros casos el resultado final puede o podría ser muy diferente.
CHDKPTP, LUA y TECGRAF
Este entorno de trabajo fue elegido por estar implementado en CHDKPTP, que es el "entorno" sobre el cual corre Dalclick. Lua, asi como las bibliotecas IUP, IM, y CD fueron desarrollados por el Grupo de Tecnología en Computación Gráfica (Tecgraf) en la Pontificia Universidad Católica de Río de Janeiro.
Scantailor y Scantailor-cli
Scantailor es un software de procesado de imágenes escrito en C++, desarrollado inicialmente por Joseph Artsimovich en 2007. Fue especialmente diseñado para optimizar las capturas provenientes de un dispositivo de digitalización de libros que use cámaras digitales y un estativo "en V", conocidos como diybookscanners.
Scantailor tiene una interfaz gráfica que le permite al usuario intervenir en cada uno de los 6 pasos o filtros que aplica a cada imagen:
- Orientación. Permite girar la imagen en pasos de 90º (esta operación ya la realiza Dalclick en el preprocesado)
- Partición de página. Da tres opciones para extraer páginas de las capturas: 1) toma el borde de la imagen como el borde de la página (1 página por captura), 2) recorta la página que esté completa y descarta lo demás (1y1/2 página por captura, el caso de los digitalizadores de libros) o 3) busca dos páginas por imagen (2 páginas por captura).
- Enderezado (deskew). Endereza la página colocando las líneas de texto exactamente horizontales.
- Selección de contenido. Detecta los bordes de todo el contenido de la página (que incluye los párrafos, fotos, ilustraciones, paginado etc). También puede tomar el borde de página como el límite de contenido.
- Márgenes. Aplica márgenes en blanco alrededor del contenido detectado en el paso anterior. Normalmente los amplios márgenes de las publicaciones en papel son un inconveniente en la versión para pantallas, este filtro permite aplicar márgenes pequeños.
- Salida. Esta última operación realiza una filtro de Umbral o Threshold que reduce la profundidad de color de la captura llevándola a blanco y negro. Aunque incluye más opciones, como realizar un filtro de contraste en vez de Umbral, o detectar imágenes presentes en la captura, seleccionar el área con un canal alfa y llevarlas a escala de grises, entre otras.
ver más en https://github.com/scantailor/scantailor/wiki/User-Guide
scantailor-cli es la version en línea de comandos de Scantailor, que permite implementar casi la totalidad de funciones disponibles en la interfaz gráfica, utlizando parámetros. Dalclick puede generar un proyecto .scantailor y abrirlo en scantailor, o utilizar scantailor-cli para procesar un proyecto sin intervención del usuario.
Tesseract
Tesseract es un motor de OCR actualmente desarrollado por Google, escrito en C++, que permite reconocer texto presente en una imagen. Su desempeño es muy similar al software (no libre) líder en el mercado ABBYY. Su principal implementación es a través de la linea de comando.
https://github.com/tesseract-ocr/tesseract
Tesseract bindings para diferentes lenguajes de programación : https://tesseract-ocr.github.io/tessdoc/AddOns.html#tesseract-wrappers
Pdfbeads
Pdfbeads
es un software escrito en Ruby
por Alexey Kryukov, que toma las imágenes tiff generadas por scantailor
(y también otras imágenes secundarias producidas por scantailor, como áreas en canales alfa e imágenes en escala de gris) y las integra en la hoja de un pdf, sumando el layer OCR a partir del archivo hOCR generado por tesseract.