Automatización documental e inteligencia artificial 15 min lectura

Document Intelligence Pipeline: convierte PDFs difíciles en datos útiles para IA, Excel y automatización

Convierte PDFs, escaneos y contratos en Markdown, JSON y tablas listas para IA, Excel o n8n. Aprende un pipeline profesional con Docling, Marker y OCR sin perder trazabilidad.

Por Equipo Starbyte

Document Intelligence Pipeline: convierte PDFs difíciles en datos útiles para IA, Excel y automatización

Document Intelligence Pipeline: convierte PDFs difíciles en datos útiles para IA, Excel y automatización

El problema real: tus documentos no están “digitalizados”, solo están guardados como archivos

Muchas organizaciones creen que ya digitalizaron sus procesos porque tienen carpetas llenas de PDFs.

Pero un PDF escaneado, una resolución, un contrato, un informe técnico o una cotización no siempre es información utilizable. Muchas veces es solo una imagen encerrada en un archivo.

Puedes abrirlo.
Puedes leerlo.
Puedes imprimirlo.
Puedes enviarlo por correo.

Pero si quieres responder preguntas, llenar una tabla, alimentar un flujo de n8n, construir un RAG o extraer datos confiables, el PDF se vuelve un problema.

El documento tiene texto, pero también tiene estructura: títulos, subtítulos, tablas, firmas, anexos, sellos, fechas, montos, códigos, notas al pie, encabezados, numeración, páginas escaneadas, imágenes, columnas, cuadros y campos repetidos.

Un OCR básico puede sacar texto. Pero no necesariamente entiende la estructura.

Ahí aparece una disciplina que está creciendo rápido: Document Intelligence Pipeline.

No se trata de “pasar PDF a texto”.
Se trata de convertir documentos difíciles en datos limpios, trazables y reutilizables.


Por qué este tema está en tendencia

La inteligencia documental está creciendo porque la IA generativa necesita buenos datos para funcionar bien. No basta con tener documentos: hay que convertirlos en información estructurada.

IBM impulsa Docling, un proyecto open source para convertir documentos complejos en datos listos para IA, detectando tablas, fórmulas, orden de lectura, OCR y estructura documental. Su repositorio oficial lo presenta como una herramienta para preparar documentos para GenAI.

Marker también se ha posicionado como una herramienta open source fuerte para convertir PDF, imágenes, DOCX, PPTX, XLSX, HTML y EPUB a Markdown, JSON, chunks y HTML, con soporte para tablas, formularios, ecuaciones, imágenes y extracción estructurada.

En paralelo, Mistral OCR y su Document AI apuntan al procesamiento de PDFs, scans, DOCX, PPTX y fuentes manuscritas, con salidas en Markdown, JSON y extracción por plantillas o anotaciones.

La tendencia es clara:

La IA documental dejó de ser OCR. Ahora es conversión estructurada, validación y preparación para automatización.


La idea central: no conviertas documentos; construye una tubería

Un error común es buscar “la mejor herramienta OCR” como si existiera una sola respuesta.

Pero los documentos no son iguales.

Un contrato nacido digitalmente no necesita el mismo tratamiento que un escaneo borroso.
Una tabla financiera no se procesa igual que una carta simple.
Un informe con anexos no se analiza igual que una factura.
Un PDF público no tiene el mismo riesgo que un expediente con datos personales.

Por eso la solución profesional no es una herramienta única.

Es una tubería:

Documento
→ clasificación
→ extracción
→ normalización
→ validación
→ salida estructurada
→ trazabilidad
→ automatización

A esa tubería la llamaremos Document Intelligence Pipeline.


La primera decisión: local, cloud o híbrido

Antes de instalar nada, decide dónde procesarás los documentos.

Local

Ideal para documentos sensibles, contratos internos, expedientes, datos personales, pruebas iniciales y organizaciones que no quieren subir archivos a terceros.

Herramientas candidatas:

  • Docling;
  • Marker;
  • Tesseract;
  • PyMuPDF;
  • scripts propios.

Cloud

Ideal para alta precisión, OCR multimodal avanzado, documentos muy complejos, extracción con plantillas, escalabilidad y baja capacidad técnica interna.

Herramientas candidatas:

  • Mistral OCR / Document AI;
  • APIs de OCR;
  • plataformas Document AI.

Híbrido

