NAMMU

← Blog
EngineeringPipelineLegal AI

Cómo Nammu procesa un caso: un pipeline de procesamiento de 5 niveles

Cada página de cada documento legal que subes se clasifica y se enruta al motor de extracción más adecuado — en paralelo, sin bloquear tu flujo de trabajo. Así es como funciona.

IP

Inventum P5

Ingeniería · Galictis-Legal

10 de julio de 2026

7 min de lectura

Cuando un abogado sube un expediente legal a Nammu, algo sucede antes de que corra cualquier análisis de IA: cada página se clasifica y se enruta al motor de extracción más adecuado para manejarla. No todas las páginas pasan por el mismo proceso. No todos los documentos necesitan el mismo tratamiento. Esta es la historia de ese sistema de clasificación — el pipeline de procesamiento de 5 niveles.

El problema con los documentos legales

Los expedientes legales costarricenses no son limpios. Un solo expediente puede contener una resolución mecanografiada de 2024 (texto digital limpio), una copia certificada manuscrita de 2018 (imagen escaneada), un plano catastral o diagrama de propiedad (un artefacto completamente visual), y un acta notarial fotocopiada tres veces (escaneo degradado a distintos DPI). Cada uno requiere una estrategia de extracción fundamentalmente distinta.

El enfoque ingenuo — pasar cada página por el motor más poderoso (visión con IA) — es técnicamente sólido pero económica y temporalmente absurdo. Un expediente de 140 páginas procesado enteramente con Azure GPT-Vision tomaría minutos y costaría órdenes de magnitud más de lo necesario. La mayoría de las páginas son perfectamente legibles con herramientas mucho más simples.

El pipeline de Nammu resuelve esto con una clasificación de enrutamiento único: cada página se inspecciona una sola vez, se le asigna un nivel de complejidad y se envía exactamente al extractor correcto.

Los cinco niveles

Antes de extraer cualquier texto, una pasada ligera con PyMuPDF examina cada página — sin renderizado, sin OCR — y mide cuatro señales: conteo de palabras, proporción de área de imagen, área de bloques de texto y la presencia de palabras clave visuales de disparo legal (plano, croquis, mapa de desalojo). A partir de esto, a cada página se le asigna uno de cinco niveles de complejidad.

L1

Texto digital

Pasada rápida con PyMuPDF

enruta

L2

Texto limpio

Limpieza de texto estándar legal

enruta

L3

OCR 200 DPI

Tesseract estándar

enruta

L4

OCR HD 300 DPI

Cascada multi-PSM

enruta

L5

Visión con IA

Azure GPT-Vision

Cada página se clasifica una sola vez y se enruta a exactamente un nivel — no se ejecuta secuencialmente por los cinco.

L1

Texto digital incrustado

PyMuPDF · fitz_text

Páginas de PDF puramente digitales con ≥ 50 palabras. Las resoluciones judiciales, escritos mecanografiados y presentaciones modernas caen aquí.

La ruta más rápida — sin renderizado, sin OCR. Menos de un segundo por página.

L2

Texto digital limpio

fitz_clean · limpieza de texto estándar

Páginas de diseño mixto con ≥ 30 palabras. Elimina el texto estándar legal, encabezados repetidos y ruido de pie de página de documentos estructurados.

El análisis legal temprano se dispara cuando este nivel termina — mientras L3–L5 aún corren.

L3

OCR estándar

Tesseract · renderizado a 200 DPI

Páginas escaneadas con 10–29 palabras o proporciones mixtas. El caballo de batalla para la mayoría de documentos físicos.

Renderiza cada página a PNG de 200 DPI y luego ejecuta Tesseract. Maneja la mayoría de las páginas de expedientes antiguos.

L4

OCR de alta densidad

Tesseract HD · 300 DPI · cascada multi-PSM

Escaneos pesados con < 10 palabras y ≥ 50% de área de imagen. Fotocopias degradadas, copias certificadas antiguas, documentos faxeados.

Prueba múltiples modos de segmentación de página de Tesseract en secuencia. Respaldo de OCR local opcional para niveles de pago.

L5

Visión con IA

Azure GPT-Vision · respaldo ollama_vision

Diagramas, mapas catastrales, planos y cualquier cosa que una palabra clave de disparo identifique como artefacto visual.

Corre en un pool de hilos de visión dedicado en paralelo con L1–L4. Limitado por nivel y con tope por documento.

Enrutamiento único: ¿por qué no una cascada?

Una alternativa común es una cascada completa: probar L1, si falla probar L2, luego L3, luego L4, luego L5. Esto garantiza cobertura máxima pero a un costo elevado — cada página pasa por hasta cinco pasadas. Para un expediente de 38 documentos, esto es la diferencia entre un tiempo de procesamiento de 3 minutos y uno de 20 minutos.

El diseño de enrutamiento único funciona porque el clasificador de páginas es preciso para la gran mayoría de las páginas. Las señales — conteo de palabras, proporción de imagen — son predictores fuertes de qué extractor tendrá éxito. Los únicos casos que necesitan una segunda oportunidad son casos límite deliberados, y para esos, el pipeline usa promociones específicas.

Promociones específicas: respaldos inteligentes

Cuando la clasificación es incorrecta — sucede — el pipeline tiene cuatro reglas de respaldo quirúrgicas en lugar de una cascada completa de reintentos.

