Solución de problemas de Docling

Una lista curada de problemas comunes de Docling con solución rápida, solución recomendada y fuente oficial. Solo se incluyen problemas reproducibles.

La instalación falla en Windows

Instalación

error: Microsoft Visual C++ 14.0 or greater is required / Failed building wheel for docling-parse

Por qué ocurre: Algunas dependencias opcionales compilan extensiones nativas de C++ o Rust y necesitan un compilador que no está por defecto.

Solución rápida: Instala con Astral uv en lugar de pip para usar ruedas precompiladas: uv add docling.

Solución recomendada: Si necesitas pip, instala las Microsoft Visual C++ Build Tools (14.0+) y un Python de 64 bits y vuelve a intentarlo. En un sistema o Python no compatibles, usa una combinación admitida (Python 3.10-3.12) o un contenedor.

uv add docling

Cuándo no aplica: Si no existe una rueda para tu sistema y Python, puede seguir siendo necesario el compilador.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Guía de instalación

Se requiere Microsoft Visual C++ 14.0

Instalación

Microsoft Visual C++ 14.0 is required. Get it with Microsoft C++ Build Tools

Por qué ocurre: pip intenta compilar una extensión nativa desde el código fuente y no encuentra la cadena de herramientas de MSVC.

Solución rápida: Prefiere uv, que resuelve ruedas precompiladas y evita el compilador por completo.

Solución recomendada: Si no, instala las Build Tools con la carga de trabajo Desarrollo de escritorio con C++: winget install Microsoft.VisualStudio.2022.BuildTools.

winget install Microsoft.VisualStudio.2022.BuildTools

Cuándo no aplica: Aplica sobre todo a extras como tesserocr o fasttext; el paquete principal suele traer ruedas.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Guía de instalación

Versión de Python no compatible

Instalación

No matching distribution found for docling / Requires-Python >=3.10

Por qué ocurre: Docling requiere Python 3.10 o posterior; Python 3.9 y anteriores no son compatibles.

Solución rápida: Crea un entorno con Python 3.10+ y reinstala.

Solución recomendada: Usa un entorno virtual o uv: uv venv --python 3.12 y luego uv add docling.

uv venv --python 3.12

Cuándo no aplica: Las versiones muy nuevas de Python pueden tardar hasta que haya ruedas; consulta la matriz oficial.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Guía de instalación

No se puede compilar la rueda de docling-parse

Instalación

Failed building wheel for docling-parse / ERROR: Failed to build installable wheels for some pyproject.toml based projects

Por qué ocurre: No hay una rueda precompilada para tu plataforma o Python (por ejemplo macOS anterior a 13, Alpine/Termux, arquitecturas raras o un Python muy nuevo), así que pip intenta compilar desde el código fuente.

Solución rápida: Usa una plataforma y un Python admitidos (3.10-3.12) e instala con uv para obtener ruedas.

Solución recomendada: En macOS usa macOS 13+ (Apple Silicon); en Linux prefiere una distribución x86_64/arm64 común o el contenedor oficial. Fija una versión de docling con ruedas para tu plataforma o compila con una cadena de herramientas C++ completa.

uv venv --python 3.12 && uv add docling

Cuándo no aplica: Las arquitecturas de 32 bits, musl/Alpine sin dependencias de compilación y algunos sistemas ARM no son compatibles oficialmente.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Guía de instalación

ImportError: libGL.so.1 / falta cv2

Instalación

ImportError: libGL.so.1: cannot open shared object file: No such file or directory / ModuleNotFoundError: No module named 'cv2'

Por qué ocurre: opencv-python (con interfaz OpenGL) está instalado en un entorno sin pantalla como Docker o una máquina remota, o falta OpenCV por completo en un entorno nuevo.

Solución rápida: Fuerza la compilación headless de OpenCV.

Solución recomendada: pip uninstall -y opencv-python opencv-python-headless && pip install --no-cache-dir opencv-python-headless. Como alternativa, instala la biblioteca del sistema: apt-get install libgl1 (Debian) o dnf install mesa-libGL (RHEL).

pip uninstall -y opencv-python opencv-python-headless && pip install --no-cache-dir opencv-python-headless

Cuándo no aplica: Si necesitas ventanas de OpenCV, instala la libGL del sistema en lugar de cambiar a headless.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · FAQ oficial

Conflicto de dependencias con numpy (Python 3.13)

Instalación

version solving failed ... depends on numpy (>=2.0.2,<3.0.0) and docling requires numpy (>=1.26.4,<2.0.0)

Por qué ocurre: En Python 3.13 Docling necesita numpy 2.x, pero pins antiguos de LangChain u otros fuerzan numpy 1.x; el resolutor no puede satisfacer ambos.

Solución rápida: Excluye Python 3.13 del rango de Python de tu proyecto.

Solución recomendada: Define python = ">=3.10,<3.13" en pyproject.toml, o actualiza docling-ibm-models>=2.0.7 y deepsearch-glm>=0.26.2. Para necesidades mixtas, usa marcadores de numpy según la versión de Python.

python = ">=3.10,<3.13"

Cuándo no aplica: Algunos paquetes de terceros aún no tienen ruedas para Python 3.13.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · FAQ oficial

No hay rueda de PyTorch en macOS Intel

Instalación

