PDFをMarkdownに変換してLLMのトークンを節約する:MarkItDown完全ガイド

PDFをそのままClaudeやLLMに渡すと、知らないうちにトークンを浪費します。各ページが画像にも変換されるからです。MarkItDown(マイクロソフトの無料オープンソースツール)でまずMarkdownに変換すれば、トークン料金を最大80%削減できます。CLI、Python、MCPの設定まで網羅した完全ガイド。

20ページのPDFをClaudeに放り込み、質問を一つ投げると、答えはちゃんと返ってきます。あなたに見えていないのは、その請求です。あなたの質問が読まれるより前に、その文書だけで数万トークンを飲み込むことがあります。これをチームで一日に何度も繰り返せば、きれいなテキストでまったく問題なかったはずのモデルに、生のPDFをただ流し込むために本物のお金を払っていることになります。

無料の解決策があり、しかも最初からずっと目の前にありました。まずファイルをMarkdownに変換するのです。本ガイドでは、なぜPDFがこれほど高くつくのか、どれだけ節約できるのか、そしてマイクロソフトのオープンソース変換ツール MarkItDown を使って、たった一つのコマンドで変換する方法を正確に説明します。

なぜPDFはこれほどトークンを消費するのか

ここが誰も教えてくれない部分です。PDFをLLMに渡すとき、それはあなたが読むようには読まれません。Anthropic自身のPDFドキュメントによれば、システムはすべてのページに対して二つのことを行います。

  1. ページからテキストを抽出する。
  2. ページ全体を画像に変換し、その画像をテキストと一緒に送る。

この二つ目のステップこそが、静かなトークンの落とし穴です。モデルは単に単語を読んでいるだけでなく、グラフや表、レイアウトを理解できるよう、各ページの写真も見ているのです。あなたはその両方に料金を払います。

Anthropicの数字を見ると、そのコストが具体的になります。抽出されたテキストだけでも、密度に応じて1ページあたり1,500から3,000トークンかかります。それに加えて、すべてのページが画像分のコストを抱えます。Amazon Bedrock連携から得られた示唆に富むデータがあります。フルのビジュアルPDFモードは3ページのPDFでおよそ7,000トークンを使うのに対し、同じ3ページのプレーンテキスト抽出はおよそ1,000トークンしか使いません。これは7倍の差であり、その差はまるごとページごとの画像によるものです。

これを現実の文書に当てはめてみましょう。びっしり詰まった20ページのレポートは、各ページが画像にラスタライズされると、40,000から70,000トークンのどこかに着地し得ます。あなたはまだ何も尋ねていません。ただファイルを開いただけです。

20ページの文書を1つのPDFとして送った場合と、同じ文書をMarkdownに変換した場合のトークンコストを比較した棒グラフ。PDFは抽出テキストのトークンとページごとの画像トークンを積み上げておよそ48,000トークンになるのに対し、Markdown版はテキストのトークンだけでおよそ11,000トークン、約77パーセント少ない。

オレンジ赤のブロックは純粋な余分コストです。ページに見るべきビジュアルがあろうとなかろうと、各ページに1枚の画像がつくのです。

解決策:代わりにきれいなMarkdownを渡す

ほとんどの文書は、見られる必要がありません。契約書、仕様書、研究論文、箇条書きだらけのスライド資料、これらはすべてレイアウトをまとったテキストです。レイアウトを剥ぎ取って構造を保てば、モデルが本当に必要としていたものは何も失われません。

それこそMarkdownが与えてくれるものです。これはフォーマットとしてはプレーンテキストにかなり近い一方で、重要な構造はきちんとエンコードします。見出し、リスト、表、リンク、コードブロック、太字や強調です。主要なLLMは膨大な量のMarkdownで訓練されているため、ネイティブに、しかも難なく解釈します。MarkItDownを開発するマイクロソフトは、こう端的に述べています。Markdownは「プレーンテキストに極めて近く、マークアップや書式は最小限でありながら、文書の重要な構造を表現する手段を依然として備えている」。

PDFをMarkdownに変換すれば、ページごとの画像をまるごと取り除けます。ラスタライズされたページもなく、ビジョンの余分コストもなく、モデルがどのみち読むつもりだった構造化テキストだけが残ります。節約はそこから生まれます。

MarkItDown、マイクロソフトの無料変換ツールを紹介する

MarkItDown は、マイクロソフトによる軽量なPythonユーティリティで、寛容なMITライセンスの下で公開され、135,000を超えるスターを集めるGitHub屈指の人気開発者ツールの一つです。その唯一の仕事は、雑然とした現実世界のファイルを、LLMが安く読めるきれいなMarkdownに変えることです。