Ideal para clasificar localmente, anonimizar datos, enviar solo fragmentos no sensibles, usar cloud para documentos difíciles y mantener control sobre datos críticos.

La regla profesional:

No subas documentos sensibles a una API externa solo porque el OCR es mejor. Primero clasifica el riesgo.


Mapa rápido de herramientas

Herramienta Mejor para Ventaja Precaución
Docling PDFs complejos, tablas, estructura, RAG open source, orientado a GenAI puede requerir ajustes por documento
Marker PDF a Markdown/JSON rápido y flexible convierte múltiples formatos, soporta chunks puede necesitar GPU para cargas pesadas
Mistral OCR documentos complejos y extracción cloud alta capacidad multimodal y JSON revisar privacidad y costos
Tesseract OCR clásico local maduro y offline no entiende estructura avanzada
PyMuPDF extracción técnica de PDF digital rápido y controlable limitado en escaneos

No elijas por popularidad. Elige por tipo de documento.


El truco experto: antes del OCR, clasifica el documento

Muchas tuberías fallan porque tratan todos los PDFs igual.

Primero crea una clasificación simple:

A. PDF nacido digitalmente
B. PDF escaneado
C. PDF mixto
D. PDF con tablas críticas
E. PDF con firmas/sellos
F. Documento con datos sensibles
G. Documento con imágenes relevantes

Cada tipo activa una ruta distinta.

Ejemplo:

PDF digital simple → extracción directa
PDF escaneado → OCR
PDF con tablas → parser con tablas
PDF sensible → procesamiento local
PDF público complejo → API cloud posible

Esta clasificación ahorra tiempo y reduce errores.


Preparación del entorno local

Usaremos Python.

Crea carpeta:

mkdir document-intelligence-pipeline
cd document-intelligence-pipeline

Crea entorno virtual:

python -m venv .venv

Activa el entorno.

En Windows:

.venv\Scripts\activate

En Linux/macOS:

source .venv/bin/activate

Actualiza pip:

python -m pip install --upgrade pip

Crea carpetas:

mkdir input output output/markdown output/json output/tables output/evidence scripts

Estructura esperada:

document-intelligence-pipeline/
├── input/
├── output/
│   ├── markdown/
│   ├── json/
│   ├── tables/
│   └── evidence/
└── scripts/

Ruta 1: convertir documentos con Docling

Instala Docling:

pip install docling

Prueba conversión básica:

docling input/documento.pdf --to md --output output/markdown

Si quieres exportar a JSON:

docling input/documento.pdf --to json --output output/json

La ventaja de Docling es que no piensa solo en texto plano. Está diseñado para preparar documentos para flujos de IA, conservando estructura útil como tablas, orden de lectura y elementos documentales.

Úsalo cuando necesites Markdown limpio, estructura, tablas, preparación para RAG, procesamiento local y trazabilidad básica.


Ruta 2: convertir con Marker

Instala Marker:

pip install marker-pdf

Convierte un PDF a Markdown:

marker_single input/documento.pdf output/markdown

Marker puede convertir documentos a Markdown, JSON, chunks y HTML, y soporta múltiples tipos de archivo. Es útil cuando quieres una salida directa para RAG o indexación.

Úsalo cuando necesitas conversión rápida, chunks, tablas, fórmulas, salida Markdown/JSON o procesamiento local.


Ruta 3: usar OCR cloud cuando el documento es muy difícil

Hay documentos donde lo local puede quedarse corto:

  • scans de baja calidad;
  • tablas deformadas;
  • sellos encima de texto;
  • handwriting;
  • imágenes con información;
  • documentos con layout irregular;
  • anexos mezclados.

En esos casos, un OCR avanzado como Mistral OCR puede ayudar. Su documentación indica que el procesador OCR devuelve texto extraído, imágenes, bounding boxes y metadatos de estructura, facilitando el trabajo programático con el contenido reconocido.

Pero úsalo con criterio:

documentos públicos o anonimizados → posible cloud
documentos sensibles → local o anonimización previa

La decisión correcta no es “cloud siempre” ni “local siempre”. Es clasificar.


El patrón profesional: doble salida

No generes solo Markdown.

Para que el documento sea realmente útil, genera dos salidas:

1. Markdown para lectura, RAG y revisión humana.
2. JSON para automatización, Excel, base de datos o n8n.

El Markdown conserva contexto.
El JSON permite procesamiento.

Ejemplo de salida JSON esperada:

