Universitat Oberta de Catalunya

Lazarus, aplicación de apoyo para personas con problemas de visión

Asignatura: Trabajo final de máster profesionalizador
Nombre del estudiante: Natalia Sánchez Ojeda
Consultor y profesor: Sergio Schvarstein Liuboshetz

Introducción

En la sociedad actual, cada vez hay un porcentaje más alto de personas con problemas de visión, muchos se solucionan utilizando gafas graduadas, pero otros no pueden solucionarse ni siquiera mejorarse de este modo. Estas personas pueden tener dificultades para realizar tareas relacionadas con el sentido de la vista o tener discapacidades visuales diagnosticadas. En España, más de un 25 % de la población tiene una discapacidad visual.

Las personas que tienen este tipo de problemas encuentran grandes dificultades en realizar tareas cotidianas como identificar objetos, textos e incluso colores. A menudo, la incógnita de no saber si se está identificando correctamente la realidad provoca que estas personas tengan mayor inseguridad en sus capacidades.

Lazarus surge ante la necesidad de que estas personas tengan mayor certeza en lo que están identificando. Su objetivo es proporcionar una herramienta que pueda ayudarlas en tareas sencillas pero a la vez importantes de su vida diaria mediante un dispositivo móvil a través de una aplicación multimedia.

Para conseguir una aplicación sencilla de usar pero a la vez totalmente funcional, se ha trabajado basándose en las guías proporcionadas por Material Design para realizar un diseño accesible e intuitivo. En la parte más funcional, se ha realizado una integración con las interfaces de programación de aplicaciones de Google, que ha hecho posible explotar los datos obtenidos de la potencia del análisis de imágenes y, al mismo tiempo, ha proporcionado un gran rendimiento y tiempo de respuesta adecuado para cada funcionalidad.

Etapas y retos

El proyecto se divide en varias fases que se componen de diferentes etapas. Estas fases son:

  • Fase de estudio y definición
  • Fase de diseño
  • Fase de desarrollo
  • Fase de test

El resultado del proyecto es una aplicación totalmente funcional que incluye las siguientes funcionalidades a partir de una imagen tomada desde la misma aplicación:

  • Reconocimiento de texto para poder traducir el texto de la imagen en el idioma seleccionado y realizar la lectura del resultado en voz alta
  • Reconocimiento de objetos para identificar los objetos que aparecen en la imagen y mostrarlos en una lista de manera segmentada en imágenes individuales
  • Reconocimiento de colores para identificar los colores predominantes que aparecen en la imagen
  • Reconocimiento de etiquetas que proporcionan palabras clave para identificar el contexto de la imagen
  • Identificación de fechas de caducidad de productos para determinar si un producto está caducado o no
  • Configuración de parámetros relacionados con la lectura en voz alta
Pantallas de las funcionalidades de la aplicación Lazarus.

Fase de estudio y definición

En primer lugar, para determinar las funcionalidades que se incluirían en el proyecto, se realizó un estudio de mercado en el que se analizaron aplicaciones disponibles en Google Play que proporcionaran funcionalidades orientadas a personas con problemas de visión y algunas aplicaciones consideradas de utilidad por la ONCE (Organización Nacional de Ciegos de España). Tras realizar este estudio y comparar las funcionalidades que estas aplicaciones ofrecían, se pudo determinar que la mayoría de ellas solo ofrecían una única funcionalidad de reconocimiento de texto o contexto de la imagen y que utilizaban la funcionalidad TalkBack para la lectura en voz alta del resultado.

Al observar este último punto y ver que esta funcionalidad es propia de la accesibilidad ofrecida por el propio dispositivo, me quedó muy claro que mi objetivo sería que fuera la propia aplicación la que realizara la lectura en voz alta, sin necesidad de activar opciones adicionales. Este punto quedó resuelto en la implementación de la aplicación utilizando el kit de desarrollo de software (SDK) de Android TextToSpeech; no obstante, por ahora, la integración se ha realizado solo con el motor de Google, por lo que no funcionará con los motores que ofrecen algunas marcas de dispositivos

Comparativa de funcionalidades entre Lazarus y aplicaciones Android consideradas de interés por la ONCE.

Con el estudio de mercado realizado, llegó el momento de analizar las diferentes interfaces de programación de aplicaciones disponibles que ofrecían funcionalidades relacionadas con el reconocimiento de imágenes. Tras este análisis, se determinó que la interfaz de programación de aplicaciones Google Cloud Vision era la que más se ajustaba a las necesidades de Lazarus y que con ella se podrían implementar muchas más funcionalidades que las ofrecidas actualmente en el mercado por otras aplicaciones similares.