Could not find a version that satisfies the requirement torch / no matching distribution found for torch

Por qué ocurre: PyTorch dejó de publicar ruedas para macOS x86_64 (Intel) después de 2.2.2, y 2.2.2 requiere numpy 1.x y Python 3.12 o inferior.

Solución rápida: Instala el extra mac_intel, que fija versiones compatibles.

Solución recomendada: pip install "docling[mac_intel]" (o uv add torch==2.2.2 torchvision==0.17.2 docling). Mantén numpy<2 y Python 3.12 o inferior.

pip install "docling[mac_intel]"

Cuándo no aplica: Apple Silicon es el estándar admitido; los Mac Intel necesitan este conjunto fijado.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Instalación en macOS

Error de certificado SSL al descargar modelos

Instalación

URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate>

Por qué ocurre: La lista de certificados de confianza del entorno de Python está desactualizada al descargar pesos desde Hugging Face.

Solución rápida: Actualiza certifi.

Solución recomendada: pip install --upgrade certifi. Si persiste, apunta SSL_CERT_FILE y REQUESTS_CA_BUNDLE a `python -m certifi`, o instala pip-system-certs.

pip install --upgrade certifi

Cuándo no aplica: Detrás de un proxy corporativo, configura también HTTPS_PROXY y tu CA raíz interna.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · FAQ oficial

No se encuentra el comando docling tras actualizar

Instalación

docling: command not found / Docling version: unknown

Por qué ocurre: Actualizar una instalación antigua puede dejar sin registrar el script de consola docling, porque el proyecto se dividió en docling y docling-slim.

Solución rápida: Reinstala el paquete que proporciona el comando.

Solución recomendada: pip install --force-reinstall docling (o pip install -U docling docling-slim), luego docling --version. En un entorno virtual, asegúrate de que bin/Scripts esté en el PATH.

pip install --force-reinstall docling

Cuándo no aplica: uv tool install docling puede fallar por lo mismo; usa docling-slim[standard].

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Guía de instalación

pip o docling no se reconocen en Windows

Instalación

'pip' is not recognized as an internal or external command

Por qué ocurre: Python embebido o una instalación predeterminada de Windows no añaden Python ni Scripts al PATH.

Solución rápida: Usa una instalación normal de Python y un entorno virtual en lugar de Python embebido.

Solución recomendada: Instala Python 3.12 desde python.org marcando 'Add python.exe to PATH', crea un venv (py -m venv .venv), actívalo y ejecuta pip install docling. Si falta pip: py -m ensurepip --upgrade.

py -m venv .venv && .venv\Scripts\activate

Cuándo no aplica: Python embebido no está pensado para scripts de consola instalados y no se recomienda para Docling.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Instalación en Windows

Problema al descargar modelos o con la caché

Modelos y caché

OSError / ConnectionError while downloading ds4sd/docling-models / a partial cache blocks later runs

Por qué ocurre: La primera conversión PDF descarga modelos de diseño, tablas y OCR; una descarga fallida o parcial deja una caché rota.

Solución rápida: Vuelve a ejecutar una vez con conexión o descarga los modelos por adelantado.

Solución recomendada: Descarga todos los modelos por adelantado con docling-tools models download --all y apunta DOCLING_CACHE_DIR a una ubicación escribible.

docling-tools models download --all

Cuándo no aplica: Las máquinas aisladas necesitan copiar antes la caché desde un equipo conectado.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Offline / air-gapped

Se ignoran los modelos offline (sigue contactando con Hugging Face)

Modelos y caché

Still tries to reach huggingface.co / FileNotFoundError: Missing .../model.safetensors

Por qué ocurre: La ruta de artefactos apunta al directorio equivocado o la estructura de carpetas no coincide con lo que espera Docling.

Solución rápida: Apunta Docling a la carpeta superior que contiene las subcarpetas de modelos.

Solución recomendada: Ejecuta docling-tools models download -o ./models y define artifacts_path="./models" (ruta absoluta en contenedores). La carpeta debe contener subcarpetas como ds4sd--docling-models con model.safetensors, config.json y preprocessor_config.json directamente dentro.

docling-tools models download -o ./models

Cuándo no aplica: Las variables de entorno no bastan para la API de Python; pasa artifacts_path explícitamente.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Offline / air-gapped

Los modelos se descargan en dos ubicaciones

Modelos y caché

Models appear in both ./models and ~/.cache/huggingface

Por qué ocurre: Las bibliotecas de Hugging Face mantienen su propia caché global además del directorio que le pasas a Docling.

Solución rápida: Define HF_HOME para que las descargas vayan a un solo directorio.

Solución recomendada: export HF_HOME=/your/cache (o HF_HUB_CACHE) antes de ejecutar y pasa la misma carpeta como artifacts_path.

export HF_HOME=./models-cache

Cuándo no aplica: Docling respeta tu ruta, pero las bibliotecas de Hugging Face siguen creando su propia caché.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Offline / air-gapped

403 o límite de tasa al descargar modelos

Modelos y caché

403 Client Error / rate limit exceeded / HTTPError while downloading model weights

Por qué ocurre: Repositorios con acceso restringido, límites de tasa o un proxy corporativo bloquean las descargas anónimas de Hugging Face.

