PyMuPDF4LLM・pdfplumber・Marker を実際のPDFで比較

執筆 pdftomd.tools チーム · 更新日 · 約9分で読めます

私たちのテストからの短い答え:AGPLライセンスが問題なければ、高速で見出しが最もきれいな pymupdf4llm が最良の第一候補です。MITの pdfplumber は罫線のある表で最も正確ですが、見出しは出力しません。marker は罫線なしの表に最も強く、ページの余計な要素も取り除きますが、CPUでは何倍も遅く、私たちの中国語テキストを壊しました。単発のファイルなら、PythonでPDFをMarkdownに変換するガイドでインストール不要の方法も紹介しています。

イラスト:PDFから注がれたMarkdownの出力が入った、ラベル付きの3本の試験管

PyMuPDF4LLM・pdfplumber・Marker:結論

どのライブラリを選ぶべきか(私たちのテストによる)
必要なもの選ぶもの理由
高速で見出しのある良いMarkdownpymupdf4llm3つの文書すべてで、想定した見出しがすべて正しいレベルで出た
罫線のある表の正確なセル、寛容なライセンスpdfplumber罫線のある表と結合セルで完全一致。MITライセンス
罫線なしの表、繰り返しヘッダーの除去markerシンプルな罫線なしの例を2つとも検出。ヘッダーとページ番号を除去
中国語や日本語のテキストpymupdf4llmすべての文字と句読点を保持。marker は文字を失った

すべてのテストで勝ったライブラリはありません。この記事の残りでは各行の裏にある数字を示すので、手元にあるPDFに合わせて pymupdf4llm・pdfplumber・marker を比べられます。

テストの方法:ハードウェア、バージョン、文書

比較を公平にするため、どのライブラリにも同じマシンで同じファイルを渡しました。すべてCPUだけでのPDF解析です:Intel(R) Xeon(R) Processor、8 vCPU、RAM 16 GB、GPUなし、Linux 6.12.94+ x86_64、Python 3.13.5。バージョン:pymupdf4llm 1.28.2(PyMuPDF 1.28.2)、pdfplumber 0.11.9(pdfminer.six 20251230)、marker-pdf 2.0.0(surya-ocr 0.22.1、torch 2.14.1+cpu)。トークンは tiktoken 0.14.0 とエンコーディング o200k_base で数えました。テストは2026年10月19日に行いました。

イラスト:CPUのマシンが、同じ3つのPDFと表のサンプル群で3つのPythonライブラリを実行する
3つのライブラリすべてに、同じファイル、同じマシン、同じ採点。
  • 文書: 見出し13個と表1個のある5ページの英語のガイド、見出し29個と表4個のある11ページの中国語のレポート、すべてのページに繰り返しのヘッダーとページ番号がある4ページの英語のレポート。
  • 表のサンプル: 正しい表をセル単位で把握している1ページのPDF 11個。うち2個は表をまったく含みません。
  • 設定: 各ライブラリの初期設定。pdfplumber にはMarkdown出力がないため、テキスト行と find_tables() の結果を読む順に並べる約20行のコードを書きました。marker は初期設定(CPUでの標準である高速モード)と --disable_ocr の2通りで実行しました。
  • 時間の計測: 3回の実行の中央値。marker のモデルは事前に1回読み込み(4.79秒)、ウォームアップの1回は除外しました。
import pymupdf4llm
md = pymupdf4llm.to_markdown("report.pdf")

import pdfplumber
with pdfplumber.open("report.pdf") as pdf:
    for page in pdf.pages:
        lines = page.extract_text_lines()
        tables = page.find_tables()

from marker.converters.pdf import PdfConverter
from marker.models import create_model_dict
from marker.output import text_from_rendered
converter = PdfConverter(artifact_dict=create_model_dict())
md, _, _ = text_from_rendered(converter("report.pdf"))
各ライブラリの中心となる呼び出し。採点を含む完全なスクリプトは約220行です。

CPUで marker 2.0 を動かすには、README によると別途インストールが必要な llama.cpp の llama-server バイナリも要り、初回の起動時に私たちのマシンでは約1.8 GBのモデルファイルをダウンロードしました。最初の2回の試行は失敗しました。1回目は torch と torchvision のバージョンの不一致、2回目は llama-server がなかったためです。どちらもライブラリの不具合ではなくセットアップの問題ですが、その時間は見込んでおいてください。