Para determinar el público objetivo al que se destina la aplicación, se realizó un estudio con datos estadísticos recopilados y publicados por el Instituto Nacional de Estadística, combinados con datos de la Corporación Internacional de Datos y del ODISMET de la Fundación ONCE. Con todos estos datos se pudieron realizar unas tablas resumen para poder visualizar y determinar los perfiles de personas utilizados en el proyecto.

Fase de diseño

En lo que se refiere al diseño técnico, se realizó un diagrama de arquitectura en el cual se mostraban las diferentes partes y componentes que intervenían en la aplicación. La arquitectura de la aplicación se basa en el entorno de trabajo Apache Cordova, que con lenguajes estándares web, junto con lenguaje nativo de la propia plataforma Android, conforman la aplicación. Esta aplicación se comunica con las interfaces de programación de aplicaciones necesarias para implementar las funcionalidades definidas para la aplicación.

Diagrama de la arquitectura de Lazarus y los servicios que intervienen.

Para determinar la navegabilidad de la aplicación, se realizaron diagramas de flujo de cada funcionalidad, además de los diagramas de secuencia para poder tener una idea clara y concisa de cómo iba a funcionar la aplicación antes de iniciar la fase de diseño gráfico e implementación. Este punto fue editado a lo largo del proyecto, para aplicar algunos ajustes a los diagramas que surgieron mientras se realizaba la implementación de la aplicación.

Diagrama de secuencia de la funcionalidad de reconocimiento de texto.

Con toda esta información comencé a realizar el prototipo de bajo nivel de la aplicación con la herramienta en línea Balsamiq Cloud. Esta parte la realicé muy rápidamente, tenía muy claro dónde colocar los elementos de cada pantalla gracias al trabajo realizado en la parte de definición.

La parte del diseño gráfico es en la que tuve más dificultades, debido a que no acababa de encontrar un diseño sencillo que me pareciera adecuado para la aplicación; pero, aunque tuve que darle muchas vueltas, gracias a las guías proporcionadas por Material Design para el desarrollo de aplicaciones accesibles, pude escoger unos colores adecuados para definir el diseño de la aplicación. Con esta elección de colores pude diseñar los iconos y los logos de la aplicación con Adobe Photoshop CS6.

Tabla proporcionada por Material Design que indica los colores y opacidades para asegurar la legibilidad de los textos.

La elección de la letra fue sencilla, desde el primer momento pensé en Roboto y le apliqué un espaciado entre letras para hacerla más legible pensando en el público al que se destinaba la aplicación.

Así pues, con los elementos de diseño gráfico y la letra definidos, realicé la implementación del prototipo de alto nivel de la aplicación con la herramienta MockingBot.

Fase de desarrollo

La fase de desarrollo es la fase del proyecto que más disfruté, pero a la vez la que más incertidumbre provocaba, ya que hasta ahora había sido todo muy teórico.

Para iniciar esta fase, había que tener el entorno de trabajo correctamente configurado habiendo instalado el kit de desarrollo de software de Android, Android Studio, Apache Cordova y Node como elementos principales del entorno. Adicionalmente a los componentes principales, se tuvieron que instalar después otros elementos conforme el desarrollo fue avanzando. Estos elementos fueron Gradle y los correspondientes conectores y herramientas de Cordova utilizadas.

Obtener un entorno completamente funcional no fue un reto complicado, debido a que se utilizó el sistema operativo MacOS, que facilita mucho la configuración e instalación de Cordova, además de Android Studio, que configura todas las variables de entorno necesarias.

Una vez con el entorno debidamente configurado, se creó el proyecto Cordova sobre el que se iba a realizar el proyecto y se iniciaron las tareas de implementación del front-end para tener una maqueta sin funcionalidad pero con la navegabilidad y el diseño realizados.

En este punto, antes de iniciar las tareas de implementación de las funcionalidades, se realizaron las integraciones de la aplicación con las interfaces de programación de aplicaciones y el desarrollo del conector Cordova con el kit de desarrollo de software TextToSpeech, para tener funcionando las comunicaciones entre las diferentes capas de la aplicación (dispositivo – aplicación – interfaces de programación de aplicaciones Cloud).