Solución rápida: Autentícate con un token de Hugging Face.

Solución recomendada: export HF_TOKEN=your_token (o huggingface-cli login) y sube los tiempos de espera con HF_HUB_ETAG_TIMEOUT y HF_HUB_DOWNLOAD_TIMEOUT. Detrás de un proxy, define HTTPS_PROXY.

export HF_TOKEN=your_token

Cuándo no aplica: Algunos modelos exigen aceptar una licencia en Hugging Face antes de descargar.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Offline / air-gapped

Error de sistema de archivos de solo lectura en la caché

Modelos y caché

OSError: [Errno 30] Read-only file system: '/models/models--ds4sd--docling-models/snapshots/...'

Por qué ocurre: Hugging Face intenta crear entradas de caché o symlinks en un montaje de solo lectura al cargar modelos locales.

Solución rápida: Apunta la caché a una ruta escribible.

Solución recomendada: Define HF_HOME y HF_HUB_CACHE en un directorio escribible y HF_HUB_OFFLINE=1 una vez que todos los modelos estén presentes; monta el directorio de modelos como datos, no como caché de Hugging Face.

export HF_HUB_CACHE=/tmp/hf-cache

Cuándo no aplica: HF_HUB_OFFLINE=1 desactiva todo acceso de red; asegúrate de tener todos los modelos antes.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Offline / air-gapped

Error al instalar un paquete OCR

OCR

ModuleNotFoundError: No module named 'tesserocr' / OCR engine import fails

Por qué ocurre: Algunos motores OCR necesitan binarios del sistema (por ejemplo Tesseract) que pip no puede instalar.

Solución rápida: Usa RapidOCR o EasyOCR, que son solo Python y más fáciles de instalar.

Solución recomendada: pip install "docling[rapidocr]" o "docling[easyocr]". Para Tesseract, instala primero el binario del sistema (brew/apt/dnf) y luego el extra.

pip install "docling[rapidocr]"

Cuándo no aplica: Tesseract también necesita datos de idioma; define TESSDATA_PREFIX si faltan idiomas.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Comparar motores OCR

RapidOCR no está instalado

OCR

RapidOCR is not installed. Please install it via 'pip install rapidocr_onnxruntime' to use this OCR engine

Por qué ocurre: RapidOCR es un motor opcional y no forma parte de la instalación base.

Solución rápida: Instala el extra rapidocr.

Solución recomendada: pip install "docling[rapidocr]" (o pip install rapidocr onnxruntime).

pip install "docling[rapidocr]"

Cuándo no aplica: La aceleración por GPU de RapidOCR es limitada; por defecto usa CPU.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Comparar motores OCR

Tesseract no puede cargar un idioma

OCR

Error: Failed loading language 'deu' / TESSDATA_PREFIX is not set

Por qué ocurre: Tesseract necesita los archivos .traineddata y un TESSDATA_PREFIX correcto que apunte a la carpeta tessdata.

Solución rápida: Instala los paquetes de idioma y define TESSDATA_PREFIX (debe terminar en barra).

Solución recomendada: apt-get install tesseract-ocr-eng tesseract-ocr-deu (Debian) y luego export TESSDATA_PREFIX=/usr/share/tesseract-ocr/5/tessdata/. Define ocr_options.lang con los idiomas instalados.

export TESSDATA_PREFIX=/usr/share/tesseract-ocr/5/tessdata/

Cuándo no aplica: Los contenedores suelen incluir solo inglés; crea una imagen propia para añadir idiomas.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Comparar motores OCR

Tesseract falla: resolución 0 dpi no válida

OCR

Invalid resolution 0 dpi. Using 70 instead. / tesseract OCR failed

Por qué ocurre: Las imágenes de página renderizadas sin metadatos de DPI pueden hacer fallar a Tesseract, sobre todo en contenedores.

Solución rápida: Prueba otro motor OCR o renderiza las páginas a imagen con un DPI explícito.

Solución recomendada: Cambia a RapidOCR o EasyOCR, o pre-renderiza con una densidad fija (ImageMagick: convert -density 216 input.pdf page.png) y haz OCR sobre la imagen.

convert -density 216 input.pdf page.png

Cuándo no aplica: Es una peculiaridad de Tesseract; otros motores no se ven afectados.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Comparar motores OCR

El texto en otros idiomas no se reconoce

OCR

Non-English text comes out garbled or empty / wrong characters

Por qué ocurre: El motor OCR usa por defecto un conjunto limitado de idiomas.

Solución rápida: Define los idiomas de OCR en las opciones del pipeline.

Solución recomendada: pipeline_options.ocr_options.lang = ["fr", "de", "en"] — el motor elegido debe admitir esos idiomas y, para Tesseract, los datos deben estar instalados.

pipeline_options.ocr_options.lang = ["fr", "de", "en"]

Cuándo no aplica: Cada motor admite un conjunto distinto de idiomas.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Comparar motores OCR

La GPU no se usa (se ejecuta en CPU)

GPU

torch.cuda.is_available() is False / processing stays on the CPU

Por qué ocurre: PyTorch se instaló sin soporte CUDA, o no hay una GPU y un controlador compatibles.

Solución rápida: Comprueba que torch.cuda.is_available() devuelve True.