これはPDF専用ツールではありません。長いリストのフォーマットを変換できます。

  • PDF 文書
  • Word.docx
  • Excel.xlsx.xls
  • PowerPoint.pptx
  • 画像、画像内のテキストに対するEXIFメタデータとOCR付き
  • 音声、メタデータと音声書き起こし付き
  • HTML ページ
  • CSVJSONXML データ
  • ZIP アーカイブ(中身をたどります)
  • YouTube のURL(書き起こしを取得します)
  • EPub 電子書籍
  • Outlook メッセージ(.msg

一つのツール、一つの出力フォーマットで、これまでなら重いバイナリとしてモデルに投げていたであろうほぼすべてを扱えます。

MarkItDownを30秒でインストールする

ごく普通のPythonパッケージです。すべてを入れるには、all のエクストラをインストールします。

pip install 'markitdown[all]'

一部のフォーマットだけが必要で、より軽いインストールにしたいなら、そのエクストラだけを指定します。

pip install 'markitdown[pdf, docx, pptx]'

利用可能なオプションには、[all][pdf][docx][pptx][xlsx][xls][outlook][audio-transcription][youtube-transcription] などがあります。

コマンドラインからPDFをMarkdownに変換する

最速の経路はCLIです。ファイルを指定して、出力を好きな場所へ送ります。

markitdown report.pdf -o report.md

あるいは、同じことをする単純なリダイレクトを使います。

markitdown report.pdf > report.md

ファイルをそのままパイプで流し込むこともできます。

cat report.pdf | markitdown

これでワークフローの全体です。これであなたは、どんなモデルにも渡せて、リポジトリに置けて、チャットに貼り付けられる report.md を手にしました。しかも元の何分の一かのコストです。

ワークフロー図:PDF、DOCX、XLSX、PPTXといったソースファイルがMarkItDownに流れ込み、1つのきれいなMarkdownファイルを出力し、それが大規模言語モデルやコーディングエージェントに渡される。トークンのマーカーが経路に沿って移動し、文書がパイプラインを通っていく様子を示している。

重いファイルが入り、エージェントがすぐ使えるMarkdownが出る。その間にあるのは一つのコマンドだけ。

Pythonで変換する(そしてフォルダまるごと一括処理する)

これをパイプラインに組み込むなら、Python APIも同じくらい短く済みます。

from markitdown import MarkItDown

md = MarkItDown(enable_plugins=False)
result = md.convert("report.pdf")
print(result.text_content)

result.text_content があなたのMarkdown文字列で、ディスクに書き出すなりモデルに渡すなり、すぐ使えます。文書のフォルダをまるごと一度に変換するには、ループを回します。

from pathlib import Path
from markitdown import MarkItDown

md = MarkItDown(enable_plugins=False)
for src in Path("docs").glob("*.pdf"):
    out = src.with_suffix(".md")
    out.write_text(md.convert(str(src)).text_content, encoding="utf-8")

これを一度走らせれば、高くつくPDFのディレクトリが、安価で構造化されたMarkdownのディレクトリに変わります。どのエージェントも、ビジョン税を再び払うことなく、毎ターン読めるようになります。

実際にどれだけ節約できるのか

正直な答えはこうです。文書次第ですが、効果は大きく、かつ安定しています。テキスト中心の典型的なファイルでの、おおよその姿は次のとおりです。

モデルに送るPDFMarkdownに変換
抽出テキストありあり
1ページにつき1画像あり、全ページなし
ビジョンの余分コストフルなし
3ページ文書(Bedrockの数字)約7,000トークン約1,000トークン
20ページ文書(推定)40,000から70,000トークン10,000から15,000トークン

価値が言葉のうちにある文書なら、Markdownへの変換はトークンコストをゆうに半分以上、しばしば80%以上削減します。この節約に魔法はありません。モデルがテキストだけを必要としていたのに各ページの写真を送るという、その支払いをもうしないだけのことです。

もちろん、Markdownが文字どおり無料というわけではありません。抽出されたテキストには依然としてトークンがかかります。しかしそのテキストのコストは、どのみち必ず払うことになっていた下限です。あなたが取り除くのは、その上に乗っていたページごとの画像の積み重ねです。

PDFのまま残すべきとき(最適化しすぎない)

変換は正しいデフォルトであって、万能のルールではありません。視覚的なレイアウトそのものが要点であるときは、元のPDFを残しておきましょう。

  • モデルに本当に読ませる必要があるチャートやグラフ。 意味が棒グラフの中に宿っているなら、その画像は本物の仕事をしています。
  • スキャンされた文書、つまりテキストの画像。MarkItDownはOCRにかけられますが、認識が不安定なら、モデル自身のビジョンのほうがページをより確実に読むこともあります。
  • 複雑な視覚的な表やフォーム、位置や整列が意味を担っていて、Markdownでは平坦になってしまうもの。
  • インフォグラフィックやデザイン重視のページ、レイアウトそのものが内容であるもの。

それ以外のすべて、つまりほとんどの文書では、Markdownの勝ちです。

判断のための図:チャート、スキャンされたページ、複雑な視覚的な表など、文書の視覚的なレイアウトが本当に必要かどうかを問う。必要なければ、トークンを節約するためにMarkdownに変換する、これが推奨される道。必要なら、モデルのビジョンがページの画像を直接読めるようPDFのまま残す。

問いは決して、抽象的な「PDFかMarkdownか」ではありません。「モデルはこのページを見る必要があるのか、それともただ読めばいいのか」です。

PDFの先へ:Word、Excel、PowerPoint、そしてYouTubeまで

同じ一行のコマンドが、あなたの文書の山の残りにも効きます。Word文書、スプレッドシート、スライド資料、ウェブページ、さらにはYouTube動画の書き起こしまで、すべて同じやり方できれいなMarkdownへと崩れ落ちます。

markitdown deck.pptx -o deck.md
markitdown budget.xlsx -o budget.md
markitdown https://www.youtube.com/watch?v=VIDEO_ID -o transcript.md

あなたのワークフローが、Officeファイルやウェブから定期的にコンテキストを取り出してモデルに渡すものなら、まずすべてをMarkdownに標準化することは、身につけられる中で最も安く、最も効果の高い習慣の一つです。

MarkItDown MCPサーバーでコーディングエージェントに組み込む

コーディングエージェントを使っているなら、これはさらに良くなります。MarkItDownは公式のMCP(Model Context Protocol)サーバーを同梱しているので、あなたのエージェントは、あなたが手作業で何かを走らせなくても、タスクの途中で自分でファイルを変換できます。

インストールして、stdio経由で起動します。

pip install markitdown-mcp
markitdown-mcp

このサーバーは convert_to_markdown(uri) という単一のツールを公開し、uri には http:https:file:data: のいずれのURIも使えます。一度エージェントに組み込めば、PDFやスプレッドシート、ウェブページを取得してオンデマンドでMarkdownに変え、その間ずっとビジョンの料金ではなくテキストトークンの料金を払うようになります。

これはまさに、複数のエージェントを動かしているときに効いてくる類のものです。マルチエージェントのコックピットである AgentsRoom では、MCPサーバーを一度設定すれば、ルーム内のすべてのエージェントがそれを引き継ぎます。参照用の文書を .md に変換し、リポジトリにコミットしておけば、各エージェントは同じPDFを何度も繰り返しラスタライズする代わりに、毎ターン安価で構造化されたテキストを読みます。単一のセッションを軽く保つのと同じ規律が、艦隊全体を手頃に保ちます。これは、コーディングエージェントを並列で動かし、その一つひとつが共有コンテキストを読んでいるときに効いてきます。

これはまた、優れたエージェント構成がすでにコンテキストを管理しているやり方とも自然に噛み合います。AGENTS.md コンテキストファイルを維持しているなら、それを生のPDFではなく軽量な .md 参照に向けることで、コンテキストウィンドウを引き締められます。これは、コンテキストのドリフトを捉えるカナリアのトリックで扱ったとおり、どんな長いセッションでも戦いの半分を占めます。

まとめ

生のPDFをLLMに食わせることは、気づかぬうちに払い続けてきた税金です。各ページが静かに画像へと変えられているからです。MarkItDownはその税金を無料で取り除きます。一つのコマンドでほぼどんなファイルもきれいなMarkdownに変わり、トークンコストを最大80%落とせて、しかもモデルは同じくらい良く、しばしばより良く答えます。ページの写真に目を凝らす代わりに、構造を読んでいるからです。

まず変換し、それから尋ねましょう。あなたのトークンの請求も、コンテキストウィンドウも、どちらも感謝してくれるはずです。

一つのターミナルではなく、エージェントのチーム全体でこれを動かす準備はできましたか。AgentsRoomをダウンロードして、各エージェントが何に対応しているかをプロバイダー互換性マトリクスで確認し、マルチプロバイダー対応について詳しく読んでみてください。

AgentsRoomをダウンロード

あなたのAIエージェント(Claude、Codex、OpenCode、Gemini CLI、Aider)を単一のウィンドウから実行します.

無料AgentsRoomをダウンロード

コンパニオンアプリ:外出先でもエージェントを確認

Claude、Codex、Gemini CLI、またはその他の AI プロバイダーを使用します。

拡張機能を入手
Chrome Web Store

バグや要望を公開バックログに直接送信できます。

実際の AgentsRoom の様子。

マルチプロジェクト
マルチプロバイダー
マルチエージェント
ライブステータス
ファイル差分
モバイルアプリ
ライブプレビュー
エージェントチーム
ブラウザテスト
バックログ駆動開発
プロンプトライブラリ
スキルライブラリ
すべての機能を見る