MarkItDown とは
MarkItDown は、Microsoft によるオープンソースの Python パッケージ兼コマンドラインツールで、MIT ライセンスです。言語モデルやテキスト分析のために、さまざまなファイルを Markdown に変換します。PDF、Word、PowerPoint、Excel、HTML、CSV、JSON と XML、EPUB、ZIP アーカイブなどです。画像の説明文と音声の文字起こしには、ウェブ上のサービスを使います。
強みは対応範囲の広さで、さまざまなオフィスファイルが混ざったフォルダ全体を 1 回の呼び出しで処理できます。PDF については、組み込みの変換処理が pdfminer.six で文字を取り出し、フォームや表のように組まれたページには pdfplumber を使います。
pdftomd は MarkItDown ではなく、MarkItDown を動かしてもいません。 PDF 専用に作られた別の変換ツールで、ブラウザの中で動きます。このページでは両者の違いと、必要なら MarkItDown を自分で動かす方法を説明します。
MarkItDown の動かし方
Python 3.10 以降が必要です。PDF 用の依存パッケージだけを付けてインストールします。
pip install 'markitdown[pdf]'
コマンドラインでファイルを変換します。
markitdown report.pdf -o report.md
Python からはこうです。
from markitdown import MarkItDown
md = MarkItDown()
result = md.convert("report.pdf")
print(result.markdown)
私たちのベンチマークでは、バージョン 0.1.9 でまさにこれを実行しました。Word、PowerPoint、Excel などほかの形式も使うなら、[pdf] の代わりに 'markitdown[all]' を指定します。
PDF から得られるもの
公開されている 16 個の PDF で試したところ、MarkItDown 0.1.9 の出力は次のとおりでした。
- 見出しのないプレーンテキスト。 どの文書にも
#の見出しが 1 つも付かず、報告書や論文の構成が失われました。 - PDF の改行とハイフンがそのまま。 文は PDF の行末で切れ、
pur- suantのように行末のハイフンで分かれたままの語が 307 個残りました。 - ヘッダーとフッターが残る。 毎ページ繰り返し出てきます。
- 論文で文字が欠ける。 3 本の研究論文では、出力から語のおよそ半分から 4 分の 3 が抜けていました。
- スキャンからは何も出ない。 標準のインストールには PDF 用の OCR がないため、スキャンしたページは空でした。プラグイン
markitdown-ocrを入れると、自分で設定した API を通じてページ画像を視覚モデルに送り、OCR を追加できます。
シンプルな文書ではうまくいきました。判決文、申請書類、中国語・日本語・韓国語の文書は、すべての語が残りました。文書ごとの詳しい数字はベンチマークにあります。
同じ PDF を pdftomd で
| MarkItDown 0.1.9 | pdftomd | |
|---|---|---|
| 動く場所 | Python、あなたのマシン上 | ブラウザ、あなたのマシン上 |
| インストール | pip install 'markitdown[pdf]' | 不要 |
| 対応形式 | PDF、Office、HTML、EPUB など | |
| 見出し | なし | あり(文字の大きさと太さから判断) |
| 段落 | PDF の改行のまま | 行をつないで段落に |
| ヘッダー、フッター、ページ番号 | 残る | 削除(残すスイッチあり) |
| 行末のハイフン | 残る | 単語リストで確認してつなぐ |
| 表 | テキストとして、フォーム状のページでは表として | Markdown の表、表のあるページに印 |
| スキャン PDF | クラウドの視覚モデルを使うプラグイン | ブラウザ内の OCR を内蔵 |
| トークン数と RAG チャンク | なし | あり |
| ライセンス | MIT | 無料で利用可 |
Word や PowerPoint のファイルも変換したい場合や、Python でパイプラインを組んでいる場合は、MarkItDown のほうが実用的です。PDF なら、特にいますぐ結果が欲しいなら、このページの上にある変換ツールを使ってください。
よくある質問
MarkItDown の公式サイトはありますか?
MarkItDown は Python パッケージと GitHub で公開されています。Microsoft はウェブサイトとしては提供していないので、「MarkItDown オンライン」と名乗るサイトは第三者が運営しており、裏で動くエンジンもサイトごとに違います。pdftomd は MarkItDown を動かしておらず、ファイルをアップロードすることもありません。
MarkItDown はスキャン PDF を読めますか?
標準のインストールでは読めません。自分で設定した視覚モデルに画像を送る markitdown-ocr プラグインを追加するか、Microsoft の有料クラウドサービスである Azure Document Intelligence のオプションを使います。pdftomd は、ブラウザの中で動く OCR モデルでスキャンを読みます。スキャン PDF を Markdown にをご覧ください。
LLM に文書を渡すにはどちらがよいですか?
PDF なら、見出しがあり、段落がつながり、ヘッダーの繰り返しがない出力のほうが、モデルにとって追いやすく、トークンも少なくて済みます。pdftomd はトークン数も表示し、文書をチャンクに分けることもできます。LLM 向け PDF から Markdown へをご覧ください。
Python ではほかにどんな選択肢がありますか?
PyMuPDF4LLM、Docling、Marker はどれも PDF を Markdown に変換でき、それぞれ強みとライセンスが異なります。Python で PDF を Markdown にに、それぞれ動くコードがあります。
MarkItDown は Microsoft のプロジェクトです。pdftomd は独立したサービスで、Microsoft とは関係ありません。