Solución recomendada: Desinstala las ruedas de CPU e instala PyTorch con CUDA para tu versión, luego selecciona el dispositivo con --device cuda. Verifica con nvidia-smi.

pip install torch torchvision --index-url https://download.pytorch.org/whl/cu128

Cuándo no aplica: Apple Silicon usa MPS (--device mps), no CUDA. Algunos motores OCR solo funcionan en CPU.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Generador de configuración

CUDA sin memoria

GPU

torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate ...

Por qué ocurre: Los tamaños de lote superan la VRAM disponible, o otro proceso retiene memoria de GPU.

Solución rápida: Reduce los tamaños de lote y vacía la caché.

Solución recomendada: Baja layout_batch_size, ocr_batch_size y table_batch_size, define queue_max_size, llama a torch.cuda.empty_cache() entre documentos y procesa menos archivos en paralelo.

import torch
torch.cuda.empty_cache()
pipeline_options.ocr_batch_size = 2

Cuándo no aplica: Las páginas muy grandes pueden seguir superando la VRAM; usa la CPU para esos archivos.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Referencia técnica

CUDA error: no hay imagen de kernel disponible

GPU

CUDA error: no kernel image is available for execution on the device

Por qué ocurre: La compilación CUDA de PyTorch no incluye kernels para la capacidad de cómputo de tu GPU, algo común en GPU muy nuevas o con controladores antiguos.

Solución rápida: Usa una compilación de PyTorch o un contenedor que coincida con tu GPU y controlador.

Solución recomendada: Comprueba la compatibilidad de controlador/CUDA, actualiza el controlador NVIDIA y usa la rueda CUDA adecuada (cu128/cu130) o la imagen CUDA de docling-serve correspondiente. En Docker, expón la GPU con el NVIDIA Container Toolkit.

nvidia-smi

Cuándo no aplica: Las GPU muy nuevas pueden necesitar una compilación CUDA más reciente que la imagen actual.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Instalación con Docker

Flash Attention 2 no se instala o no se importa

GPU

flash-attn fails to build / ImportError: cannot import name 'flash_attn'

Por qué ocurre: Flash Attention 2 requiere una GPU Ampere o superior, CUDA 11.8+ y PyTorch 2.0+, y es difícil de compilar.

Solución rápida: Desactívalo si no lo necesitas.

Solución recomendada: Define accelerator_options = AcceleratorOptions(cuda_use_flash_attention2=False), o instala con FLASH_ATTENTION_SKIP_CUDA_BUILD=TRUE pip install flash-attn.

FLASH_ATTENTION_SKIP_CUDA_BUILD=TRUE pip install flash-attn

Cuándo no aplica: No es compatible con GPU anteriores a Ampere ni con Apple Silicon.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · FAQ oficial

MPS de Apple Silicon no está disponible

GPU

torch.backends.mps.is_available() is False / inference falls back to CPU

Por qué ocurre: MPS requiere macOS 12.3+ en un chip M y una compilación de PyTorch con MPS; algunas operaciones siguen cayendo a la CPU.

Solución rápida: Usa device auto para que Docling elija el mejor dispositivo disponible.

Solución recomendada: Ejecuta con --device mps en Apple Silicon y actualiza macOS y PyTorch; usa auto para el respaldo automático.

docling convert report.pdf --device mps

Cuándo no aplica: Algunos modelos siguen ejecutando partes del pipeline en la CPU.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Instalación en macOS

La conversión es lenta

Rendimiento y memoria

A single document takes minutes / high CPU usage

Por qué ocurre: Los modelos de OCR y enriquecimiento son costosos, sobre todo en CPU.

Solución rápida: Desactiva el OCR en PDF digitales y apaga el enriquecimiento que no necesites.

Solución recomendada: Usa --no-ocr para PDF de texto, --table-mode fast si la precisión lo permite, generate_page_images=False y una GPU cuando sea posible. Ajusta --num-threads a tus núcleos.

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

Cuándo no aplica: Los documentos escaneados realmente necesitan OCR y no pueden evitarlo.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Generador de configuración

Sin memoria durante la conversión

Rendimiento y memoria

Killed / std::bad_alloc / the process is OOM-killed

Por qué ocurre: Los PDF grandes, con muchas imágenes o fórmulas, pueden agotar la RAM, y el backend docling-parse puede acumular memoria entre páginas.

Solución rápida: Procesa el PDF por rangos de páginas o divídelo en archivos más pequeños.

Solución recomendada: converter.convert("large.pdf", page_range=[1, 100]); cambia a los backends PyPdfium para archivos muy grandes; desactiva el enriquecimiento; mantén generate_parsed_pages=False; ejecuta en un subproceso y reinícialo entre archivos.

docling convert large.pdf --page-range 1-100

Cuándo no aplica: Dividir puede romper títulos y tablas de varias páginas que cruzan el límite.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Referencia técnica

La memoria crece con muchos archivos

Rendimiento y memoria

RAM rises steadily when processing a batch / DoclingLoader leaks memory

Por qué ocurre: El backend de PDF conserva cachés y referencias a documentos tras cada conversión.

Solución rápida: Libera el backend explícitamente después de cada archivo.

Solución recomendada: Llama a result.input._backend.unload() tras la conversión, recrea el DocumentConverter cada pocos archivos o usa un subproceso por archivo. Mantén docling, docling-core y docling-parse actualizados.

