コンテンツにスキップ

ベンチマーク

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回。表は中央値(ミリ秒)です。

概要

ワークロード 最新コーパスで分かったこと
実世界PDF 7件を結合 pylopdf 40.6 ms、pymupdf 127.1 ms、pypdf 366.3 ms
先頭ページを2倍で描画 7ファイルすべてでpylopdfが高速
12ページを2倍で描画 render_pages()は400.8 ms(1 worker)から83.6 ms(8 workers)へ短縮し、4.80倍高速化
全ページのテキスト抽出 4ファイルでpylopdf、3ファイルでpymupdfが高速
抽出精度の代理指標 読み順の流儀により類似度0.292〜1.000

テキスト抽出

全ページ、単位ms。小さいほど高速です。

ファイル 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へ描画。単位ms、小さいほど高速です。

ファイル 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へ描画。単位ms、小さいほど高速です。 バッチは入力順を保持し、単一の不変ドキュメントスナップショットを使います。

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 2部の 全ページテキストを抽出しました。1回warmup後、先行モードを交互にした7組の実行の 中央値です。

モード Workers 時間 高速化
逐次 1 341.8 ms 1.00倍
並行 2 195.9 ms 1.74倍

すべての実行で2部の出力は完全に一致し、import後も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 へコミットされています。数値を引用するときは、環境とコーパスを併記してください。