Ejemplos prácticos de Docling

Recetas breves orientadas a tareas con comando CLI, equivalente en Python, salida esperada y el error común. Cada receta enlaza la fuente oficial.

PDF a Markdown

PDF y conversión

Markdown limpio y legible de cualquier PDF digital.

Cuándo usarlo: Cuando necesitas Markdown limpio y legible de un PDF digital o mixto.

CLI

docling convert report.pdf --to md

Python

from docling.document_converter import DocumentConverter

converter = DocumentConverter()
result = converter.convert("report.pdf")
print(result.document.export_to_markdown())

Opciones usadas

  • --to md Selecciona la salida en Markdown.

Salida esperada

# Annual Report

## Revenue

| Year | Revenue |
|---|---:|
| 2025 | $12M |
| 2026 | $15M |

Variantes

Omitir OCR para mayor velocidad

docling convert report.pdf --to md --no-ocr

Error común: Procesar un PDF escaneado y obtener texto vacío. Si el PDF no tiene capa de texto, usa OCR (--ocr-mode full_page).

Documentación oficial · PDF a JSON

PDF a JSON

PDF y conversión

La estructura completa de DoclingDocument para pipelines propios.

Cuándo usarlo: Cuando necesitas la estructura sin pérdidas de DoclingDocument, incluidas bounding boxes y metadatos de diseño.

CLI

docling convert report.pdf --to json

Python

import json
from docling.document_converter import DocumentConverter

converter = DocumentConverter()
result = converter.convert("report.pdf")
print(json.dumps(result.document.export_to_dict(), indent=2))

Opciones usadas

  • --to json Exporta la representación JSON sin pérdidas.

Salida esperada

{
  "schema_name": "DoclingDocument",
  "texts": [ ... ],
  "tables": [ ... ]
}

Variantes

Omitir OCR para mayor velocidad

docling convert report.pdf --to json --no-ocr

Error común: Esperar que el JSON de la CLI y export_to_dict() sean idénticos byte a byte; son representaciones equivalentes del mismo documento.

Documentación oficial · PDF a Markdown

URL a Markdown

PDF y conversión

Convierte un documento directamente desde una URL HTTP.

Cuándo usarlo: Cuando el documento está en línea y no quieres descargarlo primero.

CLI

docling convert https://arxiv.org/pdf/2408.09869 --to md

Python

from docling.document_converter import DocumentConverter

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

Salida esperada

## Docling Technical Report

...

Variantes

Exportar JSON en su lugar

docling convert https://arxiv.org/pdf/2408.09869 --to json

Error común: Suponer que cualquier URL funciona. La fuente debe ser un formato de documento compatible accesible por HTTP.

Documentación oficial · Formatos compatibles

PDF escaneado con OCR

OCR y escaneos

Recupera texto de páginas que solo son imágenes.

Cuándo usarlo: Cuando las páginas son imágenes y no contienen texto seleccionable.

CLI

docling convert scan.pdf --ocr-mode full_page

Python

from docling.document_converter import DocumentConverter, PdfFormatOption
from docling.datamodel.base_models import InputFormat
from docling.datamodel.pipeline_options import PdfPipelineOptions

pipeline_options = PdfPipelineOptions()
pipeline_options.do_ocr = True

converter = DocumentConverter(
    format_options={InputFormat.PDF: PdfFormatOption(pipeline_options=pipeline_options)}
)
result = converter.convert("scan.pdf")
print(result.document.export_to_markdown())

Opciones usadas

  • --ocr-mode full_page Aplica OCR a todas las páginas, incluso con texto.

Salida esperada

Text reconstructed from the scanned page image.

Variantes

Elegir otro motor

docling convert scan.pdf --ocr-mode full_page --ocr-engine rapidocr

Error común: Dejar el OCR activado en PDF digitales desperdicia tiempo. Actívalo solo cuando falte la capa de texto.

Documentación oficial · Comparar motores OCR

Desactivar OCR para PDF digitales

OCR y escaneos

Conversión mucho más rápida para PDF digitales.

Cuándo usarlo: Cuando el PDF ya tiene capa de texto y quieres la conversión más rápida.

CLI

docling convert report.pdf --no-ocr --to md

Python

from docling.document_converter import DocumentConverter, PdfFormatOption
from docling.datamodel.base_models import InputFormat
from docling.datamodel.pipeline_options import PdfPipelineOptions

pipeline_options = PdfPipelineOptions()
pipeline_options.do_ocr = False