result.input._backend.unload()

Cuándo no aplica: El enriquecimiento de fórmulas tiene su propia fuga conocida; aíslalo en un proceso aparte.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Referencia técnica

La conversión de PDF falla

Conversión

ConversionError: Input document file.pdf is not valid / status FAILURE

Por qué ocurre: El archivo puede estar cifrado, dañado, protegido con contraseña o ser una variante no admitida.

Solución rápida: Prueba con otro archivo de ejemplo para saber si el problema es el documento o la configuración.

Solución recomendada: Quita la protección con contraseña o pasa --pdf-password; repara o reexporta el archivo; consulta la lista de formatos admitidos y abre un issue con un ejemplo.

docling convert report.pdf --to md

Cuándo no aplica: Los PDF cifrados no se descifran en silencio; proporciona una copia sin proteger o la contraseña.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Formatos compatibles

Se rechaza un PDF protegido con contraseña

Conversión

PdfiumError: Failed to load document (PDFium: Incorrect password error) / ConversionError with cause PdfiumError

Por qué ocurre: El PDF está cifrado y no se proporcionó la contraseña.

Solución rápida: Proporciona la contraseña del documento.

Solución recomendada: CLI: docling convert secret.pdf --pdf-password 'secret'. Python: pasa PdfBackendOptions(password=SecretStr('secret')) mediante PdfFormatOption(backend_options=...).

docling convert secret.pdf --pdf-password 'secret'

Cuándo no aplica: La compatibilidad con contraseñas requiere el backend docling-parse v4 o PyPdfium2.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Formatos compatibles

La salida contiene marcadores GLYPH o texto ilegible

Conversión

GLYPH<38> GLYPH<39> ... / /gid00020 / unreadable characters

Por qué ocurre: Los PDF con fuentes incrustadas personalizadas sin mapa ToUnicode no pueden traducirse a caracteres reales.

Solución rápida: Fuerza OCR de página completa.

Solución recomendada: Define pipeline_options.ocr_options.force_full_page_ocr = True (o --ocr-mode full_page). Como alternativa, cambia al backend PyPdfium2, que a veces decodifica mejor estas fuentes.

docling convert broken.pdf --ocr-mode full_page

Cuándo no aplica: El OCR aún puede dejar GLYPH en tablas en algunas versiones; actualiza Docling.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Comparar motores OCR

Las ligaduras rompen palabras con espacios

Conversión

"fi" / "fl" / "ffi" appear with spaces, e.g. "e ffi cient"

Por qué ocurre: Algunas fuentes PDF asignan los glifos de ligadura a caracteres separados con espacios espurios.

Solución rápida: Actualiza Docling, que normaliza las ligaduras comunes.

Solución recomendada: El Docling moderno sanea las ligaduras en la etapa de ensamblado de página. Si tu PDF sigue fallando, usa OCR o preprocesa la fuente.

pip install -U docling

Cuándo no aplica: Las ligaduras basadas en nombres de glifo pueden seguir pasando si el backend no las decodifica.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Referencia técnica

Faltan imágenes incrustadas en archivos de Office

Conversión

Images are missing from DOCX or PPTX output on macOS or Linux

Por qué ocurre: El manejo de imágenes WMF/EMF solo funciona en Windows con la biblioteca de imágenes predeterminada.

Solución rápida: Convierte las imágenes o ejecuta la conversión en Windows.

Solución recomendada: Convierte los recursos WMF/EMF a PNG/SVG antes de la conversión (por ejemplo con LibreOffice headless) o ejecuta ese paso en Windows.

libreoffice --headless --convert-to png document.docx

Cuándo no aplica: Solo afecta a imágenes WMF/EMF; otros formatos se convierten con normalidad.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Formatos compatibles

Falla la conversión desde una URL (403 o timeout)

Conversión

HTTPError 403/404 or a timeout when converting an URL

Por qué ocurre: El servidor bloquea solicitudes anónimas, la URL es una página de aterrizaje o la conexión agota el tiempo.

Solución rápida: Descarga el archivo primero y pasa la ruta local.

Solución recomendada: En Python pasa cabeceras propias: converter.convert(url, headers={"User-Agent": "..."}). Comprueba que la URL apunte a un PDF/DOCX y no a una página HTML.

docling convert ./downloaded.pdf --to md

Cuándo no aplica: Algunos sitios requieren cookies o autenticación que Docling no gestiona.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Formatos compatibles

IndexError al convertir Markdown

Conversión

IndexError: list index out of range in md_backend.py

Por qué ocurre: Un elemento de lista vacío (una línea '-' sola) en el Markdown hacía fallar los backends antiguos; corregido en v2.18.

Solución rápida: Actualiza Docling.

Solución recomendada: pip install -U docling. Como respaldo, elimina los marcadores de lista vacíos del Markdown.

pip install -U docling

Cuándo no aplica: Solo afecta al backend de Markdown en versiones antiguas.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Formatos compatibles

La conversión por lotes se detiene en el primer archivo malo

Conversión

convert_all raises at the first invalid document

Por qué ocurre: Por defecto raises_on_error=True aborta el lote en el primer fallo.

Solución rápida: Define raises_on_error=False y revisa cada resultado.

