Inicio / Docs / Manual Técnico

Documentación Técnica Completa de Docling

Resumen Rápido (TL;DR)
  • Docling es un motor 100% gratuito (MIT) que procesa PDFs, DOCX, PPTX, XLSX, imágenes escaneadas y audio en Markdown, HTML y JSON estructurados.
  • Incluye análisis visual de diseño, recuperación del orden de lectura y el modelo TableFormer v2 para tablas complejas.
  • Soporta OCR multilingüe mediante RapidOCR, Tesseract (tesserocr), EasyOCR y OcrMac.
  • Se ejecuta 100% en local con cero telemetría, compatible con servidores aislados (air-gapped), API REST (docling-serve) y servidor MCP (docling-mcp).

1. Visión General y Arquitectura

Docling es un motor de código abierto para la conversión de documentos desarrollado por IBM Research y alojado en LF AI & Data. A diferencia de extractores básicos de texto, Docling procesa documentos mediante pipelines modulares que analizan la geometría de la página, detectan cuadros delimitadores (bounding boxes), extraen tablas fusionadas y ordenan el flujo de lectura para LLMs y RAG.

2. Instalación y Configuración del Entorno

Docling se instala en Python 3.9 a 3.14 (64 bits) en Windows, macOS y Linux mediante pip o uv:

bash — instalación estándar
$pip install docling

2.1 Configuración en Windows 10/11 y Microsoft Visual C++

En Windows se requiere Python de 64 bits. Al compilar extensiones de C++ como tesserocr, es necesario contar con Microsoft Visual C++ 14.0+:

Instalación de Visual C++ Build Tools
Ejecute en PowerShell como Administrador:
PS>winget install Microsoft.VisualStudio.2022.BuildTools --override "--passive --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended"

Alternativa recomendada (Sin compilador C++): Utilice Astral uv para instalar binarios precompilados:

powershell — astral uv
PS>uv add docling

3. Guía de Inicio Rápido

python — conversión básica
from docling.document_converter import DocumentConverter

converter = DocumentConverter()
result = converter.convert("https://arxiv.org/pdf/2408.09869")
print(result.document.export_to_markdown()[:500])
              

4. El Modelo de Representación DoclingDocument

El modelo principal DoclingDocument mantiene un árbol orientado a objetos de secciones, tablas, fragmentos de código y figuras con coordenadas espaciales exactas, exportable mediante result.document.export_to_json().

5. Pipelines de Procesamiento y Granite Docling VLM

5.1 Configuración de Granite Docling VLM

python — granite docling vlm
from docling.datamodel.base_models import InputFormat
from docling.datamodel.pipeline_options import VlmPipelineOptions
from docling.document_converter import DocumentConverter, PdfFormatOption

vlm_options = VlmPipelineOptions()
vlm_options.vlm_model = "granite_docling"

converter = DocumentConverter(
    format_options={InputFormat.PDF: PdfFormatOption(pipeline_options=vlm_options)}
)
result = converter.convert("documento.pdf")
              

6. Motores OCR y Ajuste de Rendimiento

6.1 Desactivar OCR para PDFs Digitales (10x más rápido)

En documentos con capa de texto digital, desactive el OCR mediante pipeline_options.do_ocr = False para multiplicar la velocidad de procesamiento:

python — desactivar ocr
from docling.datamodel.base_models import InputFormat
from docling.datamodel.pipeline_options import PdfPipelineOptions
from docling.document_converter import DocumentConverter, PdfFormatOption

pipeline_options = PdfPipelineOptions()
pipeline_options.do_ocr = False  # 10x más rápido para PDFs digitales

converter = DocumentConverter(
    format_options={InputFormat.PDF: PdfFormatOption(pipeline_options=pipeline_options)}
)
result = converter.convert("informe.pdf")
              

7. Extracción Multiformato (Excel XLSX, PowerPoint PPTX, CAD y Audio)

Docling procesa hojas de cálculo multi-hoja de Excel (.xlsx), presentaciones de PowerPoint (.pptx) y diagramas técnicos con la misma API:

python — procesar excel y powerpoint
from docling.document_converter import DocumentConverter

converter = DocumentConverter()
excel_res = converter.convert("financiero.xlsx")
print(excel_res.document.export_to_markdown())
              

8. Segmentación RAG con `HybridChunker`

python — hybridchunker para RAG
from docling.document_converter import DocumentConverter
from docling.chunking import HybridChunker

converter = DocumentConverter()
result = converter.convert("articulo.pdf")

chunker = HybridChunker(max_tokens=512, merge_peers=True)
for chunk in chunker.chunk(result.document):
    print(chunk.meta.headings, chunk.text[:80])
              

9. Aceleración GPU y Procesamiento por Lotes

python — aceleración gpu
from docling.datamodel.accelerator_options import AcceleratorDevice, AcceleratorOptions
from docling.datamodel.pipeline_options import ThreadedPdfPipelineOptions

accel = AcceleratorOptions(device=AcceleratorDevice.CUDA)
pipe_opts = ThreadedPdfPipelineOptions(accelerator_options=accel, page_batch_size=8)
              

10. Integraciones con Frameworks (LangChain y LlamaIndex)

python — langchain docling
from langchain_docling import DoclingLoader

loader = DoclingLoader(file_path="informe.pdf")
docs = loader.load()
              

11. Catálogo de Modelos VLM

Modelo Proveedor Uso Principal Argumento CLI
granite_docling IBM Research Extracción visual de PDFs de alta precisión --vlm-model granite_docling
smoldocling Hugging Face / IBM VLM ligero y rápido para CPU --vlm-model smoldocling

12. Servidor FastAPI (`docling-serve`) y Servidor MCP

bash — docker docling-serve
$docker run -p 5001:5001 ghcr.io/docling-project/docling-serve:latest

12.1 Integración MCP para Claude Desktop

json — claude_desktop_config.json
{
  "mcpServers": {
    "docling": {
      "command": "uvx",
      "args": ["--from=docling-mcp", "docling-mcp-server"]
    }
  }
}
              

13. Seguridad Empresarial y Despliegue Air-Gapped

Docling funciona 100% en local sin telemetría. Para entornos sin conexión a internet:

bash — entorno air-gapped
export DOCLING_CACHE_DIR="/opt/docling_models"
docling-tools models download --all

export HF_HUB_OFFLINE=1
export DOCLING_CACHE_DIR="/opt/docling_models"
docling document.pdf --to md
              

14. Diagnóstico y Solución de Problemas

Error / Problema Causa Solución
cannot import name 'BoundingBox' Migración del esquema en Docling v2. Importe desde from docling_core.types.doc import BoundingBox.
RapidOCR text detection result empty Baja resolución de imagen en escaneo. Configure pipeline_options.images_scale = 2.0 para aumentar DPI.
Verificar versión instalada Comprobación de CLI / Python. Ejecute docling --version en la terminal.

15. Referencia Completa de Parámetros CLI

Parámetro Tipo Valor por Defecto Descripción
--to md, json, html, doctags md Formato de exportación del documento.
--no-ocr Bandera Booleana - Desactiva el OCR para acelerar la conversión de PDFs digitales.
--version Bandera - Muestra la versión de Docling instalada.