Skip to content
BotServBotServ
Análisis de documentosOCRResumenClasificaciónMetadatos

Análisis de documentos con IA local

Analiza documentos con IA local. Extracción de texto, resúmenes, metadatos, clasificación y casos prácticos.

S

schutzgeist

5 min read
Análisis de documentos con IA local

Análisis de documentos con IA local

Qué cubre este artículo sobre análisis de documentos

  • Cómo analizar documentos con IA local.
  • Cómo funcionan la extracción de texto, resumen y extracción de metadatos.
  • Cómo clasificar y etiquetar documentos de forma automática.
  • Ejemplos prácticos con facturas, contratos, reportes y correspondencia.
  • Mejores prácticas para precisión, privacidad y rendimiento.

Introducción: Análisis de documentos explicado

El análisis de documentos significa que la IA lee un documento y comprende su contenido. Puede resumir, clasificar, extraer metadatos y responder preguntas. Con Ollama en local, todos tus documentos permanecen privados.

Este artículo está dirigido a usuarios que desean analizar documentos con IA. Los conceptos básicos los encontrarás en Documentos y PDF y Ollama.

Por qué necesito análisis de documentos

Imagina que tienes 500 PDFs: facturas, contratos, reportes. En lugar de leer cada uno manualmente, la IA analiza: “Esta es una factura de la empresa X por 1.234 €, vencimiento 15.03. Riesgo: Sin condiciones de pago especificadas.” La IA convierte documentos desestructurados en datos estructurados.

Análisis de documentos en resumen

Documento → Extraer texto (OCR si es necesario) → IA analiza → Datos estructurados (categoría, etiquetas, resumen, metadatos). Todo en local con Ollama.

La idea central es transformar texto desestructurado en datos estructurados.

Para quién es este artículo

  • Trabajadores de oficina que necesitan procesar documentos automáticamente.
  • Empresas que analizan facturas y contratos.
  • Desarrolladores que construyen pipelines de documentos.
  • Self-hosters que ejecutan análisis de documentos en local.

Términos importantes

  • Ollama - Servidor de modelos local. Cuándo es útil: el backend de IA.
  • OCR - Texto extraído de imágenes. Cuándo es útil: para documentos escaneados.
  • Clasificación - Categorizar documentos. Cuándo es útil: para organización.
  • Metadatos - Datos estructurados. Cuándo es útil: para bases de datos.
  • RAG - Preguntas y respuestas sobre documentos. Cuándo es útil: para consultas.
  • Modelos de visión - Para imágenes. Cuándo es útil: para escaneos.

El pipeline

Documento (PDF/Word/Imagen)
    │
    ▼
Extracción de texto
    ├─ ¿Texto presente? → Usar directamente
    └─ ¿Sin texto? → OCR (Tesseract/Modelo de visión)
    │
    ▼
Análisis con IA (Ollama)
    ├─ Clasificar: ¿Factura? ¿Contrato? ¿Reporte?
    ├─ Generar etiquetas: Temas, categorías
    ├─ Resumir: Contenido clave
    └─ Metadatos: Fecha, remitente, monto, ...
    │
    ▼
Datos estructurados
    ├─ Guardar en base de datos
    ├─ Mover a carpeta
    └─ Exportar como JSON

Ejemplo práctico 1: Analizar facturas

import requests
import json

def analyze_invoice(text):
    """Analizar factura"""
    response = requests.post("http://ollama:11434/api/chat", json={
        "model": "llama3.1",
        "messages": [
            {"role": "system", "content": "Extrae datos de factura como JSON: numero_factura, fecha, monto, moneda, remitente, fecha_vencimiento, items (array)."},
            {"role": "user", "content": f"Factura:\n{text[:4000]}"}
        ],
        "stream": False,
        "format": "json"
    })
    return json.loads(response.json()["message"]["content"])

# Ejemplo
invoice_data = analyze_invoice(invoice_text)
# Output: {"numero_factura": "RE-2024-1234", "monto": 1234.56, "moneda": "EUR", ...}

Ejemplo práctico 2: Analizar contratos

def analyze_contract(text):
    """Analizar contrato"""
    response = requests.post("http://ollama:11434/api/chat", json={
        "model": "llama3.1",
        "messages": [
            {"role": "system", "content": "Analiza el contrato como JSON: tipo_contrato, contraparte, duracion, plazo_cancelacion, clausulas (array), riesgos (array)."},
            {"role": "user", "content": f"Contrato:\n{text[:6000]}"}
        ],
        "stream": False,
        "format": "json"
    })
    return json.loads(response.json()["message"]["content"])