{
  "tipo_documento": "contrato",
  "titulo": "Contrato de prestación de servicios",
  "fecha_documento": "2026-05-20",
  "partes": [
    {
      "nombre": "Empresa A",
      "rol": "contratante"
    },
    {
      "nombre": "Empresa B",
      "rol": "contratista"
    }
  ],
  "monto_total": 15000.00,
  "moneda": "PEN",
  "plazo_dias": 45,
  "alertas": [],
  "campos_faltantes": []
}

La tubería no termina cuando extraes texto. Termina cuando tienes datos útiles.


Crea un contrato de extracción

Antes de pedirle a una IA que extraiga datos, diseña el esquema.

Ejemplo para contratos:

{
  "tipo_documento": "string",
  "titulo": "string",
  "fecha_documento": "YYYY-MM-DD | null",
  "partes": [
    {
      "nombre": "string",
      "rol": "contratante | contratista | testigo | otro"
    }
  ],
  "monto_total": "number | null",
  "moneda": "PEN | USD | EUR | null",
  "plazo_dias": "integer | null",
  "obligaciones_principales": ["string"],
  "penalidades": ["string"],
  "campos_faltantes": ["string"],
  "alertas": ["string"]
}

Reglas:

No inventar.
Usar null si falta.
Registrar campos faltantes.
Registrar contradicciones.
No agregar claves extra.

Esto evita que la IA entregue una interpretación bonita pero inútil.


Script base para clasificar documentos por tipo

Crea:

nano scripts/classify_document.py

Código:

from pathlib import Path

def classify_pdf(path: Path) -> str:
    name = path.name.lower()

    if "contrato" in name:
        return "contrato"
    if "factura" in name or "cotizacion" in name:
        return "comercial"
    if "informe" in name:
        return "informe"
    if "resolucion" in name:
        return "resolucion"

    return "desconocido"

input_dir = Path("input")

for pdf in input_dir.glob("*.pdf"):
    print(pdf.name, "→", classify_pdf(pdf))

Ejecuta:

python scripts/classify_document.py

Este clasificador es simple, pero te obliga a pensar en rutas. Luego puedes mejorarlo con IA.


Script para revisar si un PDF tiene texto extraíble

Instala PyMuPDF:

pip install pymupdf

Crea:

nano scripts/check_pdf_text.py

Código:

from pathlib import Path
import fitz

def has_extractable_text(pdf_path: Path, min_chars: int = 100) -> bool:
    doc = fitz.open(pdf_path)
    text = ""

    for page in doc[:3]:
        text += page.get_text()

    return len(text.strip()) >= min_chars

for pdf in Path("input").glob("*.pdf"):
    status = "PDF digital o mixto" if has_extractable_text(pdf) else "probable escaneado"
    print(f"{pdf.name}: {status}")

Ejecuta:

python scripts/check_pdf_text.py

Esto te permite decidir si vas por extracción directa u OCR.


El semáforo documental

Clasifica cada archivo con un semáforo.

Verde:
PDF digital, texto extraíble, estructura simple.

Ámbar:
PDF mixto, algunas tablas, anexos, estructura irregular.

Rojo:
escaneado, mala calidad, tablas críticas, firmas, datos sensibles.

Ruta recomendada:

Semáforo Ruta
Verde Docling o PyMuPDF directo
Ámbar Docling o Marker + validación
Rojo OCR especializado + revisión humana

No todos los documentos merecen el mismo costo.


Cómo validar la salida Markdown

Un Markdown útil debe cumplir:

  • mantiene títulos;
  • conserva tablas;
  • respeta orden de lectura;
  • no mezcla encabezados con cuerpo;
  • no pierde montos;
  • no corta páginas;
  • identifica anexos;
  • no duplica texto;
  • no inventa contenido;
  • permite citar secciones.

Revisa manualmente una muestra.

No proceses 10,000 PDFs sin evaluar 20 primero.


Cómo convertir Markdown en chunks para RAG

Una vez que tienes Markdown limpio, puedes dividirlo.

Regla simple:

chunk por sección, no por número fijo de caracteres.

Mala división:

cada 1,000 caracteres

Mejor división:

por título, subtítulo, cláusula o tabla

Así la IA recupera fragmentos con sentido.


Naming profesional de archivos

No uses:

documento final escaneado nuevo ultimo 2.pdf

Usa:

