Trabajo Fin de Grado Grado en Ingeniería de las...
Transcript of Trabajo Fin de Grado Grado en Ingeniería de las...
Equation Chapter 1 Section 1
Trabajo Fin de Grado
Grado en Ingeniería de las Tecnologías de
Telecomunicación
Digitalizador de Libros con Raspberry Pi
Autor: Ricardo Gabriel Portillo Criado
Tutor: Juan Manuel Vozmediano Torres
Dep. Ingeniería Telemática
Escuela Técnica Superior de Ingeniería
Universidad de Sevilla
Sevilla, 2016
iii
Trabajo Fin de Grado
Grado en Ingeniería de las Tecnologías de Telecomunicación
Digitalizador de Libros con Raspberry Pi
Autor:
Ricardo Gabriel Portillo Criado
Tutor:
Juan Manuel Vozmediano Torres
Profesor titular
Dep. Ingeniería Telemática
Escuela Técnica Superior de Ingeniería
Universidad de Sevilla
Sevilla, 2016
v
Trabajo Fin de Grado: Digitalizador de Libros con Raspberry Pi
Autor: Ricardo Gabriel Portillo Criado
Tutor: Juan Manuel Vozmediano Torres
El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros:
Presidente:
Vocales:
Secretario:
Acuerdan otorgarle la calificación de:
Sevilla, 2016
El Secretario del Tribunal
ix
Agradecimientos
Este proyecto supone un punto y aparte a mi andadura en el mundo de las Telecomunicaciones, no un punto
final. Agradecer en un primer lugar al gran apoyo y cariño recibido por parte de mis padres, Ricardo y Ana, los
cuales han aguantado los cambios de humor que supone estudiar una Ingeniería. Siempre proporcionándome
una sonrisa o un mensaje de ánimo. Tampoco olvidarme de la pequeña de la casa, mi hermana Ana, ni de mi
abuela, Encarna, y, por supuesto, de todos los que ya no están. Sin todos ellos esto no hubiera sido posible.
Gracias a Lucía, esa luz que ha iluminado durante cuatro años este duro camino, proporcionándome una
sonrisa cuando todo estaba negro. A mi primo y hermano, Carlos, sin él no sería quien soy ahora mismo. Y, en
general a toda mi familia.
Tampoco puedo olvidarme de todos mis amigos de la carrera, los innumerables momentos compartidos con
ellos hacen que las infinitas horas que se pasan en la Escuela sean más amenas.
Por supuesto, agradecer a Juan Manuel Vozmediano todo el apoyo que me ha proporcionado. Una figura a
seguir desde que lo conocí en segundo de carrera. Su infinito conocimiento hace que cada segundo que se pase
a su lado aprendas algo nuevo. Su inmenso interés por el mundo de las Telecomunicaciones, contagia al que
este a su lado.
Por último, también merece una mención especial AOIFES S.L., esa startup que ha hecho que me forme como
Ingeniero de Telecomunicaciones y con la que espero estar relacionado durante mucho tiempo.
Ricardo Gabriel Portillo Criado
Sevilla, 2016
xi
Resumen
El objetivo principal del proyecto es el desarrollo de una solución software que permita la conversión
semiautomática de cualquier documento de formato físico a digital. Este software, ha sido implementado en un
sistema de bajo consumo y coste, tal como Raspberry Pi 2 modelo B.
Esta solución ha sido desarrollada en ImageMagick®, una suite para la creación, edición, composición y
conversión de imágenes de una amplia variedad de formatos, tales como: PNG, JPEG, GIF o PDF. Su
funcionalidad es presentada por línea de comandos.
Paralelo al desarrollo software se ha diseñado y construido un atril para la sujeción del libro, la colocación de
los dispositivos que captarán las imágenes y la Raspberry Pi para la automatización. También se le
proporciona al usuario final una interfaz web sencilla desde la que accionar el proceso de la digitalización.
xiii
Abstract
The aim of the project is the development of a software solution that allows a semi-automatic conversion of
any document in physical format to digital format. This software has been implemented in a low power
consumption and system cost, such as Raspberry Pi 2 Model B.
This solution has been developed in ImageMagick®, a suite for creating, editing, composition and image
conversion of a wide variety of formats, such as PNG, JPEG, GIF or PDF. Its functionality is presented by
command line.
Parallel to the development software is designed and built a stand for holding the book, the placement of the
devices that will capture the images and the Raspberry Pi for automation. It also provides end user a simple
web interface from which enable the scanning process.
Índice
Agradecimientos ix
Resumen xi
Abstract xiii
Índice xiv
Índice de Tablas xvii
Índice de Figuras i
Notación iii
1 Introducción 1 1.1. Objetivos 1 1.2. Motivaciones 2 1.3. Soluciones existentes en el Mercado 2
1.1.1 Soluciones software 2 1.1.2 Soluciones hardware y software 2
1.4. Plan de trabajo 3 1.5. Estructura de la memoria 4
2 Recursos y Herramientas 5 2.1. Recursos humanos 5 2.2. Recursos hardware 5
2.2.1 Portátil MacBook Pro Retina 13 pulgadas (finales 2013) 6 2.2.2 Raspberry Pi 2 Model B 6 2.2.3 Huawei Ascend G7 7 2.2.4 Huawei P8 Lite 7 2.2.5 XCSOURCE® Disparador Remoto Inalámbrico Bluetooth 7 2.2.6 Atril 8
2.3. Recursos software 9 2.3.1 ImageMagick® 9 2.3.2 Centos 7 9 2.3.3 Microsoft Word 2011 9 2.3.4 VMware Fusion 9 2.3.5 ApplePi Baker 10
3 Requisitos del sistema 11 3.1. Introducción 11 3.2. Casos de Uso del Sistema 12
3.2.1 Especificación de Actores del Sistema 12 3.2.2 Especificación de Casos de Uso del Sistema 13
xv
3.3. Requisitos funcionales 15 3.3.1 Requisitos funcionales de información 15 3.3.2 Requisitos funcionales de conducta 15
3.4. Requisitos no funcionales 17 3.4.1 Requisitos de fiabilidad 17 3.4.2 Requisitos de portabilidad 18 3.4.3 Requisitos de disponibilidad 18 3.4.4 Requisitos de eficiencia 19 3.4.5 Requisitos de usabilidad 20
3.5. Restricciones técnicas 20
4 Previo a la automatización 23 4.1. Conexiones de los dispositivos móviles a Raspberry Pi 23
4.1.1 MTP 23 4.1.2 PTP 24 4.1.3 Almacenamiento Masivo 24
4.2. Interfaz de usuario y parámetros de interés 25 4.3. Escenario 27 4.4. Rendimiento del sistema 27
5 Implementación 28 5.1. Proceso de digitalización 28
5.1.1 Inicio de la conversión 29 5.1.2 Detección de bordes 29 5.1.3 Extracción del área sin bordes 32 5.1.4 Generación del PDF 32 5.1.5 Almacenamiento del PDF en la carpeta exportada 33
5.2. Desarrollo interfaz web 34
6 Pruebas Realizadas 35 6.1. Introducción 35 6.2. Pruebas realizadas 36
6.2.1 Pruebas de unidad 36 6.2.2 Pruebas de integración 38 6.2.3 Pruebas de validación 39 6.2.4 Pruebas de sistema 40
7 Conclusiones y líneas de continuación 41 7.1. Problemas encontrados 41 7.2. Conclusiones 42 7.3. Líneas futuras 42
Referencias 45
Anexo A: Manual de instalación 47
Anexo B: Construcción Atril 53
Anexo C: Manual de Usuario 57
xvii
ÍNDICE DE TABLAS
Tabla 1.- Actores del sistema 12
Tabla 2.- CU-01 14
Tabla 3.- INF-01 15
Tabla 4.- COND-01 15
Tabla 5.- COND-02 16
Tabla 6.- COND-03 16
Tabla 7.- COND-04 16
Tabla 8.- COND-05 17
Tabla 9.- FIA-01 17
Tabla 10.- PORT-01 18
Tabla 11.- DIS-01 18
Tabla 12.- EFI-01 19
Tabla 13.- EFI-02 19
Tabla 14.- US-01 20
Tabla 15.- RT-01 20
Tabla 16.- RT-02 21
Tabla 17.- RT-03 21
Tabla 18 .- Rendimiento del sistema 27
Tabla 19.- PUD-01 36
Tabla 20.- PUD-02 36
Tabla 21.- PUD-03 37
Tabla 22.- PUD-04 37
Tabla 23.- PUD-05 38
Tabla 24.- PI-01 38
Tabla 25.- PV-01 39
Tabla 26.- PS-01 40
ÍNDICE DE FIGURAS
Figura 1.- Book2Net Spirit A3 3
Figura 2.- Raspberry Pi 2 Model B 6
Figura 3.- Disparador Remoto Inalámbrico XCSOURCE® 8
Figura 4.- Atril 8
Figura 5.- Diagrama de Casos de Uso 13
Figura 6.- Interfaz web: Índice de directorios 25
Figura 7.- Interfaz web: Formulario 25
Figura 8.- Interfaz web: Página de espera 26
Figura 9.- Carpeta books 26
Figura 10.- Fases del proceso de digitalización 28
Figura 11.- Imagen de ejemplo a digitalizar 29
Figura 12.- Resultado de convert –hough-lines 31
Figura 13.- Imagen con bordes resaltados 31
Figura 14.- Imagen resultante al extraerle los bordes 32
Figura 15.- Resumen permisos Apache 33
Figura 16.- Interfaz ApplePi Baker 47
Figura 17.- Interfaz web 50
Figura 18 .- Tablon de 60x40cm 53
Figura 19 .- Estructura de metacrilato 54
Figura 20.- Soporte de madera 54
Figura 21.- Atril de frente 55
Figura 22.- Interfaz web: Índice de directorios 57
Figura 23.- Interfaz web: Formulario 58
Figura 24.- Interfaz web: Página de espera 58
Figura 25.- Carpeta books con PDF resultante 59
iii
Notación
PNG Portable Network Graphics
GIF Graphics Interchange Format
PDF Portable Document Format
RHEL Red Hat Enterprise Linux
MTP Media Transfer Protocol
PTP Picture Transfer Protocol
USB Universal Serial Bus
NOOBS New Out Of Box Software
MVG Magick Vector Graphics
HTTP Hypertext Transfer Protocol
CSS Cascading Style Sheets
PHP Pre Hypertext Processor
1
1 INTRODUCCIÓN
n este apartado se abordarán las principales motivaciones que han llevado al desarrollo de este proyecto.
Para ello se presentará cual es el objetivo que se quiere alcanzar con el proyecto, continuando con el
análisis de las motivaciones personales que han llevado a la realización del mismo.
Una vez abarcados el objetivo y las motivaciones, se realizará una comparativa de las distintas soluciones
existentes en el mercado con la solución que se oferta.
Como conclusión a este apartado, se expondrá una breve descripción de la estructura de la memoria y del plan
de trabajo que se ha seguido para alcanzar los objetivos presentados.
1.1. Objetivos
El objetivo de este proyecto es el desarrollo de una solución software que permita la conversión
semiautomática de documentos en formato físico a digital. Además, se realizará, de manera paralela al
desarrollo software, el diseño y la construcción de un atril para la sujeción del libro.
Cabe destacar que la solución presentada no es completamente automática debido a que se requiere de la
interacción del usuario para el paso de páginas y el accionamiento de los dispositivos capturadores para la
toma de fotografías.
El software ha sido implementado como un Script de Servicio en una Raspberry Pi 2 modelo B, aprovechando
sus características de bajo consumo y coste. Para el desarrollo del Script se ha utilizado el software libre
ImageMagick® [1], que permite la creación, edición, composición y conversión de imágenes de cualquier
formato.
Para iniciar el proceso de digitalización, se le proporciona al usuario una interfaz web sencilla desde la cual
podrá rellenar un formulario para configurar ciertos parámetros necesarios en la digitalización. Una vez se
haya generado el documento en formato digital, este será accesible para el usuario desde la página principal de
la interfaz web desarrollada, con el objetivo de hacer más cómodo el acceso a los documentos generados al
usuario.
E
“La ciencia puede divertirnos y fascinarnos, pero es la
Ingeniería la que cambia el mundo”.
-Isaac Asimov-
Introducción
2
1.2. Motivaciones
El auge de las tecnologías en los últimos años ha propiciado la popularización de los libros en formato digital
en comparación con el formato físico. Esta popularización es consecuencia de la accesibilidad que actualmente
tiene la sociedad a tablets, móviles, portátiles e, incluso, la nube, para hacer uso de los documentos en este
formato.
El formato digital, cada vez más utilizado, proporciona múltiples ventajas en comparación con el físico como,
por ejemplo, la posibilidad de compartirlo con varias personas, la posibilidad de edición o agregación de
comentarios o la interoperabilidad que ofrece el formato digital, que permite tener cualquier documento en
cualquier dispositivo que lo soporte.
Como consecuencia de este auge, se ha optado por el desarrollo de la solución anteriormente presentada que
facilite al usuario final la conversión de un documento físico, tal como un libro, a formato digital, como puede
ser PDF. Permitiéndole compartir el archivo resultante en todos sus dispositivos.
1.3. Soluciones existentes en el Mercado
Actualmente, y como consecuencia del rápido crecimiento en las tecnologías, el uso de documentos en
formato físico ha disminuido considerablemente. Esto ocasiona que la solución que ofrecemos no sea la única
existente en el mercado.
Si realizamos un estudio de las diferentes soluciones ofertadas podemos encontrar tanto soluciones software
como soluciones hardware y software.
1.1.1 Soluciones software
CamScanner [2]: es una aplicación totalmente gratuita y multiplataforma que permite digitalizar
cualquier documento y almacenarlo en formato PDF. Además, ofrece un reconocimiento de bordes, y
permite agrupar un conjunto de imágenes en un mismo PDF y compartir los documentos escaneados
con todos los dispositivos asociados.
Genius Scan [3]: es una aplicación totalmente gratuita para los sistemas operativos Android e iOS.
Esta aplicación permite escanear los documentos con nuestro dispositivo móvil y exportarlos como
archivos JPEG o PDF de varias páginas. Además, ofrece potentes herramientas para la gestión y
exportación de los documentos generados.
1.1.2 Soluciones hardware y software
Book2Net Spirit A3 [4]: ofrece una solución tanto software como hardware para la digitalización
automática de libros. Este digitalizador de libros es capaz de adaptarse dinámicamente a las
condiciones de luminosidad, gracias a un sistema de iluminación LED. También ofrece, un sistema de
autocalibrado, con el que consigue resultados óptimos.
3
3 Digitalizador de Libros con Raspberry Pi
Además, incluye la Pantalla Táctil integrada se asegura un manejo fácil hasta para usuarios sin
experiencia.
Figura 1.- Book2Net Spirit A3
1.4. Plan de trabajo
La realización del proyecto conlleva una serie de tareas para alcanzar los objetivos propuestos en apartados
anteriores. Estas tareas son las siguientes:
1. Estudiar el estado del arte, es decir, realizar una investigación en el mercado actual sobre que
aplicaciones o productos ofrecen una solución similar a la que buscamos ofrecer.
2. Determinar qué tecnologías podemos utilizar para el desarrollo del proyecto (tanto software como
hardware). Realizar un estudio de los software existentes para la edición de imágenes y tomar
decisiones en función de lo que nos ofrece cada uno.
3. Una vez tenemos decidido el software a utilizar, ver que sistema operativo nos ofrece las prestaciones
necesarias para el desarrollo de la aplicación.
4. Montaje del atril que nos dará soporte para colocar los documentos físicos a convertir. Este montaje
implica también el soporte para los dispositivos captadores de imágenes.
5. Desarrollo del código que permita, haciendo uso del software anteriormente seleccionado, la
detección automática de bordes y la conversión de formato físico a formato digital.
6. Desarrollo de la interfaz web que se proporcionará al usuario para interactuar con el software.
7. Realizar una batería de pruebas para garantizar la robustez de la solución.
8. Documentación explicativa de la solución y redacción del manual de usuario.
Introducción
4
1.5. Estructura de la memoria
En este subapartado detallaremos los contenidos que cubren la memoria, realizando una breve descripción de
lo que abarcará cada uno de ellos.
1. Introducción. En este apartado que acabamos de tratar se han abordado las motivaciones que han
llevado al desarrollo de este proyecto, el objetivo que se quiere alcanzar con el proyecto y la
realización de una comparativa de las distintas soluciones existentes en el mercado con la solución
que se oferta.
2. Recursos y herramientas. En este punto se describirán los distintos recursos (hardware, software y
humanos) que han sido necesarios para la realización del proyecto.
3. Requisitos del sistema. En este apartado se detallarán los distintos requisitos tanto funcionales como
no funcionales necesarios para que la solución ofrecida funcione correctamente.
4. Previo a la automatización. En este apartado se realizará una descripción del escenario sobre el que se
realizarán las pruebas y de algunos parámetros que se consideren de interés para la realización del
proyecto.
5. Implementación. Apartado central de la memoria del proyecto. En él, se detallará como se ha
desarrollado el proyecto. Dando motivos de qué se ha hecho y por qué se ha hecho, sin entrar en
detalle en los comandos utilizados.
6. Pruebas. En este punto se describirán las distintas pruebas a las que se ha sometido el software para
garantizar la robustez del mismo.
7. Conclusiones y líneas futuras. En este apartado recogeremos la problemática encontrada a lo largo del
desarrollo del proyecto, así como, las posibles mejoras que, en un futuro, se podrían diseñar y aplicar
al proyecto.
5
2 RECURSOS Y HERRAMIENTAS
odo proyecto necesita de la existencia de ciertos recursos para lanzarse al mercado. Esos recursos no
solo son los económicos, pues también hay otros elementos que son imprescindibles durante el
desarrollo del proyecto, como los recursos humanos, los recursos software y los recursos hardware.
Es por lo que en este apartado abarcaremos los distintos recursos que han sido necesarios para el desarrollo del
proyecto, enumerando las principales características de cada uno de ellos.
2.1. Recursos humanos
En la realización de este proyecto han participado de manera activa dos personas:
Ricardo Gabriel Portillo Criado. Alumno encargado del desarrollo del proyecto. Realizando tareas de
investigación, diseño y desarrollo.
Durante el desarrollo del proyecto ambos han mantenido una serie de reuniones mensuales en las que el tutor
del proyecto le detallaba al alumno as especificaciones y requisitos del software a desarrollar. También, en
estas reuniones mensuales, se ha llevado un seguimiento sobre el desarrollo del proyecto.
2.2. Recursos hardware
En este apartado detallaremos los recursos hardware que han sido utilizados durante la realización del
proyecto, incluyendo las características de los mismos.
T
“En los momentos de crisis sólo la creatividad es más
importante que el conocimiento”.
-Albert Einstein-
Recursos y Herramientas
6
2.2.1 Portátil MacBook Pro Retina 13 pulgadas (finales 2013)
Portátil principal en el que se ha desarrollado todo el proyecto. Consta de las siguientes características:
Sistema Operativo: OS X El Capitán (v. 10.11.4)
Procesador : 2,4 GHz Intel Core i5
RAM: 8 GB 1600 MHz DDR3
Gráficos: Intel Iris 1536 MB
Almacenamiento: 250GB
2.2.2 Raspberry Pi 2 Model B
Dispositivo [5] en el que se instalará el software desarrollado. Consta de las siguientes características:
Sistema Operativo: Centos 7
Procesador : ARM Cortex-A7 Quad-Core a 900 MHz
RAM: 1GB
Puertos USB 2.0: 4
Puertos Ethernet: 1
Lector para tarjetas MicroSD
40 pines GPIO
Alimentada a 5V
Figura 2.- Raspberry Pi 2 Model B
7 Digitalizador de Libros con Raspberry Pi
2.2.3 Huawei Ascend G7
Dispositivo móvil dedicado para la captura de fotos. Las características son las siguientes:
Sistema Operativo: Android v5.1.1
Procesador: Qualcomm Snapdragon 410 de 4 núcleos a 1.2 GHz
RAM: 2GB
Almacenamiento: 16GB
Cámara principal: 13 MP
Conectividad: LTE Cat.6 y Bluetooth 4.0
Compatibilidad con protocolo de transferencia multimedia (MTP)
2.2.4 Huawei P8 Lite
Dispositivo móvil dedicado para la captura de fotos. Las características son las siguientes:
Sistema Operativo: Android v5.1.1
Procesador: Qualcomm Hisilicon Kirin 620 CPU 8 X 1.2GHz
RAM: 2GB
Almacenamiento: 16GB
Cámara principal: 13 MP
Conectividad: LTE Cat.6 y Bluetooth 4.0
Compatibilidad con protocolo de transferencia multimedia (MTP)
2.2.5 XCSOURCE® Disparador Remoto Inalámbrico Bluetooth
Controlador Bluetooth remoto utilizado para la accionar remotamente los dispositivos móviles para la captura
de fotos. En nuestro proyecto se utilizará uno para el dispositivo móvil. Las características son las siguientes:
Marca : ASHUTB
Modelo: DC450
Comunicación: Bluetooth v3.0
Frecuencia de transmisión: 2.4GHz - 2.4825GHz
Distancia de la comunicación: 10 m
Compatible con Android 4.2.2 OS o posterior y iOS 6.0 o posterior
Recursos y Herramientas
8
Figura 3.- Disparador Remoto Inalámbrico XCSOURCE®
2.2.6 Atril
Soporte diseñado y montado por el desarrollador del proyecto siguiendo los consejos del tutor.
Figura 4.- Atril
Este soporte de madera nos permite sostener los documentos a convertir en formato digital en una posición
horizontal. Consta de una base de madera, dos placas de madera que hacen de soporte y dos placas de
metacrilato que forman un ángulo de unos 90 grados que evitan el doblez de las páginas en la toma de la
fotografía (sin afectar a la nitidez de la imagen).
9 Digitalizador de Libros con Raspberry Pi
2.3. Recursos software
En este apartado detallaremos los recursos software que han sido utilizados durante la realización del proyecto,
incluyendo las características de los mismos.
2.3.1 ImageMagick®
Software libre utilizado para la manipulación de las fotografías captadas por los dispositivos móviles. Se
utiliza en su versión 7.0.2-2 (del 29 de junio de 2016). Este software, al no poseer interfaz gráfica, se basa
principalmente en un conjunto de utilidades por línea de comandos, ofreciendo diversos comandos para la
creación, edición, composición y conversión de imágenes de una amplia variedad de formatos. En este
proyecto el comando más usado será convert.
Cabe destacar que para la realización de este proyecto se requiere como mínimo la versión 6.8.9.1 [5], debido
a que a partir de esta versión es donde se incluye el Hough Line Detector, que es una pieza fundamental en el
desarrollo del proyecto. Este detector nos permite identificar cualquier tipo de línea recta que aparezca en la
imagen a procesar. El uso del mismo será desarrollado en apartados posteriores.
2.3.2 Centos 7
Sistema operativo sobre el que se desarrolla el proyecto. Se utiliza su versión 7 adaptada para Raspberry Pi 2.
El principal motivo de utilizar esta distribución de Linux, en vez de Raspbian, es la compatibilidad y
estabilidad ofrecida por la distribución Centos [6]. Esta distribución deriva de Red Hat Enterprise Linux, una
de las distribuciones comerciales más estables. Esto permite una compatibilidad del 100% con los binarios de
las aplicaciones desarrolladas para RHEL.
Además, ofrece una alta compatibilidad en el funcionamiento con ImageMagick. Soportando la versión
requerida para el proyecto (6.9.3-4).
2.3.3 Microsoft Word 2011
Aplicación utilizada para la redacción y modificación de todos los documentos necesarios para el proyecto.
Utilizada su versión adaptada para Mac (14.6.4).
2.3.4 VMware Fusion
Software de virtualización de escritorios optimizado. Permite ejecuta uno o más sistemas operativos dentro de
un mismo ordenador sin necesidad de reiniciarlo. Ofrece una sencilla interfaz de usuario. Utilizado en su
versión 7.1.3.
Este software es utilizado para virtualizar Centos 7 sobre el portátil MacBook Pro descrito anteriormente. El
objetivo de esta virtualización es para la realización de pruebas antes de pasar al sistema operativo real en la
Raspberry Pi.
Recursos y Herramientas
10
2.3.5 ApplePi Baker
ApplePi Baker [6] es una utilidad para OS X que nos permite grabar en una tarjeta SD las imágenes de los
diferentes sistemas que podemos instalar en la Raspberry Pi. Incluso, instalar NOOBS, distribución que da
opción de instalar varios sistemas en una misma tarjeta. Permite realizar este proceso de flasheo precindiendo
completamente de la terminal.
Se ha decidido a utilizar esta utilidad debido a su gran funcionamiento y a su buena utilidad para tales tareas.
11
3 REQUISITOS DEL SISTEMA
L propósito de la gestión de requisitos es asegurar que el proyecto cumple con las expectativas de los
clientes, siendo el proceso que garantiza el vínculo entre lo que esperan los clientes y usuarios finales, y
lo que los equipos de encargados de la realización del proyecto tienen que desarrollar.
3.1. Introducción
Para que la gestión de requisitos sea fructífera es necesario tener claro el concepto de requisito. Un requisito es
una condición o capacidad que necesita el usuario para resolver un problema o conseguir un determinado
objetivo. También se aplica a las condiciones que debe cumplir o poseer un sistema o uno de sus componentes
para satisfacer un contrato, una norma o una especificación.
Un requisito [7] para que se considere como tal tiene que cumplir una serie de características: que sea
necesario (su omisión provoca una deficiencia en el sistema), conciso (fácil de comprender), completo
(proporciona una información suficiente), consistente (sin contradicciones), no ambiguo (una sola
interpretación) y verificable.
Una vez presentada la definición de lo que es un requisito y de la gestión de requisitos, y retomando el
proyecto que nos ocupa, existe una fase de toma de requisitos. Esta fase se llevó a cabo a principios del
proyecto para el diseño del software y a mediados del proyecto para el diseño del harware (el soporte de
sujeccion para libros).
En el desarrollo de esta fase participaron el tutor del proyecto y el desarrollador del proyecto, teniendo
reuniones en las que el tutor especificaba qué objetivos se querían alcanzar con el proyecto y describiendo el
comportamiento que tendría que tener el software a desarrollar.
En este documento se hará una división de requisitos en dos tipos:
Requisitos funcionales. Declaración de los servicios que el sistema debe proporcionar, cómo debe
reaccionar a una entrada particular y cómo se debe comportar ante situaciones particulares. Describen
la funcionalidad del sistema, y dependen del tipo de software, del sistema a desarrollar y de los
usuarios del mismo.
Requisitos no funcionales. Propiedades o cualidades que el producto debe tener. Restricciones que
afectan a los servicios o funciones del sistema, tales como restricciones de tiempo, sobre el proceso de
desarrollo, estándares, etc. Los requerimientos no funcionales tienen que ver con características que de
una u otra forma puedan limitar el sistema, como por ejemplo, el rendimiento (en tiempo y espacio),
interfaces de usuario, fiabilidad (robustez del sistema, disponibilidad de equipo), mantenimiento,
seguridad o portabilidad.
E
“Puedes preguntar a los clientes qué quieren, y
después intentar dárselo. Pero, en el momento en que
puedas proporcionárselo, ellos querrán algo
completamente nuevo”.
- Steve Jobs -
Requisitos del sistema
12
3.2. Casos de Uso del Sistema
En este subapartado recogeremos los diagramas de casos de uso de nuestro sistema. Recordar que un diagrama
de caso de uso es la descripción de interacciones entre el sistema y uno o más actores (personas o sistemas
externos) en la que se considera al sistema como una caja negra y en la que los actores obtienen resultados
observables
3.2.1 Especificación de Actores del Sistema
3.2.1.1 Actores del Sistema
ACT-01 Usuario
Versión 1.0
Descripción Este actor de negocio actual representa típicamente al
usuario, que es quien quiere utilizar el sistema desarrollado
para la conversión de un documento físico a formato
digital.
Fuente Cliente
Comentarios El término usuario se refiere a cualquier persona que
quiera hacer uso del sistema.
Tabla 1.- Actores del sistema
13 Digitalizador de Libros con Raspberry Pi
3.2.2 Especificación de Casos de Uso del Sistema
3.2.2.1 Diagramas de Casos de Uso del Sistema
Figura 5.- Diagrama de Casos de Uso
Requisitos del sistema
14
3.2.2.2 Casos de Uso del Sistema
CU-01 Conversión a formato digital
Versión 1.0
Descripción El sistema deberá comportarse como se describe en el
siguiente caso de uso cuando el usuario, que quiere hacer
uso del sistema (ACT-01), quiera realizar una conversión
de un documento a formato digital.
Precondición 1. El usuario (ACT-01) debe colocar el documento
a digitalizar sobre el atril
2. El usuario (ACT-01) debe iniciar la Raspberry Pi
3. El usuario (ACT-01) debe colocar los
dispositivos captadores de imágenes en la
posición adecuada
El usuario (ACT-01) debe acceder a la Raspberry Pi a
través de un navegador y rellenar el formulario de
configuración.
Postcondición -
Importancia Es un requisito imprescindible.
Fuente Cliente
Prioridad Alta
Estado Validado
Comentarios -
Tabla 2.- CU-01
15 Digitalizador de Libros con Raspberry Pi
3.3. Requisitos funcionales
En este apartado se enumerarán los distintos requisitos funcionales que debe cumplir el proyecto a desarrollar.
3.3.1 Requisitos funcionales de información
INF-01 Resultado de la conversión a formato digital
Versión 1.0
Descripción El sistema deberá almacenar el resultado de la conversión del documento en formato físico a digital en
una carpeta exportada por Apache.
Importancia Es un requisito imprescindible para el cliente debido a que es la única fuente por la que puede obtener el
resultado de la conversión.
Fuente Cliente
Prioridad Alta
Estado En fase de implementación
Comentarios Se hará uso de la opción Indexes de Apachen para mostrar un índice de directorios.
Tabla 3.- INF-01
3.3.2 Requisitos funcionales de conducta
COND-01 Única conversión por documento físico
Versión 1.0
Descripción El sistema solo deberá realizar una única conversión a formato digital por documento.
Importancia Es un requisito imprescindible para el cliente debido a que evita la duplicidad de documentos en formato
digital.
Fuente Cliente
Prioridad Alta
Estado En fase de implementación
Comentarios -
Tabla 4.- COND-01
Requisitos del sistema
16
COND-02 Inicio del software al arranque del sistema operativo
Versión 1.0
Descripción El sistema deberá comenzar a funcionar al arranque del sistema operativo instalado en la Raspberry Pi.
Importancia Es un requisito importante, así el usuario sólo tiene que rellenar el formulario web.
Fuente Cliente
Prioridad Alta
Estado En fase de implementación
Comentarios Se realizará como un Script de Servicio.
Tabla 5.- COND-02
COND-03 Conversión transparente para el usuario
Versión 1.0
Descripción El sistema deberá realizar todo el proceso de tratamiento de la imagen y conversión a formato digital de
forma transparente para el usuario.
Importancia Importante al restar complejidad al usuario.
Fuente Cliente
Prioridad Alta
Estado En fase de implementación
Comentarios No se le notificará al usuario en ningún momento durante el proceso de conversión
Tabla 6.- COND-03
COND-04 Almacenamiento del resultado en la carpeta books exportada por Apache
Versión 1.0
Descripción El sistema solo deberá almacenar el resultado en una carpeta exportada por Apache.
Importancia Es un requisito importante para evitar que el usuario tenga que interacturar con el sistema de ficheros de
la Raspberry Pi.
Fuente Cliente
Prioridad Alta
Estado En fase de implementación
Comentarios El usuario sólo tendrá que seguir el manual proporcionado para acceder al resultado.
Tabla 7.- COND-04
17 Digitalizador de Libros con Raspberry Pi
COND-05 Parámetros de configuración
Versión 1.0
Descripción El sistema se deberá configurar para realizar la conversión.
Importancia Es un requisito importante dado que el sistema debe configurarse como le indique el usuario, a través de
la interfaz web ofrecidad, para indicar el título del documento resultante.
Fuente Cliente
Prioridad Alta
Estado En fase de implementación
Comentarios -
Tabla 8.- COND-05
3.4. Requisitos no funcionales
En este apartado se enumerarán los distintos requisitos funcionales que debe cumplir el proyecto a desarrollar.
3.4.1 Requisitos de fiabilidad
FIA-01 Fiabilidad
Versión 1.0
Descripción El sistema deberá garantizar la integridad de los ficheros que procesará.
Importancia Es un requisito imprescindible dado que los ficheros deben mantenerse en su estado original y sin
alteraciones ante fallos.
Fuente Cliente
Prioridad Alta
Estado En fase de implementación
Comentarios -
Tabla 9.- FIA-01
Requisitos del sistema
18
3.4.2 Requisitos de portabilidad
PORT-01 Portabilidad
Versión 1.0
Descripción El software deberá poder funcionar en distintas distribuciones de Linux y podrá utilizarse cualquier
dispositivo móvil para la captación de las imágenes siempre y cuando el modo de conexión sea
almacenamiento masivo.
Importancia Es un requisito imprescindible debido a la alta variedad de dispositivos móviles y sistemas operativos
existentes en el mercado.
Fuente Cliente
Prioridad Alta
Estado En fase de implementación
Comentarios Las distribuciones tendrán que cumplir las restricciones técnicas.
Tabla 10.- PORT-01
3.4.3 Requisitos de disponibilidad
DIS-01 Disponibilidad
Versión 1.0
Descripción El software deberá poder ser accesible para el usuario para cuando él quiere hacer uso del mismo.
Importancia Es un requisito importante porque el sistema debe estar accesible cada vez que el usuario quiera utilizarlo
y, además, sin fallos.
Fuente Cliente
Prioridad Alta
Estado En fase de implementación
Comentarios -
Tabla 11.- DIS-01
19 Digitalizador de Libros con Raspberry Pi
3.4.4 Requisitos de eficiencia
EFI-01 Coste mínimo
Versión 1.0
Descripción El software deberá reducir los costes en lo relativo al consumo eléctrico.
Importancia Es un requisito importante porque en documentos de larga envergadura el tiempo de funcionamiento
deberá ser alto y el consumo bajo.
Fuente Cliente
Prioridad Alta
Estado En fase de implementación
Comentarios Esto es posible gracias al uso de un dispositivo de bajo consumo como Raspberry Pi.
Tabla 12.- EFI-01
EFI-02 Eficiencia
Versión 1.0
Descripción El software no deberá tardar un tiempo mayor de 20 segundos en convertir una página de formato físico a
digital.
Importancia Es un requisito importante porque reduce los tiempos de espera del usuario.
Fuente Cliente
Prioridad Alta
Estado En fase de implementación
Comentarios -
Tabla 13.- EFI-02
Requisitos del sistema
20
3.4.5 Requisitos de usabilidad
US-01 Usabilidad
Versión 1.0
Descripción El usuario no tendrá un tiempo de demora superior a 2 minutos en poder utilizar el software al encender
la Raspberry Pi.
Importancia Es un requisito importante porque reduce los tiempos de espera del usuario.
Fuente Cliente
Prioridad Alta
Estado En fase de implementación
Comentarios Se realizará como un Script de Servicio.
Tabla 14.- US-01
3.5. Restricciones técnicas
RT-01 Versión de ImageMagick®
Versión 1.0
Descripción El software deberá usar una versión de ImageMagick® igual o superior a la 6.8.9.1.
Importancia Es una restricción imprescindible dado de la necesidad de usar el Hough Line Detector
Fuente Cliente
Prioridad Alta
Estado En fase de implementación
Comentarios Versiones anteriores no incluyen ese algoritmo.
Tabla 15.- RT-01
21 Digitalizador de Libros con Raspberry Pi
RT-02 Ejecución única por usuario
Versión 1.0
Descripción Un usuario sólo podrá hacer uso del sistema a desarrollar.
Importancia Es una restricción imprescindible al ser un sistema que sólo procesa las imágenes captadas por los
dispositivos móviles.
Fuente Cliente
Prioridad Alta
Estado En fase de implementación
Comentarios -
Tabla 16.- RT-02
RT-03 Dispositivos con almacenamiento masivo
Versión 1.0
Descripción El usuario sólo podrá usar dispositivos de almacenamiento masivo para tomar las fotografías
Importancia Es una restricción imprescindible al ser el modo de conexión para que ha sido desarrollado el software
Fuente Cliente
Prioridad Alta
Estado En fase de implementación
Comentarios -
Tabla 17.- RT-03
23
4 PREVIO A LA AUTOMATIZACIÓN
n este apartado se abordaran diversos aspectos relativos al funcionamiento del software a desarrollar
previo a la implementación del mismo.
4.1. Conexiones de los dispositivos móviles a Raspberry Pi
A la hora de conectar un smartphone a un ordenador o, en nuestro caso, a la Raspberry Pi solemos
encontrarnos con diferentes opciones de hacerlo, cada una con sus características, ventajas e inconvenientes.
En este subapartado vamos a realizar una visión global de los tres principales modos de conexión que ofrecen
la mayoría de dispositivos móviles, tales como Tablets o móviles.
Una vez sean presentados y comparados, se realizará una explicación del modo de conexión seleccionado para
la realización del presente proyecto. Cabe destacar que, como las pruebas para las pruebas se han utilizado un
dispositivo Android, esta comparativa estará orientada a dicho sistema operativo.
4.1.1 MTP
MTP [8] es un protocolo cuyo propósito principal es la transferencia de archivos informáticos multimedia y
sus metadatos a/desde dispositivos, con la posibilidad de controlar remotamente el dispositivo, leyendo o
estableciendo algunos de sus parámetros. Es el protocolo utilizado por defecto para establecer las conexiones
con el ordenador. Cuando la conexión es establecida a través de MTP, el dispositivo pasa a ser un “dispositivo
multimedia” de cara al sistema operativo.
A través de este método el sistema operativo al que se conecta no tiene control en ningún momento sobre el
dispositivo de almacenamiento, sino que se comporta de manera similar a como lo hace una conexión cliente-
servidor
1. Conectamos el dispositivo móvil al ordenador/Raspberry Pi via USB.
2. Montamos la memoria de almacenamiento.
3. El móvil envía al ordenador una lista de sus archivos.
E
“Si decides hacer solo las cosas que sabes que van a
funcionar, dejarás un montón de oportunidades encima
de la mesa”.
- Jeff Bezos -
Previo a la automatización
24
24
4. El ordenador/Raspberry Pi envía una solicitud de descarga de archivo.
5. El móvil le envía una copia del archivo, que se descarga a través del cable hasta el destino.
6. Se reenvía una lista de archivos y se cierra la conexión a la espera de respuesta.
En caso de necesitar enviar un archivo:
1. Se envía una solicitud de transferencia de archivo.
2. El dispositivo móvil la acepta.
3. Se empieza a enviar el archivo.
Este protocolo tiene algunos inconvenientes como por ejemplo, que es más inestable que el almacenamiento
masivo y mucho menos compatible, por ejemplo con sistemas operativos Linux o Mac. Esto es debido a que
MTP depende de unos drivers específicos y privativos para funcionar.
Para el desarrollo del proyecto, debido al carácter bloqueante del protocolo, se descarta este método de
conexión debido a que se requiere un modo que se pueda automatizar.
4.1.2 PTP
PTP [9] es un protocolo permite la transferencia de imágenes desde cámaras digitales hacia ordenadores o
hacia otros dispositivos digitales sin la necesidad de instalar controladores.
En el modo PTP el smartphone se comporta como una cámara de fotos sin soporte MTP, es decir, únicamente
como PTP. Este modo es recomendable únicamente si el usuario quiere transferir fotografías de una manera
sencilla, ya que permite pasar fotos del dispositivo al ordenador sin la necesidad de utilizar ningún software
adicional.
Este tipo de conexión es la menos utilizada por los usuarios. También descartado por los mismos motivos que
MTP, su carácter bloqueante.
4.1.3 Almacenamiento Masivo
Este modo [10] es sin duda uno de los más útiles, compatibles y sencillos de utilizar. En este modo el
dispositivo se conecta como si se tratase de una memoria USB o un disco duro externo convencional, de modo
que podemos trabajar con dicho espacio de almacenamiento sin ningún problema. En el caso de que el
dispositivo tenga una tarjeta de memoria externa, esta se monta también independientemente como otro
dispositivo de almacenamiento.
El principal problema de este modo es que cuando se conecta al ordenador y se activa, los datos dejan de estar
disponibles en el smartphone hasta que se desconecte el almacenamiento masivo del ordenador, lo que
también puede ocasionar algún fallo en las aplicaciones al intentar acceder a los datos.
Las versiones más recientes de Android han aumentado la seguridad de los datos almacenados en los
smartphones y tablets (por ejemplo impidiendo el acceso a ellos si el dispositivo está bloqueado) y con ello
han eliminado la compatibilidad con este tipo de conexión, dejando disponibles únicamente las conexiones
MTP y PTP junto a las ventajas y desventajas de las mismas. Para poder activarlo se requiere el modo
depuración de Android (activable en opciones de desarrollador).
25 Digitalizador de Libros con Raspberry Pi
4.2. Interfaz de usuario y parámetros de interés
Se ha diseñado una interfaz web básica que consta de un índice de directorios. El objetivo de esta interfaz web
es facilitat al usuario las interacciones con el software desarrollado, para la inserción de ciertos parámetros que
necesita la Raspberry para su configuración. Esta interfaz tiene la siguiente apariencia.
Figura 6.- Interfaz web: Índice de directorios
En la imagen anterior se puede observar como accediendo a la dirección IP a la que este configurada la
Raspberry (http://192.168.1.1/bookReader), se accede a un índice de directorios. Se ha optado por desarrollar
un índice para facilitar al usuario el acceso a los documentos resultantes de la conversión, que se almacenarán
en el directorio books. También se puede observar como tiene un fichero de extensión html (form.html) que
será el formulario que el usuario tendrá que rellenar para iniciar la conversión.
Si se pulsa sobre el fichero anterior el resultado será el siguiente:
Figura 7.- Interfaz web: Formulario
Previo a la automatización
26
26
Se puede observar como consta de un formulario básico en el que se añade el parámetro necesario para que la
Raspberry se configure para la digitalización. Este parámetro es el siguiente:
PDF_TITLE. Título que el usuario quiere ponerle al PDF resultante.
A parte de este parámetro de configuración, en el código se ha utilizado un parámetro denominado tol. Este
parámetro representa a la tolerancia de curvatura admitida, es decir, cúanta desviación toleramos para que una
recta siga considerándose una línea recta horizontal o vertical.
Una vez rellenado el campo del formulario y al pulsar sobre el botón Send Form, el fichero start.cfg será
generado y la conversión se iniciará. Mostrándose la siguiente ventana:
Figura 8.- Interfaz web: Página de espera
En esta última ventana se utiliza para indicarle al usuario que se ha iniciado el proceso de conversión. También
se le ofrecen dos enlaces:
Return to directory index. Enlace que permite volver al índice de directorios.
Return to form. Enlace que permite regresar al formulario anterior.
Una vez la conversión finalice el usuario podrá descargarse el PDF resultante desde la carpeta books explicada
anteriormente.
Figura 9.- Carpeta books
27 Digitalizador de Libros con Raspberry Pi
4.3. Escenario
En este subapartado se pretende mostrar el escenario sobre el que se harán las pruebas, resaltándo las
conexiones existentes entre los distintos dispositivos que conforman el proyecto.
El ordenador portátil estará conectado a la Raspberry Pi por un cable Ethernet (esta conexión también puede
ser WiFi si se configura como tal). Es necesaria la existencia de esta conexión porque se requiere que exista
conectividad entre el portátil y la Raspberry para que, el portátil, pueda acceder desde un navegador web hasta
la IP de la Raspberry Pi.
A la Raspberry Pi se conectan los móviles vía USB, para el posterior montaje y el paso de las fotografías a
digitalizar
El usuario final será el encargado de realizar estas conexiones cuando quiera hacer uso del software
desarrollado.
4.4. Rendimiento del sistema
En este apartado se detallará el tiempo que tarda el sofware desarrollado en finalizar el proceso de
digitalización. Para ello se presentarán tres casos: digitalizar una página, digitalizar 30 páginas y digitalizar 60
páginas. También se ofrecerá información sobre el peso real de cada uno de los PDFs resultantes.
Nº Páginas Duración Digitalización Peso del fichero
Una página 20 segundos 38K
30 páginas 10 minutos y 15 segundos 1.7M
60 páginas 19 minutos y 30 segundos 3.3M
Tabla 18 .- Rendimiento del sistema
28
5 IMPLEMENTACIÓN
n este apartado nos centraremos en cómo se han implementado los aspectos más importantes del
software, sin entrar en detalle del código utilizado. Por lo que el objetivo es dar una idea de qué es lo que
se hace en cada una de las fases de la digitalización y por qué usamos ciertos comandos de
ImageMagick en lugar de otros.
Para una mejor comprensión se hará una subdivisión en dos subapartados: uno de ellos para explicar las
distintas fases de la digitalización y otro para explicar el desarrollo de la interfaz web proporcionada.
5.1. Proceso de digitalización
El proceso de digalización diseñado pasa por las siguientes fases:
Figura 10.- Fases del proceso de digitalización
Inicio de la conversión. Fase en la cual el usuario rellenará los campos oportunos del formulario web
e iniciará la conversión a formato digital.
Detección de bordes. Fase principal del algoritmo diseñado. En esta fase se autodectectan
dinámicamente los bordes de la imagen y se señalan sobre la misma para facilitar su extracción.
Extracción del área sin bordes. Fase en la que se extrae la parte útil de la imagen, es decir, lo
relativo al documento a digitalizar.
Generar PDF. Una vez se han autodetectado los bordes y extraída la parte útil, se genera un PDF con
el conjunto de imágenes.
Almacenamiento en la carpeta correspondiente. Fase final en la que se almacena el PDF resultante
en la carpeta books de la interfaz web proporcionada al usuario.
E
“Antes de que el software pueda ser reutilizable
primero debe ser utilizable”
- Ralph Johnson -
29 Digitalizador de Libros con Raspberry Pi
5.1.1 Inicio de la conversión
En esta primera fase del proceso de la digitalización se crea el entorno de trabajo en la Raspberry y se procesa
el formulario rellenado por el usuario a través de la interfaz web. El procesamiento de este fichero generado
por el formulario trae consigo el montaje de los dispositivos de almacenamiento masivo, que contienen las
imágenes de los documentos a digitalizar.
El objetivo de realizar el montaje de los dispositivos es para que las imágenes sean accesibles desde la
Raspberry Pi para así poder realizar la conversión de manera fructífera.
Una vez se haya creado el entorno de trabajo y se haya realizado el montaje de los dispositivos se irán
procesando las imágenes una a una para su digitalización. Para el acceso a estas carpetas montadas en el
sistema se hará uso de enlaces simbólicos a los directorios montados, para facilitar el acceso a los mismos.
Es importante aclarar que se hará una distinción en los dispositivos de almacenamiento montados para
distinguir que imágenes pertenecen a una foto de página impar o página par. Esta distinción se realizará a la
hora de que el usuario rellene el formulario web.
5.1.2 Detección de bordes
Esta es la fase más importante del algoritmo diseñado, la detección automática de bordes. Para esta detección
se utiliza la opción del comando convert por la que se decidió utilizar como mínimo la versión 6.8.9.1 de
ImageMagick®, la opción -hough-lines.
Como apoyo a la explicación de cómo se ha implementado, se hará uso de imágenes que vayan mostrando el
proceso de digitalización. Para ello se irán explicando las diferentes fases de la digitalización sobre la siguiente
imagen:
Figura 11.- Imagen de ejemplo a digitalizar
Implementación
30
30
5.1.2.1 Transformada de Hough
La opción -hough-lines [13] está basada en la reconocida transformada Hough [13]. La transformada Hough
es un algoritmo empleado en reconocimiento de patrones de una imagen, la cual permite encontrar formas
como círculos, líneas, entre otras, dentro de la imagen. Su versión más sencilla, que es en la que esta basada el
presente proyecto, consiste en encontrar líneas rectas dentro de la imagen.
El modo de funcionamiento de la transformada es estadístico, el proceso acumula recuentos para cada pixel
blanco en el borde binario de la imagen para cada posible orientación (ángulos de 0 a 179 grados en
incrementos de 1 grado) y, la distancia desde el centro de la imagen a las esquinas (en incrementos de píxeles).
Estos recuentos los almacena en una matriz, denominada acumulador, de ángulos en función de la distancia.
Una vez los recuentos estén almacenados en la matriz, por cada punto en la imagen, se buscan todas las
posibles figuras a las que puede pertenecer ese punto. Esto se logra buscando todas las posibles combinaciones
de valores de parámetros que describen la figura (los posibles valores se obtienen a partir del acumulador). Si
es así, se calculan los parámetros de esa figura, y después se busca la posición en el acumulador
correspondiente a la figura definida, y se incrementa el valor que hay en esa posición. Las rectas, entonces, se
pueden detectar buscando las posiciones del acumulador con mayor valor (máximos locales en el espacio del
acumulador).
5.1.2.2 Implementación de la detección automatica de bordes
La opción –hough-lines anteriormente presentada se utiliza junto con la opción –canny [15] del comando
convert. Esta opción permite, fijándo unos umbrales, detectar los bordes o líneas rectas de una imagen,
convirtiendo la misma en blanco y negro. Esta opción está basada en el algorítmo de Canny [13].
Es una opción que complementa a la anterior para facilitarle la detección automática de líneas rectas. Debido a
que el resultado del comando convert con la opción –canny es una imagen en blanco y negro, donde se dibujan
de blanco los bordes detectados. Esto hace que el trabajo del detector de líneas sea más sencillo y eficaz, al ya
tener una zona de ejecución más acotada. Otra ventaja de utilizar estas opciones en conjunto es la reducción
del tiempo computacional en la detección de bordes.
Es importante denotar que el comando -hough realmente genera, internamente, un archivo de vectores con
extensión MVG [14] (Magick Vector Graphics). Este archivo MVG permite determinar los parámetros
matemáticos de cada línea, es decir, distinguir entre las líneas verticales y horizontales que se representarán
como "líneas rojas " en la imagen (parámetro configurado por el desarrollador).
Como ejemplo ilustrativo se presenta en una imagen a la cual se le ha aplicado previamente la opción –canny y
luego se le ha pasado el detector de líneas -hough-lines.
31 Digitalizador de Libros con Raspberry Pi
Figura 12.- Resultado de convert –hough-lines
Como se puede observar en la segunda imagen, que es el resultado del comando convert con la opción
–hough-lines, las líneas detectadas por la transformada de Hough son dibujadas de color rojo. Esta última
imagen será la utilizada en la siguiente fase para la extracción del documento sin ningún tipo de bordes.
Si antes de pasar a la extracción de la imagen, se pintarán estos bordes sobre la imagen real, el resultado sería
el siguiente:
Figura 13.- Imagen con bordes resaltados
Implementación
32
32
Cabe destacar antes de pasar a la siguiente fase que debido a las imperfecciones, ya sea de la imagen captada
(malas condiciones de luminosidad) o del detector de bordes, existen muchos puntos que pertenecen a la curva
y que faltan en la imagen; también pueden existir desviaciones espaciales entre la figura ideal (por ejemplo,
una recta) y los puntos ruidosos del borde detectado. Por estas razones, usualmente no es trivial.
5.1.3 Extracción del área sin bordes
Una vez la imagen ha pasado por el algoritmo de Hough, ya se conocerían los bordes de la imagen a extraer.
Para extraerla, lo que se hace es, con la opción –draw [18] de convert, rellenar de transparente toda la imagen
que será posteriormente extraída hasta los bordes con lo que obtendríamos una especie de máscara.
Una vez hecho esto, ya, haciendo uso del comando composite [19] de ImageMagick®, aplicamos la máscara a
la imagen real y le pasamos un filtro de grises para aclarar el texto de la imagen. Por lo que el resultado final
sería:
Figura 14.- Imagen resultante al extraerle los bordes
Puede observarse lo comentado en el apartado anterior, la imperfección del método. Esta imperfección puede
apreciarse a la hora de que un borde no sea totalmente recto, por lo que a la hora de la extracción de la imagen,
puedan quedar residuos del mismo.
5.1.4 Generación del PDF
Fase final del proceso de conversión a formato digital. En esta fase se parte de una carpeta que contiene todas
las imágenes que han superado las dos fases anteriores, es decir, imágenes sin bordes.
Básicamente, para la generación de un único PDF y, aprovechando que en la carpeta ya se tienen las imágenes
ordenadas según el número de página, se hará uso del comando convert de ImageMagick® para la generación
del PDF. La sentencia a utilizar es la siguiente.
convert image1.png image2.png … imageX.png pdf_title.pdf
33 Digitalizador de Libros con Raspberry Pi
Tras este comando ya se tendría en la misma carpeta el PDF resultante del proceso de digitalización que será
almacenado en una carpeta accesible al usuario en la siguiente fase.
5.1.5 Almacenamiento del PDF en la carpeta exportada
Una vez el proceso de digitalización haya finalizado, el software deberá almacenar el documento en formato
PDF generado en una carpeta exportada por Apache [11]. En este caso la carpeta exportada tendrá la ruta
/var/www/html/bookReader/books.
Para que Apache exporte una determinada carpeta del sistema operativo sobre el que este instalado via web,
basta con indicarlo en el fichero de configuración de Apache. Para ello es necesario asignarle la URL con la
que dicha carpeta será accesible vía web. En este caso la URL de acceso será la IP a la que esté configurada la
Raspberry y una vez el usuario se encuentre en el índice de directorios podrá pulsar sobre la carpeta books para
acceder al documento generado.
Es importante destacar en este subapartado la gestión de los permisos de Apache [19]. Dado que si
configuramos Apache como un servidor web que ofrece una determinada información al exterior, este servidor
necesita tener acceso a esa información que se desea publicar. Por lo que resulta necesario configurar
adecuadamente los permisos de los distintos ficheros que intervienen en el servicio.
Los permisos de los que dispone el proceso Apache están determinados por el usuario asociado a dicho
proceso, que es configurado con las directivas “User” y “Group” en el fichero de configuración de Apache. El
usuario y grupo usado normalmente es “apache”. Es por ello por lo que, con objeto de aclarar cualquier tipo de
dudas sobre qué permiso necesita el proceso Apache en cada directorio o fichero, se ofrece un resumen [20] de
los permisos mínimos que necesita Apache para que funcione adecuadamente y publique una web básica.
Estos permisos están recogidos en la siguiente tabla (se asume que Apache no pertenece al propietario ni al
grupo de los ficheros).
Figura 15.- Resumen permisos Apache
Implementación
34
34
5.2. Desarrollo interfaz web
Para el desarrollo de la interfaz web, de la que hará uso el usuario para rellenar el formulario de configuración
y para acceder a los documentos resultantes del proceso de digitalización, se han utilizado los lenguajes
HTML y CSS, para definir y crear la presentación de un documento estructurado escrito en HTML.
El formulario se ha desarrollado siguiendo el método de envío POST [19] y para el parseo de sus campos se
hace uso de un script en PHP, el cual se ejecuta en la interfaz presentada nada más pulsar el botón Send en el
formulario. La funcionalidad básica de este script de parseo es acceder a los campos de la petición POST
(identificados por la opción name) y escribirlos en un fichero, denominado start.cfg. Dada la brevedad de este
script de parseo se mostrará su código:
La decisión de usar el método de envío del formulario POST en vez de GET es porque la ventaja de usar
POST es que estos datos no son visibles al usuario de la web. En el caso de usar GET, el propio usuario podría
modificar la URL escribiendo diferentes parámetros a los reales en su navegador, dando lugar a que la
información tratada no sea la prevista, al viajar los campos en la URL.
Aclarar que estos ficheros siguen las reglas de permisos establecidas en el apartado anterior para facilitar la
publicación por parte de Apache. Se puede destacar que los ficheros HTML y CSS sólo deben tener permisos
de lectura, mientras que el PHP, al ser ejecutable, debe tener permisos de lectura y ejecución. En cambio sobre
la carpeta en la que se encuentra el fichero start.cfg, Apache debe tener todos los permisos dado que debe crear
el fichero (w) y acceder a él.
<?php
$file = 'start.cfg';
$actual = file_get_contents($file);
$title =$_POST["title"];
$sn1 =$_POST["SN1"];
$sn2 =$_POST["SN2"];
$cont="
PDF_TITLE=$title
SN1=$sn1
SN2=$sn2
";
file_put_contents($file,$cont);
?>
35
6 PRUEBAS REALIZADAS
l objetivo de este apartado es detallar los distintos tipos de pruebas a los que ha sido sometido el
software desarrollado para garantizar su robustez.
6.1. Introducción
Antes de presentar los distintos tipos de pruebas a los que se ha sometido el software, se hará una definición
del concepto prueba y de los distintos tipos existentes.
En los procesos de diseño del software y codificación habrá errores. Es por lo que el objetivo de someter un
software a pruebas es para detectar estos errores y evitar la propagación de los mismos.
Una prueba no es más que un conjunto de actividades que pueden planificarse y realizarse sistemáticamente.
Existen distintos tipos de pruebas según en el nivel en el que se apliquen:
Pruebas de unidad. Enfocadas a probar cada módulo de manera independiente. Por módulo
podemos entender una clase, una función o un componente. El objetivo de esta prueba es verificar el
diseño y la correcta programación.
Pruebas de integración. El objetivo de este tipo de pruebas es identificar errores introducidos por la
combinación de programas probados unitariamente.
Pruebas de validación. Valida que el software desarrollado cumple con los requisitos y logra su
cometido.
Pruebas de sistema. En este tipo de prueba el software se prueba junto con los demás componentes o
módulos del sistema como un todo. Ejercitan el sistema por completo.
E
“No importa lo estupendamente que haya ido la demo
en los ensayos, cuando lo haces frente a tu audiencia la
probabilidad de que sea una presentación existosa es
inversamente proporcional al número de personas
mirando, elevado a la cantidad de dinero que hay en
juego”.
- Mark Gibbs -
Pruebas Realizadas
36
36
6.2. Pruebas realizadas
6.2.1 Pruebas de unidad
ID de la prueba PUD-01
Objetivo de la prueba Comprobar el algoritmo de detección de bordes automático.
Prerrequisitos de la prueba Una fotografía de un documento a la que detectar los bordes.
Procedimiento Pasar la fotografía al ordenador/Raspberry con Centos 7 instalado y ejecutar
la función search_border.
Requisitos de superación de la
prueba Los bordes han sido detectados y dibujados sobre la imagen correctamente.
Comentarios Prueba realizada en Centos 7 emulado sobre una máquina virtual.
Tabla 19.- PUD-01
ID de la prueba PUD-02
Objetivo de la prueba Comprobar la correcta extracción del documento sin bordes.
Prerrequisitos de la prueba Una fotografía de un documento con los bordes ya detectados y dibujados
sobre la foto.
Procedimiento Una vez superada la prueba PUD_01, ejecutar los comandos para la
extracción del área señalada.
Requisitos de superación de la
prueba
El documento sin bordes ha sido extraído correctamente de la fotografía.
Comentarios Prueba realizada en Centos 7 emulado sobre una máquina virtual.
Tabla 20.- PUD-02
37 Digitalizador de Libros con Raspberry Pi
ID de la prueba PUD-03
Objetivo de la prueba Probar la comunicación entre el controlador remoto y el móvil.
Prerrequisitos de la prueba Disponer de ambos objetos funcionando.
Procedimiento 1. Encender el controlador remoto.
2. Configurar el Bluetooh del móvil para que se conecte a la señal
emitida por el controlador.
Abrir la cámara del móvil y accionar el disparador.
Requisitos de superación de la
prueba
Se ha tomado una fotografía correctamente.
Comentarios No accionar el controlador a una distancia superior a 1.5 metros.
Tabla 21.- PUD-03
ID de la prueba PUD-04
Objetivo de la prueba Comprobar el correcto funcionamiento de la interfaz web proporcionada.
Prerrequisitos de la prueba - Raspberry Pi con un servidor Apache en funcionamiento.
- Disponer de un ordenador portátil para acceder a la web.
Procedimiento 1. Acceder desde un navegador web en el portátil a la IP de la
Raspberry Pi.
2. Una vez presentada la interfaz, rellenar los campos y pulsar el botón
Enviar.
Comprobar en la Raspberry Pi que el fichero generado tiene los campos
correctos.
Requisitos de superación de la
prueba
Los campos del fichero generado por la interfaz web se corresponden con lo
insertado por el usuario.
Comentarios El fichero se creará en la Raspberry Pi.
Tabla 22.- PUD-04
Pruebas Realizadas
38
38
ID de la prueba PUD-05
Objetivo de la prueba Comprobar la navegación entre las distintas interfaces web mostradas.
Prerrequisitos de la prueba - Raspberry Pi.
- Ordenador portátil con conectividad a la Raspberry.
Procedimiento 1. Acceder a la interfaz web, y pulsar sobre form.html.
2. Rellenar el formulario presentado y pulsar el botón Send.
3. Una vez en esa ventana, pulsar sobre el enlace que vuelve al
formulario.
Repetir los dos pasos anteriores, pero pulsando sobre el enlace que vuelve al
índice de directorios.
Requisitos de superación de la
prueba
No se ha producido errores en la navegación
Comentarios -
Tabla 23.- PUD-05
6.2.2 Pruebas de integración
ID de la prueba PI-01
Objetivo de la prueba Comprobar el correcto accionamiento del script de conversión a formato
digital a través de la interfaz web.
Prerrequisitos de la prueba - Raspberry Pi con un servidor Apache en funcionamiento.
- Disponer de un ordenador portátil para acceder a la web.
- Haber superado las pruebas unitarias correspondientes (PUD_01, PUD_02,
PUD_04).
Procedimiento 1. Acceder desde un navegador en el portátil a la IP de la Raspberry Pi.
2. Rellenar los campos del formulario de la interfaz web y pulsar el
botón Enviar.
Probar que se ha realizado la conversión en la Raspberry Pi.
Requisitos de superación de
la prueba
El proceso de digitalización se ha accionado correctamente y se ha generado
el PDF.
Comentarios Prueba realizada sin tener en cuenta el envío del documento al ordenador del
usuario (sólo en modo local).
Tabla 24.- PI-01
39 Digitalizador de Libros con Raspberry Pi
6.2.3 Pruebas de validación
ID de la prueba PV-01
Objetivo de la prueba Comprobar que el proceso de digitalización de una fotografía es inferior a 20
segundos.
Prerrequisitos de la prueba - Disponer de una fotografía de un documento a digitalizar en la
Raspberry Pi.
Haber superado las pruebas unitarias correspondientes (PUD_01, PUD_02).
Procedimiento 1. Iniciar el proceso de conversión, utilizando la función digitalize e
iniciar un cronómetro.
Una vez finalizado el proceso de conversión de la imagen, parar el cronómetro.
Requisitos de superación
de la prueba
El tiempo de espera ha sido inferior a 20 segundos.
Comentarios El tiempo total de espera por el usuario será, por tanto, 20 segundos
multiplicados por el número de fotografías a digitalizar.
Tabla 25.- PV-01
Pruebas Realizadas
40
40
6.2.4 Pruebas de sistema
ID de la prueba PS-01
Objetivo de la prueba Comprobar que el correcto funcionamiento de todos los componentes en
conjunto.
Prerrequisitos de la prueba - Montar el escenario, tal como se explica en el apartado
correspondiente.
Haber superado las pruebas de unidad (PUD_XX), de integración (PI_XX) y de
validación (PV_XX).
Procedimiento 1. Acceder desde un navegador en el portátil a la IP de la Raspberry Pi.
2. Rellenar los campos del formulario de la interfaz web y pulsar el botón
Enviar.
Esperar el tiempo especificado, proporcional al número de imágenes a
digitalizar.
Requisitos de superación de
la prueba
Se ha generado correctamente el documento en formato PDF con el nombre en
la carpeta books publicada por Apache.
Comentarios El tiempo total de espera por el usuario será, por tanto, 20 segundos
multiplicados por el número de fotografías a digitalizar.
Tabla 26.- PS-01
41
7 CONCLUSIONES Y LÍNEAS DE CONTINUACIÓN
l objetivo de este proyecto era desarrollar un software capaz de digitalizar cualquier documento en
formato físico a formato digital de forma semiautomática. Dicha solución, ha sido desarrollada sobre
una Raspberry Pi 2.
Es por eso por lo que en este apartado recogeremos las conclusiones obtenidas tras el desarrollo del proyecto y
la problemática encontrada durante el desarrollo del mismo. Además, se realizará una descripción sobre las
líneas futuras de investigación.
7.1. Problemas encontrados
Durante el desarrollo del proyecto se han encontrado los siguientes problemas:
Automatización de la detección de los bordes de la imagen. Este problema fue el que más costó
encontrarle solución, debido a que la solución debe tener un bajo coste computacional y no tardar un
tiempo excesivo.
Una primera solución ofertada fue incluir unas pegatinas en los bordes del documento a digitalizar y,
utilizando el comando compare -subimage-search de ImageMagick®, detectar las coordenadas de la
posición en la que se encontraban los bordes y extraerlos. Pero el coste computacional de esta
solución era proporcional al tamaño de la imagen, por lo que suponía un alto coste computacional.
Además, es una solución imprecisa, dado que en ocasiones no ofrecía las coordenadas con gran
precisión, y lenta, al tardar un tiempo considerable.
Comunicación de los dispositivos que capturan las imágenes con la Raspberry Pi. Este problema
surge de la necesidad de montar un dispositivo de almacenamiento masivo a la Raspberry Pi para el
paso automático de las fotografías captadas a la misma para su procesamiento.
Para montar un dispositivo como almacenamiento masivo es necesario que el dispositivo conste de
una tarjeta SD conectada, que será la que se monte en la Raspberry Pi. Es por lo que se optó por hacer
uso de los dos dispositivos móviles con el modo depuración activo.
Otro problema que se presenta con esta solución es que ahora el usuario debe tomar todas las
fotografías seguidas y, al acabar, dar la orden a la Raspberry Pi de digitalizarlas. Esto no fue lo
planteado en primera instancia dado que lo que se pretendía es que el usuario tomara fotos y se
digitalizaran conforme las iba tomando (mayor rapidez y menor tiempo de espera para el usuario).
E
“Empieza como quieras terminar”.
- Anónimo -
Conclusiones y líneas de continuación
42
42
Montaje del atril. Como se ha mencionado en apartados anteriores el atril se diseño por el
desarrollador del proyecto. El problema encontrado en el montaje fue el encontrar el ángulo entre los
paneles de soporte perfecto para facilitar la captación de las imágenes.
7.2. Conclusiones
Buena decisión de hacer uso de ImageMagick® para el tratamiento de las imágenes por línea de
comando, al proporcionar una diversidad de comandos y parámetros para realizar casi cualquier
modificación sobre una imagen.
Buena elección de utilizar una distribución tan estable como Centos 7 en la Raspberry Pi. Ofrece una
gran facilidad en la instalación de paquetes y de nuevos servicios.
En general, el proyecto desarrollado ofrece una solución versátil y portable que le permite al usuario
digitalizar cualquier documento en cualquier sitio, sólo siéndole necesario un ordenador portátil para
acceder a la Raspberry Pi. Aunque es una solución basada en soluciones ya existentes en el mercado,
ofrece una visión diferente al utilizarse distintos métodos para llegar a una solución aproximada.
Como conclusiones personales podría destacar de este proyecto el aprendizaje obtenido para instalar un
sistema operativo desde cero en una Raspberry Pi, así como los conocimientos adquiridos en el tratamiento de
imágenes a través de la línea de comandos haciendo uso de ImageMagick®.
7.3. Líneas futuras
En este apartado se recogen las futuras mejoras que se le podrían añadir al proyecto con el fin de aumentar sus
funcionalidades, su velocidad de conversión a formato digital y su automatización.
Automatización en el paso de páginas. Es una mejora imprescindible para el usuario, es lo que hace
que la solución ofrecida sea semiautomática. Esta mejora le quitaría al usuario todo el trabajo del paso
de páginas de los documentos a digitalizar. Como primera solución, podría implementarse una rueda
mecánica o un brazo mecánico que pasara las páginas de manera automática.
Mejorar la detección de bordes. Actualmente, esta funcionalidad es robusta frente a un gran número
de imágenes pero siempre existe la posibilidad de hacerla infalible frente a cualquier tipo de casos
extremos: malas condiciones de luminosidad, fotografías parcialmente giradas, fotografías de mala
calidad, etc.
Añadir una interfaz gráfica (como la ofrecida por Book2Net). Esto facilitaría al usuario el manejo
del software ofrecido, pudiendo observar el estado de la conversión en cualquier momento de la
misma.
43 Digitalizador de Libros con Raspberry Pi
Mejorar la escalabilidad. Permitir varias conversiones simultáneas de documentos distintos. Se
podría procesar cada una en un hilo distinto.
45
REFERENCIAS
[1] «ImageMagick,» [En línea]. Available: http://www.imagemagick.org/script/index.php.
[2] «CamScanner,» [En línea]. Available: https://www.camscanner.com/.
[3] «Genius Scan,» [En línea]. Available:
https://play.google.com/store/apps/details?id=com.thegrizzlylabs.geniusscan.free&hl=es.
[4] «Book2Net Spirit A3,» [En línea]. Available: http://www.book2net.net/index.php/es/productos/book-
scanners/a3/spirit-a3-book-scanner.
[5] «Raspberry Pi 2 Model B,» [En línea]. Available: https://www.raspberrypi.org/products/raspberry-pi-2-
model-b/.
[6] «Hough Line Detector,» [En línea]. Available: http://www.imagemagick.org/discourse-
server/viewtopic.php?t=25476.
[7] «Centos 7,» [En línea]. Available: https://www.garron.me/es/gnu-linux/centos-vs-debian.html.
[8] «ApplePi Baker,» [En línea]. Available: http://www.tweaking4all.com/news/applepi-baker-v1-7-update/.
[9] «Gestión de Requisitos,» [En línea]. Available: http://www.monografias.com/trabajos92/gestion-
requisitos/gestion-requisitos.shtml.
[10] «MTP,» [En línea]. Available: https://es.wikipedia.org/wiki/MTP.
[11] «PTP,» [En línea]. Available: https://es.wikipedia.org/wiki/Picture_Transfer_Protocol.
[12] «Mass Storage,» [En línea]. Available: https://en.wikipedia.org/wiki/Mass_storage.
[13] «-hough-line option,» [En línea]. Available: http://www.imagemagick.org/script/command-line-
options.php#hough-lines.
[14] «Hough Transform,» [En línea]. Available: https://en.wikipedia.org/wiki/Hough_transform.
[15] «-canny option,» [En línea]. Available: http://www.imagemagick.org/script/command-line-
options.php#canny.
[16] «Canny Edge Detector,» [En línea]. Available: https://en.wikipedia.org/wiki/Canny_edge_detector.
[17] «Magick Vector Graphics,» [En línea]. Available: http://www.imagemagick.org/script/magick-vector-
graphics.php.
[18] «convert -draw,» [En línea]. Available: http://www.imagemagick.org/Usage/draw/.
Referencias
46
46
[19] «Comando compare,» [En línea]. Available: http://www.imagemagick.org/Usage/compare/.
[20] «Apache,» [En línea]. Available: https://httpd.apache.org/.
[21] «Permisos Apache,» [En línea]. Available: http://serverfault.com/questions/357108/what-permissions-
should-my-website-files-folders-have-on-a-linux-webserver.
[22] J. M. Calle, «Tema 4 - Servidor Apache de Asignatura Servicios Telemáticos Avanzados,» [En línea].
[23] «Métodos HTTP,» [En línea]. Available: http://www.w3schools.com/tags/ref_httpmethods.asp.
47
ANEXO A: MANUAL DE INSTALACIÓN
En este anexo se incluye un pequeño manual de instalación de la distribución Centos 7 en una Raspberry Pi.
Para proceder a instalar Centos 7 en una Raspberry Pi, es necesario descargarse la imagen (archivo IMG) del
sistema operativo adaptado a Raspberry Pi del siguiente enlace:
http://linux.softpedia.com/get/System/Operating-Systems/Linux-Distributions/CentOS-906.shtml
Una vez descargada la imagen necesitamos grabar la imagen en la tarjeta micro SD que se insertará en la
Raspberry Pi. Para ello, en nuestro caso, utilizaremos la utilidad de OS X, ApplePi Baker, que presenta la
siguiente interfaz:
Figura 16.- Interfaz ApplePi Baker
Como se puede ver en la imagen anterior, ApplePi-Baker tiene varias partes diferenciadas:
En el apartado Pi-Crust veremos las SD detectadas en nuestro ordenador. Cuando se introduce una en
el lector de SD veremos que dicha tarjeta aparece en el recuadro correspondiente.
A la derecha en Pi-Ingredients es donde se indica cuál es el archivo IMG que se quiere grabar en la
tarjeta SD. Al pulsar en el botón Restore Backup todos los contenidos de la tarjeta SD desaparecerán.
El apartado Pi-in-the-freezer es usado para hacer una copia de seguridad del contenido de la tarjeta SD
a nuestro ordenador
A la izquierda vemos que también se puede instalar NOOBS en la tarjeta SD.
Anexo A: Manual de instalación
48
48
Tras presentar la interfaz de la utilidad, se elimina todo el contenido de la tarjeta SD pulsando el botón Restore
Backup y subimos la imagen a la aplicación (sección IMG file) para grabarla en la tarjeta SD.
Una vez grabada la imagen en la tarjeta SD sólo queda insertarla en la Raspberry Pi y conectar la Raspberry Pi
a la corriente a través de la entrada micro USB, o bien conectar uno de los conectores USB a un HUB
alimentado.
Al llegar a este punto, la distribución Centos 7 ya estará funcionando en la Raspberry Pi. Para acceder a ella
sólo es necesario un cable Ethernet y conectarse directamente. Tras ello, se accede vía SSH (ssh
[email protected] ) y la contraseña es centos.
Instalar ImageMagick® en Centos 7
Para instalar ImageMagick® (necesaria versión superior a 6.9.3-4). Para ello descargar el código fuente para
la distribución Centos 7 del siguiente enlace:
http://www.imagemagick.org/script/binary-releases.php
Una vez descargado y descomprimido ejecutar los siguientes comandos:
Tras estos comandos ya tendremos instalado ImageMagick®. Para comprobar que la versión es superior a
6.9.3-4, ejecutar convert –-version.
Instalar PHP server en Centos 7
Es necesario para que el servidor Apache sea capaz de interpretar ficheros con extensión php. Para ello desde
la terminal ejecutar los siguientes comandos:
cd ImageMagick-*
./configure
make
make install
ldconfig /usr/local/lib
/usr/local/bin/convert logo: logo.gif
make check
sudo yum –y install php
49 Digitalizador de Libros con Raspberry Pi
Instalar Apache en Centos 7
El servidor web Apache es uno de los servidores web más populares y poderosos, debido a su facilidad de
administración y flexibilidad. Para proceder a su instalación en Centos, basta con ejecutar el siguiente
comando:
Una vez tenemos instalado Apache en la Raspberry Pi, ejecutamos los siguientes comandos para que el
firewall permita conexiones a través de los puertos 80 (HTTP) y 443 (HTTPS) :
Tras configurar el firewall iniciamos el servidor Apache y lo configuramos para que se inicie con el inicio del
sistema:
Llegados a este punto ya tendríamos corriendo un servidor Apache en la Raspberry Pi, ya sólo faltaría
configurarlo para que la página que exportara al introducir su dirección IP en el navegador sea la interfaz web
diseñada. Para ello, le pasamos a la Raspberry Pi los ficheros que conforman la interfaz web diseñada y los
incluimos en /var/www/html. Para ello creamos una carpeta denominada bookReader en ese directorio y le
asignamos permisos de lectura, escritura y ejecución para que Apache pueda acceder a su contenido y así crear
y borrar ficheros.
sudo yum install httpd
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload
sudo systemctl start httpd
sudo systemctl enable httpd
cd /var/www/html
sudo mkdir bookReader
sudo chmod 777 bookReader
Anexo A: Manual de instalación
50
50
Cómo se pretende exportar un índice de directorios para facilitar al usuario la navegación a través de la interfaz
web. Se han de añadir las siguientes líneas en el fichero de configuración de Apache
(/etc/httpd/conf/httpd.conf):
Estas líneas permiten lo siguiente:
La directiva Alias permite especificar la ruta URL con la que se desea exportar un determinado
directorio. En este caso se esta exportando el directorio /var/www/html/bookReader con el alias
/bookReader. Esto significa que el usuario podrá acceder al directorio exportado accediendo a
http//IP_RASPBERRY/bookReader.
La directiva IndexIgnore se utiliza para especificar qué archivos, extensiones o carpetas no deben
ocultarse y no deben exportarse.
La directiva Directory permite configurar un directorio exportado de Apache en este caso el directorio
bookReader. Se incluye la opción Indexes para que cuando el usuario acceda a la URL anterior se le
muestre un índice de directorios.
Tras eso reiniciamos el servidor Apache (sudo systemctl start httpd) y al acceder a la URL aparecerá la
siguiente interfaz.
Figura 17.- Interfaz web
Una vez hecho esto ya podríamos acceder a la interfaz web desde cualquier navegador.
Alias /bookReader /var/www/html/bookReader
IndexIgnore *.php *.cfg css font*
<Directory /bookReader>
Options Indexes
</Directory>
51 Digitalizador de Libros con Raspberry Pi
Configurar el script de servicio bookReader en Centos 7
Para que nuestro servicio se inicie en cada nivel de ejecución existente, es necesario que tenga un script en el
directorio /usr/bin. En general, el nombre del script, suele coincidir con el nombre del servicio, y como
mínimo debe aceptar los siguientes argumentos: start, para iniciarlo; stop, para pararlo; y status, para
comprobar si el servicio esta funcionando.
Una vez tengamos el script de servicio preparado, en nuestro caso se denominará bookReader, los siguientes
pasos para añadir nuestro script de servicio, bookReader, a los niveles de ejecución:
1. Ubicar el script de servicio en la carpeta /usr/bin/
2. Crear un fichero de extensión .service en el directorio /etc/systemd/system/, en nuestro caso será
bookReader.service y contendrá:
Se puede observar como este fichero contiene una descripción del servicio desarrollado y los comandos a
ejecutar en caso de inicio (start) y parada (stop) del servicio.
3. Modificamos el estado del servicio para que se ejecute con el arranque del sistema. Para ello ejecutar:
Una vez realizado esto reiniciamos la placa y ya estaría corriendo el script de servicio desarrollado.
[Unit]
Description=Convert books to PDF
[Service]
ExecStart=/usr/bin/bookReader start
ExecStop=/usr/bin/bookReader stop
[Install]
WantedBy=default.target
sudo systemctl enable bookReader
53
ANEXO B: CONSTRUCCIÓN ATRIL
Materiales necesarios
Para la construcción del atril, han sido necesarios los siguientes materiales:
1x Tablero de madera de 60x40 cm
2 x Tableros de madera de 30x40 cm
1x Vidrio-Plástico 100x50 cm
4x Rejillas pequeñas de plástico
4x Escuadras de plástico
2x Listones de madera
2x Tiradores para cajones
2x Soportes para móviles para el coche
Tornillos
Construcción
Para proceder a la construcción del atril, atornillamos a cada extremo del largo del tablero de madera de 60x40
cm dos de las rejillas de plástico. Estas rejillas proporcionaran al atril una movilidad adicional para adaptarse y
fijarse a libros de distinto grosor manteniendo siempre el ángulo deseado. El resultado sería el siguiente.
Figura 18 .- Tablon de 60x40cm
Anexo B: Construcción Atril
54
54
Dejando a un lado el tablero, pasamos a cortar el vidrio-plástico en una sección del mismo tamaño del tablero
original (60x40 cm) y luego, esa sección, en otra del mismo tamaño de los dos tableros de 30x40 cm. Cabe
destacar, que para cortar el vidrio-plástico se requiere paciencia debido a su facilidad para astillarse. El corte,
por tanto, consistirá en coger un cúter y sobre la línea de corte bien marcada, realizar varias pasadas hasta que
casi este cortado. Una vez llegado a ese punto, situarlo sobre un extremo de una mesa y darle un golpe seco
para separar las piezas.
Una vez tengamos esto, realizamos dos escuadras de unos 90 grados con los dos listones comprados y,
posteriormente, atornillamos el metacrilato a esta escuadra. La finalidad de esta escuadra es fijar el ángulo en
el metacrilato y, tras atornillarle los tiradores a ambos lados, porporcionar una estructura manejable que
permita fijar los libros al ángulo deseado y evitar páginas dobladas. Esta estructura quedaría:
Figura 19 .- Estructura de metacrilato
Ahora pasamos a atornillar dos escuadras de plástico a cada uno de los tableros de 30x40cm con el fin de
formar un ángulo de aproximadamente 45 grados con el tablero grande. Esta nueva estructura quedaría:
Figura 20.- Soporte de madera
55 Digitalizador de Libros con Raspberry Pi
Llegados a este punto ya tendríamos la estructura montada, sólo faltaría darle un angulo de aproximadamente
90 grados. Tras esto, ya tendríamos montada la estructura del atril y sólo faltaría añadirle los soportes para los
dispositivos móviles.
La solución por la que se ha optado en nuestro caso fue aprovechar dos pequñas secciones de metacrilato y
atornillarlas a la parte posterior de forma que sobresaliera del tablero. Esto se hizo así para aprovechar los
chupones de los que constan los soportes para coches.
Tras seguir estos pasos, ya se tendría el atril construido y el resultado debería ser parecido a la imagen
siguiente
Figura 21.- Atril de frente
57
ANEXO C: MANUAL DE USUARIO
El usuario que quiera hacer uso del software desarrollado tendrá que poseer todos los requisitos hardware
detallados en el apartado correspondiente y realizar las conexiones tal como se indica en la siguiente imagen:
Cómo se puede observar en la imagen anterior, el ordenador portátil está conectado a la Raspberry Pi por un
cable Ethernet (esta conexión también puede ser WiFi si se configura como tal). Es necesaria la existencia de
esta conexión porque se requiere que exista conectividad entre el portátil y la Raspberry para que, el portátil,
pueda acceder desde un navegador web hasta la IP de la Raspberry Pi.
Se puede observar como a la Raspberry Pi se conectan los dispositivos móviles vía USB, para el posterior
montaje y el paso de las fotografías a digitalizar.
El usuario final será el encargado de realizar estas conexiones USB cuando quiera hacer uso del software
desarrollado. Es imprescindible que se hagan como muy tarde antes del envío del formulario web, dado que es
lo que acciona el proceso de digitalización.
Tras montar el escenario, el usuario será el encargado de colocar el documento a digitaliar sobre el atril y
pisarlo con las dos láminas de metraquilato de las que consta, una vez este colocado ya podrá accionar los
dispotivos captadores de las imágenes para tomar la foto. Este proceso se repetirá tantas veces mientras el
documento a digitalizar siga teniendo páginas.
Una vez tenga conectividad entre la Raspberry Pi y el ordenador portátil (probar que existe conectividad con el
comando ping) y haya finalizado el proceso de tomar las fotografías, acceder desde un navegador web a la IP
de la Raspberry (http://192.168.1.1/bookReader), y se le presentará la siguiente interfaz.
Figura 22.- Interfaz web: Índice de directorios
Se puede observar que al acceder a la web de la Raspberry se accede a un índice de directorios de la carpeta
publicada por Apache. Se ha optado por desarrollar un índice para facilitar al usuario el acceso a los
documentos resultantes de la conversión, que se almacenarán en el directorio books. También se puede
observar como tiene un fichero de extensión html (form.html) que será el formulario que el usuario tendrá que
rellenar para iniciar la conversión.
Anexo C: Manual de Usuario
58
58
Para iniciar el proceso de la digitalización el usuario deberá pulsar sobre el documento form.html y se le
presentará el siguiente formulario, el cual debe rellenar con los campos que se le solicita:
Figura 23.- Interfaz web: Formulario
Se puede observar como consta de un formulario básico en el que el usuario añade el título que desea que el
PDF resultante tenga, para que la Raspberry se configure para la digitalización.
Una vez rellenados los campos del formulario y al pulsar sobre el botón Send Form la conversión se iniciará.
Mostrándose la siguiente ventana:
Figura 24.- Interfaz web: Página de espera
En esta última ventana se utiliza para indicarle al usuario que se ha iniciado el proceso de conversión.Aquí
tiene que esperar un tiempo proporcional al número de fotografías que tenia almecenadas en los dispositivos.
También se le ofrecen dos enlaces:
59 Digitalizador de Libros con Raspberry Pi
Return to directory index. Enlace que permite volver al índice de directorios para así poder acceder a
la carpeta books y descargarse el documento resultante de la conversión.
Return to form. Enlace que permite regresar al formulario anterior para volver a iniciar el proceso de
la digitalización.
Una vez la conversión finalice el usuario podrá descargarse el PDF resultante desde la carpeta books explicada
anteriormente.
Figura 25.- Carpeta books con PDF resultante