跳转至

性能基准

pylopdf会同时公开优势与劣势。以下数据只是一个环境和语料库的快照,并非普遍排名。 请用它判断自己的工作负载应该测量什么。

最近一次运行

2026-07-24 12:59 UTC · Windows 11 · Python 3.14.6 · AMD64
pylopdf 0.9.0 · pymupdf 1.28.0 · pypdf 6.14.2 · pdfplumber 0.11.10
预热1次,测量5次;表中为中位数,单位毫秒。

概览

工作负载 最新语料库的结果
合并7个真实PDF pylopdf 40.6 ms,pymupdf 127.1 ms,pypdf 366.3 ms
以2×渲染第一页 7个文件均由pylopdf领先
以2×渲染12页 render_pages()从400.8 ms(1 worker)降至83.6 ms(8 workers),加速4.80倍
提取全部文本 4个文件由pylopdf领先,3个由pymupdf领先
提取一致性代理指标 因阅读顺序策略不同,相似度从0.292到1.000

文本提取

提取所有页面,单位毫秒,越小越快。

文件 pylopdf pymupdf pypdf pdfplumber
bill-hr815.pdf 138.1 179.5 848.4 9850.9
f1040.pdf 16.8 33.4 176.3 572.9
mhlw-doc.pdf 18.4 11.3 109.3 195.3
patent-us223898.pdf 29.5 6.8 81.4 512.9
pdf20-simple.pdf 0.3 1.1 1.8 2.2
usrguide.pdf 144.9 50.7 665.2 1756.4
wdl6812-manuscript.pdf 0.3 0.7 1.4 2.2

提取内容

这只是代理指标,不是正确率。文本经空白归一化后与pymupdf比较。表单和OCR层的相似度 较低,可能只是阅读顺序或空白策略不同;即使字符数相同也会发生这种情况。

文件 pylopdf字符数 pymupdf字符数 相似度
bill-hr815.pdf 300559 300559 1.000
f1040.pdf 10156 10156 0.680
mhlw-doc.pdf 1264 1251 0.961
patent-us223898.pdf 11207 11218 0.292
pdf20-simple.pdf 11 11 1.000
usrguide.pdf 55624 55560 0.996
wdl6812-manuscript.pdf 0 0 1.000

合并

任务 pylopdf pymupdf pypdf
合并语料库全部7个文件 40.6 127.1 366.3

渲染

第一页输出为2× PNG,单位毫秒,越小越快。

文件 pylopdf pymupdf
bill-hr815.pdf 38.2 86.2
f1040.pdf 53.1 94.7
mhlw-doc.pdf 35.7 70.1
patent-us223898.pdf 36.4 69.0
pdf20-simple.pdf 9.0 18.9
usrguide.pdf 31.8 56.6
wdl6812-manuscript.pdf 45.5 87.0

并行渲染

usrguide.pdf前12页输出为2× PNG,单位毫秒,越小越快。 批处理保持输入顺序,并使用同一个不可变文档快照。

Workers 时间 相对1 worker加速
1 400.8 1.00倍
2 200.5 2.00倍
4 118.5 3.38倍
8 83.6 4.80倍

实际并发度同时受指定worker数和约512 MB的估算实时渲染内存限制。

free-threaded提取

在Windows 11的free-threaded CPython 3.14.6上,对两个互相独立的 bill-hr815.pdf执行全页文本提取。预热一次后,交替先运行的模式,取七组配对运行的 中位数:

模式 Workers 时间 加速比
串行 1 341.8 ms 1.00倍
并行 2 195.9 ms 1.74倍

每次运行中两个副本的输出都完全一致,并且解释器确认导入后GIL仍保持禁用。

复现

语料库位于tests/assets/real_world,文件来源与许可证记录在同一目录。

uv sync --all-extras --group bench
uv run python bench/run.py
# 使用free-threaded CPython 3.14解释器:
python3.14t bench/free_threaded.py

生成的原始报告提交在 bench/results/latest.md。 引用数据时,请同时提供运行环境与语料库。