2026-05-20_contrato_servicios_empresa-a_empresa-b.pdf

Para salidas:

2026-05-20_contrato_servicios_empresa-a_empresa-b.md
2026-05-20_contrato_servicios_empresa-a_empresa-b.json
2026-05-20_contrato_servicios_empresa-a_empresa-b_evidence.json

La automatización empieza con nombres sanos.


Evidencia: lo que casi nadie guarda

Una tubería profesional debe guardar evidencia.

Ejemplo:

{
  "archivo_original": "contrato.pdf",
  "hash_sha256": "abc123...",
  "herramienta": "docling",
  "version_herramienta": "x.y.z",
  "fecha_procesamiento": "2026-06-01",
  "salida_markdown": "output/markdown/contrato.md",
  "salida_json": "output/json/contrato.json",
  "paginas": 12,
  "requiere_revision": true,
  "motivo_revision": "tabla de penalidades detectada"
}

Esto permite responder:

de dónde salió el dato;
cuándo se procesó;
con qué herramienta;
si requiere revisión.

Sin evidencia, la automatización documental se vuelve frágil.


Script para generar hash del documento

Crea:

nano scripts/hash_files.py

Código:

from pathlib import Path
import hashlib

def sha256_file(path: Path) -> str:
    h = hashlib.sha256()
    with path.open("rb") as f:
        for chunk in iter(lambda: f.read(8192), b""):
            h.update(chunk)
    return h.hexdigest()

for file in Path("input").glob("*"):
    if file.is_file():
        print(file.name, sha256_file(file))

Ejecuta:

python scripts/hash_files.py

Ese hash te ayuda a demostrar que el archivo no cambió.


Flujo para n8n

Una vez tengas Markdown y JSON, n8n puede hacer el resto.

Flujo posible:

Carpeta nueva / Webhook
→ leer archivo
→ convertir con Docling o Marker
→ validar JSON
→ si faltan campos, enviar alerta
→ si está completo, guardar en Sheets o base de datos
→ crear tarea de revisión
→ generar resumen ejecutivo
→ archivar evidencia

Lo importante es separar:

extracción
validación
decisión
almacenamiento

No mezcles todo en un solo prompt.


Mini pipeline recomendado

Para empezar, usa esta secuencia:

1. Guardar PDF en input.
2. Calcular hash.
3. Detectar si tiene texto.
4. Clasificar tipo de documento.
5. Convertir a Markdown.
6. Revisar muestra manual.
7. Extraer JSON con contrato.
8. Validar campos.
9. Guardar evidencia.
10. Automatizar solo si pasa validación.

Esta secuencia evita el error típico: confiar en una extracción sin revisión.


Ejemplo de prompt para extraer JSON desde Markdown

Actúa como extractor documental.

Usa el Markdown proporcionado para generar un JSON según el contrato.

Reglas:
- No inventes datos.
- Si un dato no aparece, usa null.
- Agrega campos faltantes en "campos_faltantes".
- Agrega contradicciones en "alertas".
- No agregues claves extra.
- Devuelve solo JSON válido.

Contrato:
[PEGAR JSON SCHEMA O ESTRUCTURA]

Markdown:
[PEGAR CONTENIDO]

Este prompt es simple, pero poderoso si el Markdown está bien convertido.


Cuándo NO automatizar completamente

No automatices sin revisión si el documento:

  • tiene efectos legales;
  • contiene datos personales sensibles;
  • tiene tablas financieras críticas;
  • viene escaneado con mala calidad;
  • incluye firmas o sellos relevantes;
  • será usado para una decisión administrativa;
  • contiene montos, plazos o penalidades;
  • alimentará un sistema productivo;
  • tiene contradicciones internas.

La automatización documental debe ser proporcional al riesgo.


Caso práctico: contratos

Flujo recomendado:

contrato.pdf
→ hash
→ conversión a Markdown
→ extracción de partes, monto, plazo, penalidades
→ JSON validado
→ revisión humana de campos críticos
→ registro en Excel o base de datos

Campos críticos:

  • partes;
  • objeto;
  • monto;
  • moneda;
  • plazo;
  • penalidades;
  • forma de pago;
  • resolución;
  • jurisdicción;
  • anexos.

Nunca aceptes montos y plazos sin revisión en documentos legales.


Caso práctico: informes técnicos

Flujo recomendado:

