Clasificador de figuras CAD y tickets con One-Shot Learning
- 1 minSistema de clasificación de imágenes pensado para un caso muy concreto: dado un documento escaneado, distinguir automáticamente si es una figura geométrica/CAD (como un cilindro) o un ticket de compra — y si es un ticket, extraer el texto que contiene. La idea es que un mismo pipeline reciba cualquiera de los dos tipos de documento y decida, sin reentrenar nada, cómo procesarlo.
Para lograrlo sin necesitar miles de ejemplos por clase se usa one-shot learning: en vez de un clasificador tradicional, una red siamesa aprende a comparar pares de imágenes y decidir si pertenecen a la misma clase, entrenando con relativamente pocos ejemplos por categoría.
Pipeline:
- Preprocesamiento con OpenCV (escala de grises, binarización de Otsu, transformaciones morfológicas, normalización a
[0, 1]). - Red siamesa entrenada para few-shot learning (pesos en
siamese.weights.h5). - Si la imagen es un ticket, se activa OCR con Pytesseract para extraer el texto.
- API con Flask/FastAPI:
/inferencepara clasificación,/inference-ocrpara clasificación + texto detectado.
Datos de entrenamiento tomados de datasets públicos de Kaggle (“3D Geometric Objects in 2D plane” y “Find it again!”).
Repositorio: github.com/RodolfoFerro/cv-demo