Aplicación móvil multiplataforma desarrollada en .NET MAUI que utiliza la potencia de Azure Computer Vision para el análisis inteligente de imágenes. Permite detectar objetos, personas y texto en tiempo real o desde archivos, ofreciendo una experiencia interactiva con traducción automática al español, búsqueda integrada en Bing y un sistema dinámico de cajas delimitadoras (bounding boxes) con enfoque manual.
- Arquitectura
- Tecnologías y dependencias
- Estructura del proyecto
- Requisitos previos
- Instalación y configuración
- Uso de la aplicación
- Mejoras implementadas
El proyecto sigue el patrón MVVM (Model-View-ViewModel) proporcionado por el toolkit CommunityToolkit.Mvvm:
Vista (XAML) <--> ViewModel (lógica + bindings) <--> Servicios (Azure, Cámara, Traducción)
- Models:
TargetObject,BoundingBox— representan las entidades detectadas y sus coordenadas. - Views:
MainPageySettingsPage— páginas XAML con data binding reactivo. - ViewModels:
MainViewModel(gestión de análisis y estado global) ySettingsViewModel(configuración). - Services: Encapsulan la lógica de negocio y comunicación externa.
AzureVisionService: Interacción con la API de Azure Computer Vision.TranslationService: Traducción automática de etiquetas de IA al español.CameraService: Gestión nativa de captura y selección de imágenes.ThemeService: Control de temas visuales y consistencia UI.
- Helpers: Utilidades auxiliares (
Converters,Constants).
Toda la comunicación con la nube se realiza a través de AzureVisionService, que implementa la interfaz IAzureVisionService e interactúa con los servicios cognitivos de Microsoft usando ImageAnalysisClient.
| Componente | Tecnología |
|---|---|
| Framework | .NET MAUI |
| Lenguaje | C# |
| Patrón | MVVM (CommunityToolkit.Mvvm) |
| Motor de IA | Azure Computer Vision (API REST) |
| IDE | Visual Studio 2026 |
Paquetes NuGet:
Azure.AI.Vision.ImageAnalysis— SDK oficial para el análisis de imágenes.CommunityToolkit.Mvvm— Source generators, ObservableProperty y RelayCommand.CommunityToolkit.Maui— Controles, animaciones y converters para MAUI.Microsoft.Maui.Controls— Framework UI multiplataforma.Microsoft.Extensions.Logging.Debug— Sistema de logging para depuración.
- .NET SDK instalado (versión 10 o superior).
- Visual Studio 2026 con la carga de trabajo ".NET MAUI" instalada.
- Recurso de Azure: Tener una instancia de "Computer Vision" o "Azure AI Services" en el portal de Azure.
- Credenciales: Endpoint y API Key del recurso.
Antes de usar la app, debes tener configurado el backend de inteligencia artificial:
- Inicia sesión en Azure Portal.
- Crea un nuevo recurso de Azure AI Services o Computer Vision.
- En la sección Claves y punto de conexión, copia:
- Extremo (Endpoint): La URL del recurso.
- Clave 1 o 2: El token secreto de autenticación.
Ve a la sección de Releases del repositorio y descarga la última versión:
- Android: Descarga e instala el archivo
.apk. - Windows: Descarga el
.zip, descomprímelo y ejecutaAzureLens.exe.
Si prefieres compilarlo tú mismo:
- Clona el repo:
git clone https://github.com/KevinAZHD/AzureLens.git - Usa el script automático para Windows:
Run.bat
Al abrir la app, si no detecta configuración previa, tienes que configurar la pestaña Ajustes.
Configuración de la comunicación con los servicios cognitivos.
- Endpoint: URL del servidor de Azure (ej:
https://mi-recurso.cognitiveservices.azure.com/). - API Key: Clave generada desde el portal de Azure. Pulsa el icono del ojo para mostrar u ocultar el valor.
- Pulsar Guardar conexión para validar y persistir los cambios. La app verifica la validez de los datos antes de permitir el uso del escáner.
Personalización de qué elementos quieres que la IA detecte y cómo se muestran.
- Reconocimiento humano: Activa/desactiva la detección de personas (rectángulos rojos).
- Muestreo de materiales: Activa/desactiva la detección de objetos (rectángulos de colores).
- Descripción generativa: Muestra u oculta una explicación textual (Caption) de lo que la IA ve en la imagen.
- Extracción de texto: Activa el módulo OCR para detectar y permitir copiar texto.
- Modo oscuro: Cambia instantáneamente la estética de la interfaz entre modo oscuro y claro.
La pantalla principal (Inicio) es el centro de operaciones para el análisis.
- Capturar imagen: Pulsa el botón central de cámara para tomar una foto.
- Seleccionar desde galería: Pulsa el icono de imagen a la izquierda para elegir un archivo del dispositivo.
- Limpiar: El botón de papelera a la derecha borra el análisis actual y restablece la vista.
- Detección dinámica: Una vez capturada, la app muestra un indicador de carga mientras procesa con Azure.
AzureLens permite interactuar directamente con la imagen analizada.
- Cajas de colores: Representan objetos y personas detectadas.
- Efecto de Enfoque (Focus): Pulsa sobre la etiqueta de cualquier caja (ej: "Laptop") para ocultar el resto de cajas y centrarte en ese elemento. Pulsa de nuevo para volver a ver todo el conjunto.
- Etiquetas inteligentes: Se posicionan automáticamente para evitar recortarse y siempre muestran el nombre traducido al español.
En el panel inferior se listan todos los hallazgos de forma detallada, priorizando la comprensión del entorno.
- Descripción IA (Caption): Si está activada, aparecerá un bloque de texto en la parte superior del panel con una descripción natural de la escena (ej: "Un hombre sentado en un escritorio con un ordenador portátil").
- Copiar Texto (OCR): Pulsa el icono de copia en los resultados de texto. Verás una animación donde el icono se convierte en un check verde para confirmar el copiado al portapapeles.
- Búsqueda en Bing: Pulsa sobre cualquier objeto detectado o su icono de lupa para abrir una búsqueda de imágenes en Bing con ese nombre de forma instantánea.
- Confianza de la IA: Cada objeto muestra su porcentaje de precisión (ej:
Confianza: 98.7%) para que sepas el grado de fiabilidad del análisis.
Sobre las capacidades base de la API de Azure, se han implementado las siguientes mejoras y características que elevan la experiencia de usuario:
- Modo Enfoque Interactivo (Focus Mode): Sistema lógico avanzado en el lienzo de dibujo (
AbsoluteLayout) que permite aislar objetos visualmente. Al tocar la etiqueta de un objeto, el resto se ocultan al 100% y se desactivan sus interacciones, permitiendo un análisis quirúrgico de elementos individuales. - Control de Visualización Granular: Se han implementado filtros en tiempo real para personalizar el análisis:
- Reconocimiento humano: Lógica específica para destacar personas con rectángulos rojos y emojis identificativos (
👤). - Muestreo de materiales: Algoritmo de rotación de colores para diferenciar objetos distintos en una misma escena.
- Descripción generativa: Integración de modelos de lenguaje visual para obtener pies de foto descriptivos y naturales.
- Extracción de texto (OCR): Detección inteligente de caracteres con capacidad de copiado rápido al portapapeles.
- Reconocimiento humano: Lógica específica para destacar personas con rectángulos rojos y emojis identificativos (
- Traducción Multinivel: Motor de traducción integrado que procesa tanto las etiquetas simples (objetos) como las descripciones generativas complejas (
Captions), convirtiendo el output técnico de Azure (Inglés) a un lenguaje natural y cercano (Español). - Ajuste Dinámico de Layout: El código detecta las dimensiones reales de la imagen analizada, asegurando que la imagen siempre sea visible sin deformaciones.
- Seguridad y Validación Preventiva: Implementación de un Overlay de Bloqueo que impide el uso de la aplicación si no se detectan credenciales válidas, protegiendo al usuario de errores de red y guiándolo directamente a la configuración.
- Persistencia de Estado Robusta: Todas las preferencias (toggles de visualización, tema claro/oscuro, Endpoint y API Key) se guardan usando
Preferencesde .NET MAUI, lo que permite que la app recuerde exactamente cómo la dejaste al volver a abrirla. - Gestión Inteligente de Recursos: Cierre automático del flujo de cámara al navegar entre páginas para evitar fugas de memoria y consumo innecesario de batería.





