首页 / Docs / 技术手册

Docling 完整开发与技术参考手册

核心概览 (TL;DR)
  • Docling 是 100% 免费开源(MIT)的文档解析引擎,支持将 PDF、DOCX、PPTX、XLSX、扫描件及音频转换为结构化 Markdown、HTML 和 JSON。
  • 内置版面视觉分析、阅读顺序恢复及针对复杂跨行合并单元格的 TableFormer v2 表格模型。
  • 支持多语言 OCR,集成了 RapidOCR、Tesseract(tesserocr)、EasyOCR 和 OcrMac。
  • 100% 本地运行零遥测,原生支持离线局域网(Air-Gapped)、REST API(docling-serve)与 MCP 智能体服务(docling-mcp)。

1. 架构总览

Docling 是由 IBM Research 开发并在 LF AI & Data 托管的开源文档解析框架。与单纯提取纯文本的工具不同,Docling 通过模块化流水线理解页面几何布局、检测目标包围盒(Bounding Box)、精准还原复杂合并单元格表格,并输出专为大模型和向量数据库设计的标准结构。

2. 安装与环境配置

Docling 支持在 Windows、macOS 和 Linux 上的 Python 3.9 至 3.14(64位)环境中运行:

bash — 标准安装
$pip install docling

2.1 Windows 10/11 C++ 生成工具配置指南

在 Windows 系统上必须使用 64 位 Python。当通过 pip 编译 tesserocr 等原生 C++ 扩展时,需要安装 Microsoft Visual C++ 14.0+:

Visual C++ Build Tools 安装命令
以管理员身份打开 PowerShell 运行:
PS>winget install Microsoft.VisualStudio.2022.BuildTools --override "--passive --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended"

推荐方案(无需安装 C++ 编译器): 使用 Astral uv 直接下载预编译好的二进制 Wheel 包:

powershell — astral uv
PS>uv add docling

3. 快速上手

python — 基础转换代码
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. DoclingDocument 核心数据模型

DoclingDocument 是解析输出的核心对象,维护完整的章节、表格、代码块及图表对象树结构,包含精确的页面坐标,可通过 result.document.export_to_json() 导出无损 JSON。

5. 处理流水线与 Granite Docling 视觉模型

5.1 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("document.pdf")
              

6. OCR 引擎与性能调优

6.1 禁用 OCR 加速数字 PDF 处理(速度提升10倍)

python — 禁用 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  # 数字 PDF 极速处理

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

7. 多格式提取 (Excel XLSX, PowerPoint PPTX, CAD 图纸与音频)

python — 解析 excel 与 ppt
from docling.document_converter import DocumentConverter

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

8. RAG 结构化分块 (`HybridChunker`)

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

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

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

9. GPU 批量加速与性能调优

python — 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. 框架集成 (LangChain 与 LlamaIndex)

python — langchain docling
from langchain_docling import DoclingLoader

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

11. VLM 视觉模型目录

模型标识 出品方 核心优势 CLI 参数
granite_docling IBM Research 极高精度的 PDF 版面几何理解与 OCR --vlm-model granite_docling
smoldocling Hugging Face / IBM 针对 CPU 环境高度优化的轻量模型 --vlm-model smoldocling

12. FastAPI 服务部署 (`docling-serve`) 与 MCP 协议

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

12.1 Claude Desktop 的 MCP 服务配置

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

13. 企业级安全与物理隔离网络部署 (Air-Gap)

bash — 离线环境模型预下载
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. 开发者诊断与常见报错解决

错误提示 / 现象 根本原因 解决方案
cannot import name 'BoundingBox' Docling v2 模块结构迁移。 修改引用为 from docling_core.types.doc import BoundingBox
RapidOCR: text detection result empty 扫描件图片分辨率过低。 设置 pipeline_options.images_scale = 2.0 提升 DPI。
检查安装版本 版本校验。 在终端执行 docling --version

15. CLI 命令行参数速查表

命令行参数 类型 默认值 功能说明
--to md, json, html, doctags md 指定目标导出文档格式。
--no-ocr Boolean - 禁用 OCR 模块以大幅加速原生数字 PDF 转换。
--version Flag - 输出当前安装的 Docling 版本号。