Text Extractor es una aplicación móvil diseñada para escanear texto de imágenes y ofrecer varias funcionalidades, como copiarlo o guardarlo. Este proyecto busca aprovechar las características nativas de los dispositivos móviles, integrando tecnologías modernas y servicios en la nube.
El proyecto tiene los siguientes objetivos principales:
- Desarrollar una aplicación móvil funcional y fácil de usar que aproveche capacidades nativas como la cámara y la gestión de almacenamiento.
- Implementar un sistema de registro e inicio de sesión seguro mediante Firebase Authentication.
- Diseñar e integrar una base de datos en la nube para almacenar el historial de textos escaneados.
- Ofrecer una experiencia multilingüe con soporte para español, inglés, alemán, italiano, portugués y francés.
- Incorporar un diseño personalizable.
- Proveer opciones de personalización y ayuda para mejorar la experiencia del usuario.
El proyecto sigue una estructura organizada en las siguientes carpetas principales:
-
manifest: Contiene el archivo
AndroidManifest.xml
, donde se definen configuraciones esenciales de la aplicación, como el nombre, permisos requeridos y componentes principales. -
com.example.textextractor: Carpeta principal del código fuente, que incluye:
- Activities: Controlan las pantallas de la aplicación.
- Clases auxiliares: Manejan lógicas específicas, como la integración con Firebase o la detección de texto.
-
res: Reúne todos los recursos visuales y de configuración:
- drawable: Imágenes e íconos utilizados en la interfaz.
- menu: Opciones para los diversos menús.
- values: Archivos de configuración para idiomas y estilos de la aplicación.
- colors: Definiciones de los colores usados en la aplicación.
- strings: Estructura del texto de la aplicación en diferentes idiomas.
- themes: Definición del tema principal de la app, así como su versión oscura.
- mipmap: Versiones del ícono de la aplicación adaptadas a diferentes densidades de pantalla.
Durante el desarrollo, el diseño de Text Extractor ha sido modificado con respecto al diseño inicial con el fin de mejorar la experiencia del usuario:
-
Cámara:
- La cámara solo se activa al presionar el botón “Capturar imagen”.
- Las imágenes capturadas se muestran en miniatura para optimizar el espacio en pantalla.
-
Interfaz:
- Se introdujeron dos botones en la parte inferior para capturar o seleccionar imágenes del dispositivo.
- El acceso al historial se movió al menú desplegable en la parte superior.
- Se eliminaron las opciones de flash y rotar cámara, ya que están integradas en la interfaz nativa de la cámara.
-
Registro e Inicio de Sesión:
- Se añadió una vista exclusiva para gestionar el registro e inicio de sesión de los usuarios.
-
Escaneo de texto:
- Detecta texto en imágenes capturadas con la cámara o seleccionadas del almacenamiento.
- Utiliza bibliotecas de reconocimiento óptico de caracteres (OCR) para garantizar resultados precisos.
-
Copiar texto:
- Permite copiar el texto escaneado al portapapeles para reutilizarlo en otras aplicaciones.
-
Guardar texto:
- Los textos escaneados se pueden almacenar en Firebase, creando un registro accesible desde cualquier dispositivo asociado al usuario.
-
Historial:
- Presenta una lista de textos guardados, ordenados por fecha.
- Ofrece opciones para copiar o eliminar entradas del historial.
-
Ajustes:
- Permite cambiar entre tema oscuro o claro.
- Ofrece configuración de idioma (Inglés, Español, Francés, Italiano, Alemán y Portugués).
-
Ayuda:
- Incluye una sección de preguntas frecuentes para resolver dudas comunes sobre el uso de la aplicación.
-
Registro de usuarios:
- Registro mediante correo electrónico y contraseña.
- Integración con cuentas de Google para un acceso más rápido.
- Autenticación segura mediante Firebase Authentication.
-
Idioma predeterminado:
- La aplicación detecta y adopta el idioma configurado en el dispositivo del usuario, si este se encuentra en la selección disponible dentro de la app.
La aplicación desarrollada utiliza una arquitectura basada en los principios de MVVM (Model-View-ViewModel), aunque no implementa un ViewModel de manera explícita. En lugar de ello, se apoya en algunos de los conceptos fundamentales de MVVM, como la separación de responsabilidades y la gestión del estado de la UI.
-
Plataforma:
- Android Studio para el desarrollo de la aplicación.
- Firebase para autenticación y almacenamiento en la nube.
-
Bibliotecas:
- ML Kit para reconocimiento de texto.
-
Lenguajes:
- Kotlin para el código principal.
- XML para recursos visuales.
-
Traducción del texto escaneado:
- Implementar la posibilidad de traducir el texto una vez escaneado y permitir su almacenamiento con la traducción.
-
Selección del recuadro a escanear:
- Permitir al usuario seleccionar un recuadro dentro de la imagen para escanear solo el texto contenido en su interior.
-
Soporte en alfabetos adicionales:
- Permitir al usuario escanear texto en idiomas que no usen el alfabeto latino, como chino, japonés, coreano...
Text Extractor es una aplicación versátil que combina tecnología avanzada con un diseño intuitivo. Durante el desarrollo, se logró superar los desafíos de integración de tecnologías y optimización de la interfaz, resultando en un producto que cumple con los objetivos planteados. La aplicación se encuentra lista para ser utilizada y ampliada en futuras iteraciones, según las necesidades de los usuarios.