Solución recomendada: for res in converter.convert_all(files, raises_on_error=False): revisa res.status y res.errors y decide por archivo.

converter.convert_all(files, raises_on_error=False)

Cuándo no aplica: Debes gestionar tú mismo los resultados PARTIAL_SUCCESS y FAILURE.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Referencia técnica

La extracción de tablas es incorrecta

Tablas y diseño

Wrong table structure / cells merged or columns shifted

Por qué ocurre: Las celdas combinadas complejas y las tablas sin bordes son difíciles, y el modo rápido cambia precisión por velocidad.

Solución rápida: Usa el modo de tablas preciso.

Solución recomendada: Ejecuta con --table-mode accurate. Para problemas de celdas combinadas en TableFormer V2, prueba do_cell_matching=False o vuelve a V1 y mantén Docling actualizado.

docling convert report.pdf --table-mode accurate

Cuándo no aplica: Ningún analizador es perfecto en todas las tablas; puede hacer falta revisión manual.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Generador de configuración

Las celdas de la tabla están vacías (TableFormer V2)

Tablas y diseño

Table structure is detected but all cell text values are empty

Por qué ocurre: Una regresión de TableFormer V2 en 2.78.0 dejaba vacías las celdas.

Solución rápida: Actualiza Docling.

Solución recomendada: pip install -U docling — la regresión se corrigió en las versiones posteriores a 2.78.0.

pip install -U docling

Cuándo no aplica: Solo afecta a TableFormer V2 en las versiones afectadas.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Generador de configuración

Las tablas sin bordes se convierten en texto corrido

Tablas y diseño

A whitespace-aligned table is extracted as prose / the table is missed

Por qué ocurre: El modelo de diseño puede pasar por alto tablas sin bordes visibles, tratando columnas alineadas como texto normal.

Solución rápida: Prueba OCR forzado o un backend distinto.

Solución recomendada: Fuerza OCR, que puede revelar la cuadrícula, cambia al backend PyPdfium2 o aumenta images_scale. Revisa manualmente los documentos críticos.

docling convert report.pdf --ocr-mode full_page

Cuándo no aplica: Si el modelo de diseño nunca marca la región, el código posterior no puede recuperarla.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Comparar motores OCR

Se pasan por alto tablas al borde de la página

Tablas y diseño

Full-page or edge-to-edge tables are not detected

Por qué ocurre: El modelo de diseño necesita margen entre la tabla y el límite de página para distinguirlos.

Solución rápida: Añade un pequeño margen blanco alrededor de la página antes de convertir.

Solución recomendada: Añade unos 40pt de padding izquierda/derecha al PDF antes de convertir (por ejemplo con pypdf); se discute una opción nativa page_padding.

python add_padding.py input.pdf

Cuándo no aplica: El padding externo puede alterar el diseño de algunos documentos.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Formatos compatibles

docling-serve no arranca

Servidor, API y MCP

docling-serve does not start / connection refused on port 5001

Por qué ocurre: Un conflicto de puertos, un extra de UI ausente o un contenedor que necesita otro entrypoint.

Solución rápida: Ejecuta el servidor con el extra de UI y comprueba que el puerto esté libre.

Solución recomendada: pip install "docling-serve[ui]" && docling-serve run --enable-ui, o usa la imagen oficial. Cambia la dirección o el puerto con UVICORN_HOST/UVICORN_PORT.

docling-serve run --enable-ui

Cuándo no aplica: El despliegue avanzado (escalado, auth) queda fuera de alcance; consulta los docs oficiales.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Instalación con Docker

docling-serve devuelve 503 o agota el tiempo al arrancar

Servidor, API y MCP

GET /ready returns 503 / requests time out while models load

Por qué ocurre: El endpoint /ready sigue en 503 hasta que los modelos se cargan, y con el motor RQ hasta que Redis es accesible.

Solución rápida: Espera a la preparación antes de enviar tráfico.

Solución recomendada: Configura startupProbe y readinessProbe en /ready y una livenessProbe en /health, y precarga modelos con DOCLING_SERVE_ARTIFACTS_PATH para acortar el arranque.

curl -i http://localhost:5001/ready

Cuándo no aplica: Con el motor RQ, /ready también requiere conectividad con Redis.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Instalación con Docker

La GPU no se usa dentro del contenedor

Servidor, API y MCP

CUDA error: no kernel image is available / the container runs on CPU despite --gpus

Por qué ocurre: El contenedor no tiene acceso a la GPU, o la etiqueta de imagen CUDA y el controlador del host no coinciden.

Solución rápida: Expón la GPU con el NVIDIA Container Toolkit.

Solución recomendada: Instala y actualiza nvidia-container-toolkit, configura el runtime nvidia y solicita la GPU (docker run --gpus all, o devices count: all en Compose). Usa la etiqueta CUDA que coincida con tu controlador.

docker run --gpus all -p 5001:5001 quay.io/docling-project/docling-serve-cu128

Cuándo no aplica: Algunas GPU muy nuevas requieren una imagen CUDA más reciente que la publicada.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Instalación con Docker

Problema de configuración del servidor MCP

Servidor, API y MCP

The MCP server is not listed in the client / no tools appear / the server exits immediately

Por qué ocurre: La configuración del cliente apunta al comando equivocado, el paquete no está disponible o el transporte es incorrecto.

