El reto
Una plataforma de contenidos recibe un flujo constante de capturas de pantalla con texto, y había que revisar cada una a mano: ¿se puede leer el texto de esta imagen o no? El volumen superó lo que una persona podía revisar.
El servicio tenía que puntuar la legibilidad de forma automática, devolver el resultado en una escala configurable y aguantar cargas por lotes sin bloquear a quien hace la petición.
El enfoque
El microservicio recibe una imagen a través de una API REST y devuelve una valoración de calidad (buena, aceptable o mala) en una escala configurable. El procesado es asíncrono: quien hace la petición envía una imagen, recibe al instante un identificador y recoge más tarde la valoración terminada, así que los lotes grandes nunca bloquean nada.
La puntuación combina dos señales: lo que el motor de OCR consigue leer y los parámetros de la propia imagen. Cada señal por separado juzga mal algunas imágenes; juntas siguen de cerca cómo valora una persona la legibilidad.
Arquitectura
- Backend: Python, FastAPI, con Celery y RabbitMQ para el procesado asíncrono
- OCR: EasyOCR para el reconocimiento de texto
- Datos: SQLite con Alembic para guardar los resultados del análisis
- Despliegue: Docker Compose (FastAPI, worker de Celery, RabbitMQ)
Resultados
La revisión de capturas que antes ocupaba el tiempo de una persona ahora se hace bajo demanda: envías una imagen y recibes una puntuación. La escala es configurable, así que la plataforma decide dónde termina lo bueno y empieza lo aceptable.