informe.pdf
→ Markdown
→ extracción de resumen, hallazgos, recomendaciones
→ tabla de acciones
→ responsable sugerido
→ evidencia

Campos útiles:

{
  "titulo": "string",
  "fecha": "YYYY-MM-DD | null",
  "hallazgos": ["string"],
  "recomendaciones": ["string"],
  "riesgos": ["string"],
  "acciones": [
    {
      "accion": "string",
      "responsable": "string | null",
      "prioridad": "baja | media | alta"
    }
  ]
}

Caso práctico: cotizaciones

Flujo recomendado:

cotizacion.pdf
→ OCR si es imagen
→ extracción de proveedor, RUC, items, montos
→ validación de suma
→ alerta si el total no coincide
→ carga en Excel

Campos críticos:

  • proveedor;
  • RUC;
  • fecha;
  • moneda;
  • subtotal;
  • IGV;
  • total;
  • items;
  • vigencia;
  • forma de pago.

Aquí la validación matemática es obligatoria.


Checklist de calidad documental

Revisión Estado
Documento clasificado
Hash generado
Tipo PDF detectado
Ruta local/cloud decidida
Markdown generado
Tablas revisadas
JSON extraído
Campos faltantes listados
Alertas registradas
Evidencia guardada
Revisión humana aplicada
Salida lista para Excel/n8n

Errores comunes

Error 1: creer que OCR es suficiente

OCR reconoce texto. No siempre entiende estructura.

Error 2: subir todo a una IA externa

Primero clasifica privacidad y sensibilidad.

Error 3: no guardar evidencia

Después no sabrás de dónde salió el dato.

Error 4: no validar tablas

Las tablas son donde más se pierden montos, columnas y relaciones.

Error 5: automatizar documentos críticos sin revisión

Legal, financiero y administrativo necesitan control humano.

Error 6: cortar chunks por tamaño fijo

Para RAG documental, divide por secciones y sentido.


Buenas prácticas

  1. Clasifica documentos antes de procesar.
  2. Usa local para información sensible.
  3. Usa cloud solo cuando el valor justifique el riesgo.
  4. Genera Markdown y JSON.
  5. Diseña contratos de extracción.
  6. Valida campos críticos.
  7. Guarda hash y evidencia.
  8. Revisa muestras antes de procesar lotes.
  9. Divide chunks por estructura.
  10. Automatiza solo después de validar.

Prompt experto para diseñar tu pipeline documental

Actúa como arquitecto experto en Document Intelligence, OCR, RAG y automatización.

Quiero diseñar un pipeline para convertir documentos en datos útiles.

Contexto:
- Tipo de documentos:
- Volumen mensual:
- Nivel de sensibilidad:
- Salida deseada: Markdown / JSON / Excel / n8n / base de datos
- Campos a extraer:
- Herramientas disponibles:
- Restricciones de privacidad:
- Necesidad de revisión humana:

Entrega:
1. clasificación de documentos;
2. ruta local, cloud o híbrida;
3. herramientas recomendadas;
4. estructura de carpetas;
5. contrato JSON de extracción;
6. validaciones necesarias;
7. evidencia que debe guardarse;
8. flujo para automatización;
9. riesgos y controles.

Plan de implementación en 7 días

Día 1: inventario

Reúne 20 documentos reales y clasifícalos por tipo.

Día 2: entorno

Instala Python, Docling, Marker y PyMuPDF.

Día 3: conversión

Convierte documentos a Markdown y revisa calidad.

Día 4: contrato

Diseña JSON Schema por tipo documental.

Día 5: extracción

Extrae JSON desde Markdown y registra faltantes.

Día 6: validación

Revisa montos, fechas, campos críticos y tablas.

Día 7: automatización

Conecta salidas a Excel, n8n o base de datos.


Idea clave

El futuro de la IA documental no consiste en subir PDFs a un chatbot y esperar una respuesta bonita. Consiste en construir una tubería: clasificar documentos, convertirlos a Markdown, extraer JSON, validar campos críticos, guardar evidencia y recién entonces automatizar. Cuando haces eso, los documentos dejan de ser archivos muertos y se convierten en datos listos para decisiones, reportes, RAG, Excel y flujos reales.

Etiquetas: #document-intelligence #docling #marker #mistral-ocr #pdf-a-markdown #ocr-con-ia #rag #automatizacion-documental #json-schema #n8n #excel #ia-aplicada