trabajo fin de grado grado en ingeniería de las...

81
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

Upload: buiquynh

Post on 16-Oct-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

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

vii

A mi familia

A mis amigos

A mis profesores

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