Con todos los puntos anteriores realizados, se comenzaron a implementar las funcionalidades con el objetivo de realizar el código lo más modular posible, para facilitar su mantenimiento y minimizar la duplicidad de código, siempre utilizando funciones y estructurándolas según la capa con la que se comunican.

Esto provocó un aumento en el número de archivos del proyecto, por lo que se decidió utilizar Gulp para poder minimizarlos y combinarlos, siempre pensando en el rendimiento. De este modo se implementó un hook de Cordova para definir que, antes de la compilación del proyecto, se iban a realizar estas tareas con Gulp para unificar y comprimir el tamaño de los archivos resultantes que se cargarían en la aplicación final.

Diagrama de la estructura interna de la aplicación Lazarus.

En esta fase, el punto en el que se encontró mayor dificultad fue en la definición de los formatos de las fechas que el algoritmo de la funcionalidad de fecha de caducidad pudiera reconocer, ya que los productos del mercado tienen muchos formatos de fecha diferentes.

Fase de test

Esta es la última fase del proyecto. Como no se pudo contar con personas con el perfil del público objetivo de la aplicación, decidí realizar el test de cada funcionalidad con diferentes casos de pruebas.

En este punto se detectaron algunos errores que se corrigieron de inmediato. La funcionalidad en la que más errores se detectaron fue la de fecha de caducidad, precisamente por lo comentado anteriormente, los diferentes formatos de fecha que tenían los productos.

Gracias a esta fase, se pudo hacer una aplicación más fiable en cuanto a los resultados de los análisis se refiere y que tuviera en cuenta todos los casos de respuesta que pudiera haber, por ejemplo, si no se detectaban objetos en una imagen. También se pudo ampliar el algoritmo de detección de fechas, pues inicialmente era muy limitado.

Resultados de algunos test realizados sobre las funcionalidades ofrecidas por Lazarus.

Herramientas utilizadas

Software                    

 Interfaces de programación de aplicaciones de terceros, librerías, kit de desarrollo de software y conectores

Conclusiones

Tras la realización de este proyecto y a modo de conclusión, se puede decir que la consecución de Lazarus ha sido un reto personal al tener que realizar una aplicación totalmente desde cero, incluidas las fases de análisis y diseño. Realizar un diseño completo y funcional ha sido el punto más complicado, junto con la implementación de la parte front-end de la aplicación, pero la lección aprendida gracias a estas dificultades ha sido que un detalle, por pequeño que sea, puede marcar la diferencia entre una aplicación usable y agradable a la vista y una aplicación complicada.

Considero que se han alcanzado completamente los objetivos iniciales del proyecto y que se entrega un producto totalmente funcional, con todas las funcionalidades analizadas y definidas en las fases iniciales del proyecto. También considero que el diseño es adecuado y facilita la utilización de las funcionalidades que proporciona la aplicación, ya que no hay funcionalidades que se escondan tras gestos o clics realizados en una parte concreta de la pantalla.

Sin embargo, a pesar de haber alcanzado los objetivos planteados inicialmente, se considera que la aplicación todavía se puede seguir mejorando para aplicar algunos detalles que pueden aportar funciones de usabilidad.

A pesar de estas posibles mejoras por realizar, considero que, si tuviera que volver a empezar el proyecto, lo haría del mismo modo y seguramente tomando las mismas decisiones, ya que personalmente estoy muy satisfecha con el resultado obtenido.

Documentación

Android Developers. TextToSpeech Documentation.

Google Cloud. Cloud Translation.

Google Cloud. Cloud Vision.

GulpJS. GulpJS Quick Start.

Material Design. Color Tool.


Cita recomendada: SÁNCHEZ, Natalia. Lazarus, aplicación de apoyo para personas con problemas de visión. Mosaic [en línea], octubre 2019, no. 175. ISSN: 1696-3296. DOI: https://doi.org/10.7238/m.n175.1948

Acerca del autor

Ingeniera Técnica en Informática de Gestión, empecé trabajando como desarrolladora realizando integraciones en una plataforma web con JavaScript y PHP, posteriormente tuve que aprender tecnologías .NET (C#, ASP.NET, VB.NET) para adaptarme a los proyectos que surgían en mi entorno laboral. Más tarde llegaron los proyectos sobre aplicaciones móvil en los que fui autodidacta hasta que decidí cursar los estudios del Máster en Aplicaciones Multimedia para poder aplicar los conocimientos adquiridos a mi profesión.

Deja un comentario