Solución rápida: Lanza el servidor una vez a mano para confirmar que funciona.

Solución recomendada: uvx --from=docling-mcp docling-mcp-server y añade el JSON correspondiente a claude_desktop_config.json (o mcp.json). Reinicia el cliente y añade --transport stdio si hace falta.

uvx --from=docling-mcp docling-mcp-server

Cuándo no aplica: La ubicación de los archivos de configuración varía según el cliente; consulta su documentación.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Generador de configuración

MCP no puede acceder a los archivos o agota el tiempo

Servidor, API y MCP

[Errno 2] No such file or directory / the MCP client times out on a cold start

Por qué ocurre: El servidor MCP no ve el sistema de archivos del cliente, o la primera conversión es lenta mientras cargan los modelos.

Solución rápida: Usa un directorio compartido o cambia al modo remoto mediante docling-serve.

Solución recomendada: Define DOCLING_MCP_CONVERSION_MODE=remote con DOCLING_MCP_SERVICE_URL, o monta una carpeta compartida que ambos procesos puedan leer. Precalienta la caché de modelos para evitar tiempos de espera en arranque en frío.

export DOCLING_MCP_CONVERSION_MODE=remote

Cuándo no aplica: Los clientes web no comparten sistema de archivos con un servidor MCP local.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Instalación con Docker

Aviso de longitud de tokens de HybridChunker

RAG y fragmentación

Token indices sequence length is longer than the specified maximum sequence length for this model (531 > 512)

Por qué ocurre: Transformers avisa mientras el chunker cuenta los tokens de una secuencia grande y luego la divide; es una falsa alarma.

Solución rápida: Ignora el aviso.

Solución recomendada: Confirma los tamaños reales serializando cada chunk y contando tokens con el mismo tokenizer.

for c in chunker.chunk(doc):
    print(len(tokenizer.tokenize(chunker.serialize(chunk=c))))
pip install -U docling-core

Cuándo no aplica: Si un chunk real supera el límite del modelo, alinea el tokenizer del chunker con tu modelo de embedding.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Guía de RAG

Faltan las dependencias de fragmentación

RAG y fragmentación

ImportError: semchunk ... / the chunking extra is required

Por qué ocurre: Las dependencias de fragmentación conscientes de tokens son un extra opcional de docling-core.

Solución rápida: Instala el extra chunking.

Solución recomendada: pip install 'docling-core[chunking]' para tokenizers de Hugging Face, o 'docling-core[chunking-openai]' para tiktoken.

pip install 'docling-core[chunking]'

Cuándo no aplica: Elige el extra que coincida con el tokenizer de tu modelo de embedding.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Guía de RAG

Falla la conversión de audio: falta el pipeline ASR

Audio y vídeo

Audio or video conversion fails / the ASR pipeline is not available

Por qué ocurre: ASR es un extra opcional y no está en la instalación base.

Solución rápida: Instala el extra asr.

Solución recomendada: pip install "docling[asr]" (o uv add "docling[asr]").

pip install "docling[asr]"

Cuándo no aplica: El pipeline ASR transcribe audio; el vídeo necesita además el pipeline de vídeo.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Formatos compatibles

No se encuentra FFmpeg para audio o vídeo

Audio y vídeo

[WinError 2] The system cannot find the file specified / FileNotFoundError: ffmpeg

Por qué ocurre: Whisper decodifica el audio llamando al binario ffmpeg, que debe estar instalado y en el PATH.

Solución rápida: Instala ffmpeg y asegúrate de que esté en el PATH.

Solución recomendada: brew install ffmpeg (macOS), apt-get install ffmpeg (Debian) o winget install ffmpeg (Windows). Verifica con ffmpeg -version.

ffmpeg -version

Cuándo no aplica: Todos los formatos de audio y todas las entradas de vídeo requieren ffmpeg.

Verificado con Docling v2.129.0 · Última comprobación 2026-09-22

Fuente oficial · Formatos compatibles

1
Paso 1

Empieza aquí: primera respuesta

La mayoría de los problemas de Docling se deben a una versión desactualizada, un extra opcional ausente o un único documento difícil. Repasa estos pasos antes que nada.

  1. Busca el texto del error. Usa la búsqueda de las tarjetas de arriba; el mensaje exacto suele aparecer como síntoma.
  2. Actualiza primero. Muchos problemas ya están corregidos: pip install -U docling docling-core docling-parse.
  3. Reproduce con un archivo simple. Si un PDF o DOCX pequeño y sencillo funciona, el problema suele estar en el documento, no en la instalación.
  4. Cambia una sola cosa. Prueba --pdf-backend pypdfium2, --ocr-mode full_page o --table-mode fast.
  5. Reduce el alcance. Usa --page-range, desactiva el enriquecimiento y convierte un solo archivo.
  6. Reúne los detalles antes de reportarlo (siguiente tarjeta).
2
Paso 2

Reúne tu entorno

Copia estos comandos para tener a mano las versiones y la información del dispositivo cuando algo falle.

  • Incluye el comando exacto y el traceback completo.
  • Adjunta o describe un documento de ejemplo mínimo cuando puedas.
  • Indica tu sistema operativo, versión de Python y si usas Docker.
  • Añade -vv para logs de conversión detallados.