DisparadorDesde→ HaciaCuándo
L1 en blanco → 0 palabras tras la extracciónL1L3Siempre
L5 visión deshabilitada por nivel o entornoL5 clasificadoL4Respaldo por nivel
Cualquier página L1–L4 aún con 0 palabrasCualquieraL5Nivel de pago + tope
L4 con < 50 palabras extraídasL4OCR OllamaNivel + flag de entorno

La más importante de estas es la promoción de L1 en blanco → L3, agregada en junio de 2026. Algunos escaneos reportan un área de imagen casi nula a PyMuPDF (los metadatos dicen que la página está casi en blanco) mientras en realidad contienen texto denso. El clasificador les asigna L1, el lector digital rápido no encuentra nada, y silenciosamente se perderían. La regla de promoción las detecta: cualquier página L1 que aún tenga cero palabras tras la extracción recibe un intento de OCR en L3 antes de ser marcada.

¿Por qué no promover directamente a L4 o L5? L3 a 200 DPI es rápido y captura la mayoría de los escaneos mal clasificados. L4 y L5 se reservan para páginas que genuinamente necesitan mayor densidad o comprensión visual. Promover de más desperdicia recursos y ralentiza el lote.

Paralelismo: niveles dentro de un documento

Dentro de un solo documento, los niveles no corren secuencialmente. Las páginas de visión L5 se envían a un pool de hilos dedicado de inmediato — empiezan mientras las páginas L1–L4 aún se están procesando. Dentro de cada nivel, todas las páginas de ese nivel corren en paralelo en un pool de CPU dimensionado según el hardware del host.

El coordinador espera a que cada lote de nivel de CPU termine antes de pasar al siguiente (para que las promociones de L1-en-blanco puedan decidirse después de que L1 termine), pero L5 es completamente no bloqueante y puede completarse antes, durante o después del trabajo de CPU.

Lo que ves en la interfaz: disponibilidad progresiva

No esperas a que los cinco niveles terminen antes de poder trabajar. La interfaz se actualiza a medida que cada lote de nivel se completa, siguiendo una progresión de disponibilidad:

L1 listo

TEXT_READY

Puedes empezar a hacer preguntas sobre el texto extraído de inmediato

L2 listo

ENRICHED

Texto limpio disponible; el análisis legal temprano empieza en segundo plano

L3 listo

ENRICHED

Primera pasada de OCR completa; llegan las páginas escaneadas

L4 listo

OCR_DONE

Escaneos de alta densidad procesados; todas las páginas físicas capturadas

L5 listo

COMPLETE

Diagramas, mapas y planos completamente comprendidos

Esto significa que para un documento con texto mayormente digital, puedes estar haciendo preguntas y ejecutando análisis a segundos de subirlo — mientras el pipeline maneja silenciosamente las páginas escaneadas más difíciles en segundo plano.

Política de nivel y acceso a L5

L5 Visión con IA es el extractor más poderoso y más costoso. El acceso está limitado por el nivel de suscripción con un tope de páginas por documento:

NivelVisión L5Promoción L5Tope / doc
Beta20 páginas
Pro20 páginas
Advanced50 páginas
Enterprise · Firm100 páginas

El tope evita que un documento grande (algunas compilaciones de códigos llegan a más de 400 páginas) consuma todo el presupuesto de una sesión en llamadas de visión. Las páginas que exceden el tope se marcan en los metadatos del documento como no_text_pages — nunca se descartan silenciosamente.

Garantía de no pérdida de contenido

Los expedientes legales no deben perder páginas silenciosamente. Si una página llega al final del pipeline con cero palabras extraídas — después de todas las promociones aplicables — se registra en nivel WARNING, se anota en el JSON del documento ensamblado y se muestra en la interfaz. Siempre sabrás qué páginas no se pudieron leer y por qué.

Esto importa en la práctica. Un plazo procesal enterrado en un escaneo degradado que falló en la extracción sigue siendo un plazo. Nammu muestra el vacío en lugar de fingir que la página no existe.

Qué sigue

El pipeline fue diseñado para extenderse. Los dos elementos abiertos más significativos son:

  • Auto-escalación de L3 a L4 para páginas que pasan el OCR pero producen texto de baja confianza — actualmente requiere designación manual a L4.
  • Extracción estructurada en L2 para documentos altamente plantillados (actas notariales, resoluciones estándar) donde el análisis a nivel de campo aportaría más valor que el texto en bruto.

El pipeline de 5 niveles no es la parte técnicamente más glamorosa de un producto de IA legal. Pero es la base de la que depende todo lo demás. Si la extracción falla, ninguna cantidad de inteligencia posterior lo arregla. Si funciona bien, el sistema lee documentos como lo haría un asistente legal cuidadoso: sabiendo qué páginas necesitan una segunda mirada, y sin fingir nunca que una página difícil es fácil.

¿Quieres ver esto en acción con tus casos?

Solicita acceso temprano y te guiaremos por una sesión de procesamiento en vivo con expedientes reales de tu área de práctica.

Solicita una demo →
Esta publicación fue traducida al español con asistencia de inteligencia artificial a partir del contenido original en inglés. Aunque revisamos la traducción para mantener la precisión técnica, el texto en inglés es la versión de referencia. Si notas alguna discrepancia, contáctanos.