Ejemplo práctico 3: Clasificar documentos

def classify_document(text):
    """Clasificar documento"""
    categories = [
        "factura", "contrato", "reporte", "correspondencia",
        "acta", "manual", "otro"
    ]

    response = requests.post("http://ollama:11434/api/chat", json={
        "model": "llama3.1",
        "messages": [
            {"role": "system", "content": f"Clasifica el documento en una de estas categorías: {', '.join(categories)}. Responde solo con la categoría."},
            {"role": "user", "content": f"Documento:\n{text[:2000]}"}
        ],
        "stream": False
    })
    return response.json()["message"]["content"].strip().lower()

Ejemplo práctico 4: Generar etiquetas

def generate_tags(text, max_tags=5):
    """Generar etiquetas para documento"""
    response = requests.post("http://ollama:11434/api/chat", json={
        "model": "llama3.1",
        "messages": [
            {"role": "system", "content": f"Asigna {max_tags} etiquetas relevantes para el documento. Responde como array JSON."},
            {"role": "user", "content": f"Documento:\n{text[:2000]}"}
        ],
        "stream": False,
        "format": "json"
    })
    return json.loads(response.json()["message"]["content"])

Ejemplo práctico 5: Pipeline completo

import os
from pathlib import Path

def process_document(filepath):
    """Análisis completo de documento"""
    # 1. Extraer texto
    text = extract_text(filepath)  # PDF, DOCX, TXT

    # 2. Clasificar
    category = classify_document(text)

    # 3. Generar etiquetas
    tags = generate_tags(text)

    # 4. Resumir
    summary = summarize(text)

    # 5. Extraer metadatos
    metadata = extract_metadata(text)

    # 6. Guardar
    result = {
        "file": filepath,
        "category": category,
        "tags": tags,
        "summary": summary,
        "metadata": metadata
    }

    save_to_database(result)
    move_to_folder(filepath, category)

    return result

Consideraciones de seguridad

  • Documentos confidenciales: Todos los datos permanecen en local con Ollama. Con APIs en la nube, los documentos se envían afuera. Ver Privacidad.
  • Inyección de prompts: Los documentos pueden contener inyecciones. Ver Inyección de prompts.
  • Errores de OCR: Los documentos escaneados tienen errores de OCR. Los resultados de la IA pueden ser incorrectos como consecuencia.
  • Validación: Las extracciones de IA deben validarse para datos críticos.

Trampas comunes

  • Errores de OCR: Escaneos de baja calidad resultan en mala extracción. La calidad es importante.
  • Longitud de contexto: Los documentos grandes deben dividirse en chunks. Ver Longitud de contexto.
  • Clasificación incorrecta: La IA puede clasificar mal. Para documentos críticos, requiere revisión humana.
  • Demasiadas etiquetas: Más de 5-7 etiquetas no son prácticas. Establece límites.
  • Rendimiento: Documentos grandes con muchas llamadas a IA resultan lentos. Procesa de forma asincrónica.

Enlaces relacionados

Puntos clave:

  • Análisis de documentos: extraer texto → IA analiza → datos estructurados.
  • Clasificación, etiquetas, resumen, metadatos, todo automático.
  • Para facturas, contratos, reportes y correspondencia.
  • En local con Ollama: todos los datos permanecen privados.
  • Ten en cuenta errores de OCR e inyección de prompts.

FAQ

¿Qué es análisis de documentos con IA?

La IA lee un documento y comprende su contenido: clasificación, etiquetas, resumen, extracción de metadatos. El texto desestructurado se convierte en datos estructurados.

¿Qué formatos se soportan?

PDF (con capa de texto), Word, Texto. Para PDFs escaneados e imágenes, primero OCR (Tesseract o modelo de visión).

¿Qué tan preciso es el análisis?

Muy bueno para documentos estándar. Para documentos inusuales o baja calidad de OCR, la IA puede cometer errores. Para datos críticos, requiere revisión humana.

¿Mis documentos están seguros?

Sí, si usas Ollama en local. Todos los documentos permanecen en tu máquina. Con APIs en la nube, los documentos se envían afuera. Para documentos confidenciales, usa IA local.

¿Cuál es el costo?

Gratuito. Ollama es Open Source. Solo pagas por la hardware. Sin costos de API por documento.

¿Puedo analizar muchos documentos a la vez?

Sí, con un pipeline: leer documentos → extraer texto → IA analiza → guardar resultados. Para muchos documentos, procesa de forma asincrónica.

Fuentes y lecturas recomendadas

Volver al blog
Share:

Entradas relacionadas