converter = DocumentConverter(
    format_options={InputFormat.PDF: PdfFormatOption(pipeline_options=pipeline_options)}
)
result = converter.convert("report.pdf")
print(result.document.export_to_markdown())

Opciones usadas

  • --no-ocr Omite por completo la etapa de OCR.

Salida esperada

Markdown produced without running OCR.

Variantes

También tablas rápidas

docling convert report.pdf --no-ocr --table-mode fast

Error común: Desactivar el OCR en un PDF escaneado da poco o ningún texto.

Documentación oficial · Todos los comandos

Extraer tablas

Tablas

Convierte tablas en matrices Markdown o HTML.

Cuándo usarlo: Cuando el documento contiene tablas que quieres como matrices Markdown o HTML.

CLI

docling convert report.pdf --to md

Python

from docling.document_converter import DocumentConverter, PdfFormatOption
from docling.datamodel.base_models import InputFormat
from docling.datamodel.pipeline_options import PdfPipelineOptions

pipeline_options = PdfPipelineOptions()
pipeline_options.do_table_structure = True

converter = DocumentConverter(
    format_options={InputFormat.PDF: PdfFormatOption(pipeline_options=pipeline_options)}
)
result = converter.convert("report.pdf")
print(result.document.export_to_markdown())

Opciones usadas

  • --table-mode accurate Usa TableFormer para tablas complejas con celdas combinadas.

Salida esperada

| Region | Q1 | Q2 |
|---|---:|---:|
| EMEA | 4.2 | 4.8 |

Variantes

Tablas rápidas y aproximadas

docling convert report.pdf --to md --table-mode fast

Error común: Suponer que toda tabla es perfecta. Las celdas combinadas y las tablas sin bordes pueden requerir revisión; prueba --table-mode accurate.

Documentación oficial · Crear un comando

Extraer fórmulas y código

Fórmulas y código

Captura ecuaciones y bloques de código como LaTeX.

Cuándo usarlo: Para documentos científicos o técnicos con ecuaciones o bloques de código.

CLI

docling convert paper.pdf --enrich-code --enrich-formula

Python

from docling.document_converter import DocumentConverter, PdfFormatOption
from docling.datamodel.base_models import InputFormat
from docling.datamodel.pipeline_options import PdfPipelineOptions

pipeline_options = PdfPipelineOptions()
pipeline_options.do_code_enrichment = True
pipeline_options.do_formula_enrichment = True

converter = DocumentConverter(
    format_options={InputFormat.PDF: PdfFormatOption(pipeline_options=pipeline_options)}
)
result = converter.convert("paper.pdf")
print(result.document.export_to_markdown())

Opciones usadas

  • --enrich-code Detecta bloques de código.
  • --enrich-formula Extrae fórmulas LaTeX.

Salida esperada

$$ E = mc^2 $$

Variantes

Añadir extracción de gráficos

docling convert paper.pdf --enrich-code --enrich-formula --enrich-chart-extraction

Error común: Activar el enriquecimiento en documentos sin fórmulas ni código añade tiempo de proceso sin beneficio.

Documentación oficial · Crear un comando

Chunking RAG con HybridChunker

RAG

Chunks conscientes de la estructura para una base vectorial.

Cuándo usarlo: Cuando quieres chunks que conserven títulos, tablas y metadatos de página para una base vectorial.

CLI

docling convert report.pdf --to chunks --chunks-type hybrid

Python

from docling.document_converter import DocumentConverter
from docling.chunking import HybridChunker

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

chunker = HybridChunker()
for chunk in chunker.chunk(result.document):
    print(chunk.text)

Opciones usadas

  • --to chunks Emite salida fragmentada.
  • --chunks-type hybrid Usa HybridChunker.

Salida esperada

Chunks split on document structure rather than raw character counts.

Variantes

Inspeccionar la exportación sin procesar

docling convert report.pdf --to json

Error común: Usar un divisor de caracteres ingenuo en lugar de chunking consciente de la estructura, que rompe tablas y títulos.

Documentación oficial · Guía de RAG

Integración con LangChain

Integraciones

Carga documentos analizados en un pipeline de LangChain.

Cuándo usarlo: Cuando cargas documentos analizados en una pipeline de LangChain.

CLI

pip install langchain-docling

Python

from langchain_docling import DoclingLoader

loader = DoclingLoader(file_path="report.pdf")
docs = loader.load()
print(docs[0].page_content[:200])

Salida esperada

LangChain Document objects with parsed page content and metadata.

Variantes

Luego convertir un archivo

docling convert report.pdf --to md