速度とトークン数

文書ごとの秒数の中央値と、出力の tiktoken のトークン数(私たちのテストによる)
ライブラリ英語のガイド(5ページ)中国語のレポート(11ページ)繰り返しヘッダー付きの英語レポート(4ページ)トークン数(中国語のレポート)
pymupdf4llm0.693秒1.419秒0.387秒8908
pdfplumber0.713秒3.579秒0.023秒8782
marker(初期設定)3.354秒4.563秒2.325秒10001
marker(--disable_ocr)1.425秒3.146秒0.447秒10001

pymupdf4llm・pdfplumber・marker の差が最も大きいのは速度です。pdfplumber は短いレポートで最速(0.023秒)でしたが、中国語のレポートでは軽量なツールの中で最も遅くなりました。pymupdf4llm は一貫して1ページあたり約0.1〜0.14秒でした。marker はモデルを読み込み済みでも、英語のガイドで pymupdf4llm の5倍遅く、--disable_ocr を付けると差は縮まりました。

軽量な2つのライブラリのトークン数は近い値でした。marker は中国語のレポートで約12%多くのトークンを出力し、その一部は <sup> タグと余分なスペースによるものでした。短いレポートでは、繰り返しのヘッダーを省いたため少なくなりました。

見出しとページの余計な要素

検出された想定の見出しと、そのうち正しいレベルだった数(私たちのテストによる)
ライブラリ英語のガイド(13)中国語のレポート(29)繰り返しヘッダー付きの英語レポート(4)
pymupdf4llm13(正しいレベル 13)29(正しいレベル 29)4(正しいレベル 4)
pdfplumber0(正しいレベル 0)0(正しいレベル 0)0(正しいレベル 0)
marker(初期設定)11(正しいレベル 4)23(正しいレベル 14)4(正しいレベル 3)
marker(--disable_ocr)11(正しいレベル 4)23(正しいレベル 14)4(正しいレベル 3)

見出しは2つ目の大きな違いです。pymupdf4llm はすべての見出しを正しいレベルで見つけました。ガイドの太字のFAQの質問も見出しとして扱いましたが(6行)、これは役に立つこともあります。pdfplumber には見出しの概念がないので、平坦なテキストになります。marker はほとんどの見出しを見つけましたが、レベルが違うことがよくありました。

4ページのレポートでは、pymupdf4llm と pdfplumber は繰り返しヘッダー4個とページ番号4個をすべて残し、marker はどちらも取り除きました。pymupdf4llm と marker の違いが最もはっきり出た例です。marker のレイアウトモデルはヘッダーとは何かを知っていますが、軽量なライブラリは知りません。pdfplumber は行末でハイフン区切りされた単語もそのまま残しました。

スクリーンショット:同じ4ページのレポートに対する pymupdf4llm、pdfplumber、marker の生のMarkdown出力を3列に並べたもの
スクリーンショット:各ライブラリが4ページのレポートについて書き出した、未編集の生のMarkdown。

表:罫線あり、罫線なし、結合セル

表のサンプルごとの結果(私たちのテストによる)
サンプルpymupdf4llmpdfplumbermarker
罫線のある表完全一致完全一致完全一致
オフィスソフトの書き出しセルの81%完全一致セルの94%
罫線なしセルの40%検出なしセルの90%
折り返しのあるセル完全一致完全一致セルの83%
罫線なし・折り返しあり検出なし検出なしセルの83%
オフィスソフト・罫線なし検出なし検出なし検出なし
本文中の表完全一致検出なし完全一致
2つの表完全一致セルの33%完全一致
結合セルセルの83%完全一致セルの42%
完全一致の表:9個中、pymupdf4llm 4、pdfplumber 4、marker 3。表のない2つのサンプルでは、どのライブラリも表をでっち上げませんでした。--disable_ocr を付けた marker は、どのサンプルでも初期設定の marker と同じ結果でした。

