Skip to main content

ocr.routes.ts

Este archivo define las rutas del backend relacionadas con el análisis por OCR para el módulo NutriScan, permitiendo tanto el procesamiento de una imagen subida por el usuario como la confirmación manual del texto extraído.


🔍 Ubicación

src/routes/ocr.routes.ts


📌 Propósito

Agrupar y exponer las rutas que permiten:

  1. Subir una imagen para extraer texto usando OCR.
  2. Confirmar o corregir manualmente el texto extraído por el sistema.

🧩 Importaciones clave

import express from 'express';
import { uploadMemory } from '../middleware/uploadMemory';
import { extraerTextoDesdeImagen, confirmarNombreManual } from '../controllers/ocr.controller';
MóduloPropósito
expressFramework web para crear rutas y middleware.
uploadMemoryMiddleware que usa multer para cargar imágenes en memoria.
ocr.controllerControladores que procesan OCR y confirmaciones de texto.

🚦 Definición de rutas

📌 POST /nutriscan-ocr

router.post('/nutriscan-ocr', uploadMemory.single('imagen'), extraerTextoDesdeImagen);
ElementoDetalle
MétodoPOST
Ruta/nutriscan-ocr
MiddlewareuploadMemory.single('imagen') - Procesa una única imagen en memoria.
Controlador asociadoextraerTextoDesdeImagen
PropósitoRecibe una imagen, la procesa con OCR y devuelve el texto detectado.

🧠 Ideal para escanear productos alimenticios en tiempo real.


📌 POST /confirmar-nombre

router.post('/confirmar-nombre', confirmarNombreManual);
ElementoDetalle
MétodoPOST
Ruta/confirmar-nombre
Controlador asociadoconfirmarNombreManual
PropósitoPermite al usuario confirmar o ajustar el nombre del producto
Body esperadoTexto manual enviado desde el frontend

🔎 Útil cuando el OCR no logra identificar correctamente el nombre del producto.


✅ Ejemplo de uso (cliente frontend)

Envío de imagen por formulario:

const formData = new FormData();
formData.append('imagen', archivoSeleccionado);

await fetch('/api/nutriscan-ocr', {
method: 'POST',
body: formData,
});

Confirmar nombre manual:

await fetch('/api/confirmar-nombre', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ nombre: 'Chocoramo' }),
});

📝 Resumen

RutaMétodoMiddlewareControladorPropósito
/nutriscan-ocrPOSTuploadMemory.single()extraerTextoDesdeImagenProcesar imagen y extraer texto OCR
/confirmar-nombrePOST-confirmarNombreManualConfirmar o corregir el texto extraído

🧠 Notas adicionales

  • uploadMemory es ideal cuando no se requiere almacenamiento persistente de archivos.
  • Estas rutas están pensadas para integrarse con sistemas de análisis como OpenAI (GPT) o bases como Open Food Facts.