Error común: Olvidar instalar el paquete de integración por separado de docling.

Documentación oficial · Receta de LlamaIndex

Integración con LlamaIndex

Integraciones

Crea nodos de LlamaIndex a partir de archivos analizados.

Cuándo usarlo: Cuando construyes nodos de documento de LlamaIndex a partir de archivos analizados.

CLI

pip install llama-index-readers-docling

Python

from llama_index.readers.docling import DoclingReader

reader = DoclingReader()
documents = reader.load_data(file_path="report.pdf")
print(documents[0].text[:200])

Salida esperada

LlamaIndex documents ready for indexing.

Variantes

Luego convertir un archivo

docling convert report.pdf --to md

Error común: Mezclar versiones de docling y del paquete reader; mantén ambos actualizados.

Documentación oficial · Receta de LangChain

1
Paso 1

Cómo usar estos ejemplos

Diez recetas listas para copiar para las tareas más comunes de Docling. Cada una incluye un comando CLI, el equivalente en Python, los flags que usa, la salida esperada y el error que debes evitar.

Recorre cada receta de arriba hacia abajo.

  1. Encuentra tu tarea Filtra por categoría o busca un flag o palabra clave.
  2. Copia el comando Usa el botón Copiar del bloque CLI o copia el equivalente en Python.
  3. Ejecútalo Los comandos escriben el archivo convertido junto al original de forma predeterminada.
  4. Revisa la salida Compárala con la salida esperada que muestra la receta.
  5. Adáptalo Añade flags de la receta o crea un comando propio en el generador.
2
Paso 2

Antes de empezar

Todos los ejemplos suponen que Docling está instalado y que tienes un documento de muestra.

  • Se requiere Python 3.10 o posterior.
  • Los ejemplos de OCR necesitan un motor OCR; RapidOCR es una buena opción para CPU.
  • Los ejemplos de integración instalan un paquete aparte.
pip install docling
docling --help
3
Paso 3

¿Qué ejemplo debería usar?

Elige la fila que más se acerque a tu tarea.

Quiero…EjemploOpción clave
Obtener texto legiblePDF a Markdown--to md
Obtener datos estructuradosPDF a JSON--to json
Convertir una URLURL a Markdownargumento URL
Leer un escaneo o fotoPDF escaneado con OCR--ocr-mode full_page
Acelerar PDF digitalesDesactivar OCR--no-ocr
Extraer tablasExtraer tablas--table-mode
Obtener fórmulas y códigoExtraer fórmulas y código--enrich-*
Fragmentar para RAGFragmentación RAG--to chunks
Usar LangChainIntegración con LangChainpaquete de integración
Usar LlamaIndexIntegración con LlamaIndexpaquete de integración
4
Paso 4

Cómo adaptar una receta

Adapta cualquier receta con pequeños cambios.

  • Cambia el nombre del archivo o la URL por tu fuente.
  • Añade --no-ocr para PDF digitales y --ocr-mode full_page para escaneos.
  • Cambia la salida con --to md, --to json, --to html o --to doctags.
  • Añade --device cuda y --num-threads para lotes grandes.
  • Crea el comando completo en el generador de configuración.
5
Paso 5

¿CLI o Python?

Usa la CLI para conversiones puntuales y la API de Python cuando necesites posprocesar el documento, procesar muchos archivos o integrarte con otra biblioteca.

  • CLI: rápido, scriptable y sin código.
  • Python: acceso total a DoclingDocument, chunks y opciones del pipeline.
6
Paso 6

Sigue explorando

Herramientas y referencias relacionadas.

7
Paso 7

Preguntas frecuentes

¿Estos ejemplos funcionan tal cual?
Sí, una vez instalado Docling. Sustituye el nombre de archivo de ejemplo (report.pdf, scan.pdf, paper.pdf) por el tuyo.
¿Dónde se guarda el archivo convertido?
Junto al archivo original de forma predeterminada, con una extensión acorde al formato de salida.
¿Puedo procesar varios archivos a la vez?
Sí. Pasa varias rutas a la CLI o recorre los archivos con un bucle en Python.
¿Cómo elijo entre CLI y Python?
Usa la CLI para conversiones rápidas y Python cuando necesites procesar el resultado de forma programática.
¿Por qué mi PDF escaneado sale vacío?
No tiene capa de texto. Usa la receta de OCR con --ocr-mode full_page.
¿Cómo obtengo chunks para una base vectorial?
Usa la receta de fragmentación RAG y pasa los chunks a tu base vectorial. Consulta la guía de RAG.