docling --version
python -c "import torch; print(torch.__version__, torch.cuda.is_available())"
python -c "import docling, docling_core; print(docling.__version__, docling_core.__version__)"
3
Paso 3

Instalación y plataforma

Los fallos de instalación casi siempre son un compilador o una rueda ausentes, o un Python no admitido.

  • Prefiere uv o el contenedor oficial para evitar problemas de compilación nativa.
  • Usa un Python de 64 bits admitido (3.10-3.12).
  • Actualiza certifi para errores SSL; usa OpenCV headless en contenedores.
  • Consulta las guías de instalación y los formatos compatibles.
4
Paso 4

Modelos y offline

La conversión de PDF necesita pesos de modelos; una descarga rota o bloqueada es un fallo muy común.

  • Descarga todo por adelantado con docling-tools models download --all.
  • Apunta artifacts_path a la carpeta superior que contiene las subcarpetas de modelos.
  • Define HF_HOME para una sola caché y HF_TOKEN detrás de un proxy o para repos restringidos.
  • En hosts aislados, copia antes la caché desde una máquina conectada.
5
Paso 5

OCR

Los problemas de OCR suelen ser un motor ausente, datos de idioma ausentes o el modo incorrecto.

  • Instala un motor: pip install "docling[rapidocr]" o [easyocr].
  • Para Tesseract, instala el binario del sistema y los paquetes de idioma y define TESSDATA_PREFIX.
  • Fuerza OCR para escaneos y PDF con glifos con --ocr-mode full_page.
  • Compara motores en la página Motores OCR.
6
Paso 6

GPU, memoria y velocidad

Las conversiones lentas o interrumpidas suelen ser presión de memoria o ejecución solo en CPU.

  • Verifica CUDA/MPS, reduce los lotes y llama a torch.cuda.empty_cache().
  • Procesa PDF enormes con --page-range o cambia al backend PyPdfium.
  • Libera memoria con result.input._backend.unload() entre archivos.
  • Desactiva el OCR y el enriquecimiento que no necesites; ajusta --num-threads.
7
Paso 7

Conversión, tablas y formatos

Los problemas de salida suelen remontarse al documento, al backend o al modo de tablas.

  • PDF con contraseña: pasa --pdf-password.
  • GLYPH o texto ilegible: fuerza OCR de página completa o cambia de backend.
  • Tablas: usa --table-mode accurate; para celdas combinadas de V2 prueba do_cell_matching=False o V1.
  • Lotes: define raises_on_error=False y revisa cada resultado.
8
Paso 8

Servidor, API y MCP

El servicio y las integraciones de agentes fallan por tres motivos: puertos, preparación o acceso a la GPU.

  • Arranca la API con docling-serve run --enable-ui (o la imagen del contenedor).
  • /ready sigue en 503 hasta que cargan los modelos; úsalo para startup/readiness.
  • En Docker, expón la GPU (--gpus all) e instala el NVIDIA Container Toolkit.
  • Para MCP, ejecuta uvx --from=docling-mcp docling-mcp-server; usa el modo remoto para clientes web.
9
Paso 9

RAG, audio y vídeo

Los avisos de fragmentación suelen ser inofensivos; audio y vídeo necesitan dependencias extra.

  • El aviso de longitud de tokens de HybridChunker es una falsa alarma; verifica los tamaños reales.
  • Instala docling-core[chunking] para el chunker consciente de tokens.
  • Audio y vídeo necesitan pip install "docling[asr]" y ffmpeg en el PATH.
  • Consulta la guía de RAG para el pipeline completo.
10
Paso 10

Reportar un error

Un buen informe consigue una corrección rápida. Incluye todo lo necesario para reproducirlo.

  • Busca primero en los issues existentes para evitar duplicados.
  • Indica las versiones de Docling, docling-core y Python.
  • Pega el comando exacto y el traceback completo.
  • Adjunta un documento de ejemplo mínimo si no es confidencial.
  • Haz las preguntas de uso en las discussions, no en el tracker.
11
Paso 11

Preguntas frecuentes

¿Qué error debería corregir primero?
Empieza por los errores de instalación y de modelos. Nada más funciona hasta que Docling está instalado y puede cargar sus modelos.
Actualicé y algo se rompió. ¿Qué hago?
Fija la versión anterior con pip install docling==<version> para desbloquearte y reporta la regresión con un ejemplo.
¿Se envía mi documento a algún sitio?
No. Docling se ejecuta en local y no envía datos de documentos. El único acceso de red es la descarga de pesos de modelos.
¿Debo dividir los PDF grandes?
Solo si alcanzas límites de memoria. Prueba primero --page-range, luego dividir, y asume cierta pérdida de estructura entre páginas.
¿Por qué mis tablas se extraen mal?
Las celdas combinadas complejas y las tablas sin bordes son difíciles. Usa el modo preciso, prueba do_cell_matching=False o TableFormer V1 y revisa las tablas críticas.
La CLI funciona pero Python no. ¿Por qué?
Usa el mismo entorno virtual para ambos y pasa las opciones por PdfFormatOption para que lleguen al pipeline.
¿Dónde puedo obtener más ayuda?
Busca en los issues y discussions oficiales de GitHub e incluye tus versiones, el comando y el traceback.