独立指南——与 IBM 及 Docling 项目无隶属关系。 所有命令均在 Docling 2.143.1 上验证。
  1. 首页
  2. 性能
性能

Docling 有多快?我们测了每一个阶段。

我们用四种配置转换同一份 9 页 PDF,每种预热后计时三次,并记录 Docling 自带的逐阶段性能分析。结论很清楚:对原生数字 PDF,默认耗时大部分花在了你很可能用不上的 OCR 上。

已在 Docling 上验证 2.143.1更新于 2026年10月27日含本站实测数据8 分钟阅读
要点速览
  • 默认设置:4 vCPU 上每页 8.5 秒。77 秒中 OCR 独占 61 秒。
  • --no-ocr:每页 2.3 秒(快 3.7 倍),正文相同;只会丢失图片中的文字。
  • 再加 --table-mode fast:每页 2.0 秒。完全跳过表格模型:每页 1.6 秒。
  • 真正需要 OCR 的扫描 PDF 在 CPU 上为每页 20 秒——这正是 GPU 物有所值的地方。

核心数字#

不同 Docling 配置下每页耗时(秒)9 页原生数字 PDF(Docling 技术报告),一台 4 vCPU、无 GPU 的云服务器,3 次预热后运行的中位数。
025810默认(自动 OCR + 表格)8.51 秒关闭 OCR2.31 秒关闭 OCR + 快速表格2.05 秒关闭 OCR + 不用表格模型1.59 秒

docling.org 使用 Docling 2.143.1 实测。越低越好。

查看数据表
不同 Docling 配置下每页耗时(秒)
秒/页
默认(自动 OCR + 表格)8.51 秒
关闭 OCR2.31 秒
关闭 OCR + 快速表格2.05 秒
关闭 OCR + 不用表格模型1.59 秒
配置CLI 参数中位数(9 页)每页
默认—76.6 秒8.51 秒
关闭 OCR--no-ocr20.8 秒2.31 秒
关闭 OCR + 快速表格--no-ocr --table-mode fast18.4 秒2.05 秒
关闭 OCR + 不用表格模型--no-ocr --no-tables14.3 秒1.59 秒

时间花在哪里#

时间花在哪里:各阶段模型耗时9 页合计秒数。多线程流水线中各阶段会并行,因此合计可能超过实际耗时。
版面分析OCR表格结构解析与组装
0秒25秒50秒75秒100秒默认(自动 OCR + 表格)88.7秒关闭 OCR26.8秒关闭 OCR + 快速表格21.8秒关闭 OCR + 不用表格模型14.4秒

Docling 内置性能分析计时(settings.debug.profile_pipeline_timings),docling.org 实测。

查看数据表
时间花在哪里:各阶段模型耗时
版面分析OCR表格结构解析与组装合计
默认(自动 OCR + 表格)15.561.011.60.788.7
关闭 OCR13.20.012.80.926.8
关闭 OCR + 快速表格12.70.08.30.821.8
关闭 OCR + 不用表格模型13.50.00.00.814.4

默认设置下 OCR 占绝对大头。这份技术报告是原生数字 PDF,文字直接来自文件本身——OCR 只处理了嵌入的插图(截图和图表),但 9 页仍花了 61 秒。换来的是从这些图片中多找到约 5,000 个字符(Markdown 34,063 对 29,036 个字符)。

测量方法#

  • 机器:4 vCPU x86_64 云主机,15 GB 内存,无 GPU,Linux,Python 3.13,PyTorch 2.14.1 CPU 版。
  • 软件:Docling 2.143.1、docling-parse 7.23.1、docling-ibm-models 4.0.4;默认模型(Heron 版面模型、TableFormer accurate、auto 引擎选中的 RapidOCR)。
  • 文档:Docling Technical Report,arXiv 2408.09869——9 页,3 张表格,若干插图。
  • 方法:每种配置一个 DocumentConverter,先预热转换一次,再在同一进程中计时转换三次,取中位数。各阶段时间来自 Docling 内置的性能分析器(settings.debug.profile_pipeline_timings = True)。

在你自己的文档上做同样的分析:

bash
docling convert your.pdf --profiling                # 打印各阶段耗时表
docling convert your.pdf --profiling --save-profiling   # 同时保存为 JSON

冷启动与预热#

新进程需要加载模型。在关闭 OCR 的配置下,首次转换耗时 27.5 秒;之后三次的中位数为 20.8 秒。在服务或批处理任务中,请只创建一次转换器并复用它——或者使用启动时即加载模型的 docling-serve。

扫描文档#

扫描版 PDF:还原出的原文词语比例4 页以 150 DPI 栅格化并加入轻微模糊与倾斜。没有 OCR 的工具几乎提取不到内容。
0255075100Unstructured99.7%Marker97.2%Docling94.2%PyMuPDF4LLM93.8%MarkItDown0.0%

docling.org 实测:原生文本中(≥4 个字母的)不重复单词在各输出中出现的比例。

查看数据表
扫描版 PDF:还原出的原文词语比例
还原比例
Unstructured99.7%
Marker97.2%
Docling94.2%
PyMuPDF4LLM93.8%
MarkItDown0.0%

我们把同一篇论文的前四页以 150 DPI 栅格化,并加入轻微模糊和倾斜,因此完全没有文本层。Docling 的默认流水线在 CPU 上以每页 20.4 秒还原了 94.2% 的原文单词。没有本地 OCR 的 MarkItDown 什么也没返回;PyMuPDF4LLM 在安装 Tesseract 之前也没有输出。把 Docling 的 OCR 引擎换成 Tesseract 后达到 95.1%、每页 6.8 秒;onnxruntime 后端的 RapidOCR 输出相同,耗时减半(每页 8.7 秒)。大量处理扫描件时,CUDA GPU 或 Apple Silicon 带来的差别最大——引擎选择见 OCR 指南。

影响速度的设置#

设置CLI效果
跳过 OCR--no-ocr我们在原生数字 PDF 上的测试中快 3.7 倍
快速表格--table-mode fast我们的测试中端到端快 11%
线程--num-threads N(默认 4)设为物理核心数
设备--device auto|cpu|cuda|mps|xpuauto 选择最佳可用设备
页面批次--page-batch-size N(默认 4)GPU 上更大的批次有帮助
更少页面--page-range 1-5只转换需要的部分
安全网--document-timeout 300得到部分结果,而不是卡住的任务
完全不用模型--pipeline native(+ --parser-threads N)无模型:只有 PDF 自带的文本单元和图片——没有版面、标题、阅读顺序或表格。最快,结构最少。
内存--release-native-memory-every-n-pages N(默认 128)长文档占用内存过多时调低

对应的 Python 设置在 PdfPipelineOptions 和 AcceleratorOptions 中——见 Python API 指南。

IBM 公布的数据#

Docling 技术报告(v1,2024 年 8 月)在关闭 OCR 的情况下,用 225 页测试集测量了旧版本:Apple M3 Max 上每秒 1.27–1.34 页,Intel Xeon E5-2690 上每秒 0.60–0.92 页,分别使用 4 和 16 线程。这些机器比我们的快,Docling 版本也更旧,因此这些数字只作参考,不宜直接比较。

常见问题

Docling 每页要多久?

在我们没有 GPU 的 4 vCPU 测试机上,Docling 2.143.1 默认设置每页 8.5 秒,关闭 OCR 每页 2.3 秒,需要完整 OCR 的扫描文档每页约 20 秒。实际数字取决于 CPU、GPU 和文档类型。

如何让 Docling 更快?

对原生数字 PDF 关闭 OCR(--no-ocr),使用 --table-mode fast,只转换需要的页面(--page-range),在核心更多的机器上调高 --num-threads,复用同一个 DocumentConverter,并在 OCR 密集或 VLM 任务中使用 GPU。

Docling 会自动使用 GPU 吗?

会。--device auto(默认)时,Docling 依次选择 CUDA、Apple MPS、Intel XPU、CPU,前提是你的 PyTorch 版本支持该设备。

为什么 Docling 第一次运行这么慢?

第一次运行需要下载并加载模型。在我们的测试中,新进程中的首次转换耗时 27.5 秒,模型加载后同一文档只需 20.8 秒。

资料来源