表の順位は、PDFが線を描いているかどうかで決まります。PDFが罫線を描いていれば、find_tables() が線をたどるので、pdfplumber の表は結合セルを含めて完全に一致します。線がなければ何も見つかりませんでした。pymupdf4llm は罫線のある表のほとんどで完全一致でしたが、セルに | を含むオフィスソフトの表では、それをエスケープせずに表を崩しました。marker はシンプルな罫線なしの例を2つとも見つけてセルの83〜90%を再現し、pymupdf4llm は1つを40%で、pdfplumber は0個でした。ただし結合セルの例では、marker は列をまとめてしまいました。

オフィスソフトから書き出した罫線なしの表は、どのライブラリも認識できませんでした。表が目的なら、PDFの表のガイドで、罫線なしのレイアウトがどのツールにも難しい理由を説明しています。

中国語テキスト:網羅率、スペース、句読点

11ページの中国語のレポート(私たちのテストによる)
ライブラリ中国語の文字の保持率文中のスペース文中の改行全角読点の保持率
pymupdf4llm100%1590100%
pdfplumber100%0140100%
marker(初期設定)98.6%16600%

中国語のテキストでは、順位がまた入れ替わります。元のPDFには文中にスペースがありません。pymupdf4llm はすべての文字と全角の読点を残しましたが、文中に159個のスペースを入れました。pdfplumber も文字は残しましたが、文の途中に140個の改行が残りました。marker は文字の1.4%を失い、その中にはいくつかのセクション見出しも含まれていました。また全角の読点をすべてASCIIのカンマに変え、<sup> タグを152個追加しました。私たちのテストでは、中国語のPDFでは marker の出力に最も手直しが必要でした。

ライセンス:AGPL、MIT、Apache、そしてモデルの条件

イラスト:ライブラリごとに1枚のライセンスカードと、marker のモデルの重み用の別のカード
marker では、コードのライセンスがすべてではありません。モデルの重みには独自の条件があります。
  • pdfplumber: LICENSEファイルによるとMITです。ライセンス表示を残せば、クローズドソースや商用のコードでも使えます。
  • pymupdf4llm と PyMuPDF: リポジトリには GNU AGPL 3.0 が同梱され、パッケージのメタデータには「Dual Licensed - GNU AFFERO GPL 3.0 or Artifex Commercial License」とあります。簡単に言えば、これを使ったプログラムを配布したり、変更版をネットワーク越しにユーザーに提供したりする場合、Artifex から商用ライセンスを買わない限り、AGPLはそのプログラムのソースコードを同じライセンスで公開することを求めます。
  • marker: コードは Apache-2.0 ですが、モデルの重みは独自に変更された AI Pubs Open RAIL-M ライセンスです。MODEL_LICENSE によると、重みは研究、個人利用、総収入または資金調達額が500万ドル未満の組織には無料で、それを超える場合は Datalab のライセンスが必要です。

ライセンスが決め手なら、多くの商用チームにとって、軽量な2つのライブラリの間の本当の選択は AGPL か MIT かであり、marker にはさらに収益の基準があります。これは要約であって法的助言ではありません。何かを公開する前に、ライセンスファイルを読んでください。

よくある質問

pymupdf4llm・pdfplumber・marker のどれが最適ですか?

私たちのテストでは、一般的な文書と中国語のテキストには pymupdf4llm、MITで罫線のある表を正確に取り出すなら pdfplumber、罫線なしの表と繰り返しヘッダーのあるページには marker です。

pymupdf4llm は商用で無料で使えますか?

AGPLのもとでは、プログラムを配布したりサービスとして提供したりする際に自分のソースコードも公開するなら、使えます。そうでなければ、Artifex が商用ライセンスを販売しています。

marker にGPUは必要ですか?

いいえ。GPUなしの8 vCPUのマシンで動きましたが、llama.cpp の llama-server が必要で、軽量なライブラリより何倍も遅くなりました。

pdfplumber はMarkdownを出力できますか?

直接はできません。テキスト、単語、行、表を返すので、このテストで私たちがしたように、Markdownは自分で書きます。

スキャンしたPDFに対応しているのはどのライブラリですか?

marker はOCRモデルを中心に作られています。初期設定の pymupdf4llm と pdfplumber はテキスト層を読むので、スキャンは空になります。

このテストを再現できますか?

はい。スクリプト、バージョン、ハードウェアは上に記載しています。別のマシンでは時間は変わりますが、品質のスコアは変わらないはずです。