PDFをMarkdownに変換する:構造は残し、レイアウトのゴミは捨てる
PDFとは、ページのどこにインクを置くかを記述したものです。本当にそれだけです。「ここは見出し」「ここは表」と いった情報はファイルに焼き込まれていません。あるのは座標つきのグリフと、それを整って見えるように描画する エンジンだけです。PDFをそのままChatGPTに貼り付けると要領を得ない答えが返ってきがちなのは、これが理由です。 モデルが受け取っているのは、視覚的な階層をすべて剥ぎ取られた文字の並びだからです。
PDFをMarkdownに変換するという作業の中身は、その階層を組み立て直すことです。フォントの
サイズと太さは#や##の見出しになり、揃ったセルの格子はパイプ表になり、箇条書きの
記号はリスト項目になります。結果として手に入るのは、LLMが推測しながら読む文書ではなく、実際にたどれる
文書です。上のツールにファイルをドロップすれば数秒で終わります。無料、登録不要、こちら側には何も保存しません。
変換して実際に残るもの
変換の前に知っておくと、出てきたものへの期待値を正しく持てます。
- 見出し——相対的なフォントサイズと太さから推定します。字組みのスケールが一貫している レポートはきれいに変換できます。節ごとに違うデザインが当てられたPDFは、もう少し荒れます。
- 表——元の文書に本物の行と列の整列があれば、Markdownのパイプ表として組み直されます。 財務報告書、仕様表、データ付録でプレーンテキストではなくMarkdownを選ぶ最大の理由がこれです。
- リスト——箇条書きも番号付きも入れ子の深さが保たれるので、手順書や要件一覧が 読める形のまま残ります。
- 読み順——2段組みの学術論文は1本の流れに1次元化されます。たいていは正しく、 フローティングのサイドバーや引用の抜き出しがあると順序が混ざることがあります。
- 残らないもの——ページの装飾です。柱、フッター、ノンブルはAIに渡す文脈では ノイズでしかなく、落とされるのは損失ではなく機能です。
PDFのMarkdown変換とテキスト変換、どちらを選ぶか
文書の形そのものが意味を運んでいるならMarkdownです。節に分かれた論証を持つ論文、 番号付き条項の契約書、表だらけの年次報告書、コードブロックのある技術文書——どれも構造が情報です。 「第7.3条には何と書いてあるか」と尋ねられたモデルは、7.3が独立した単位であることを知っている必要があります。
散文だけが欲しいときはPDFをプレーンテキストにを 選んでください。コーパスを分類器に食わせる、キーワード解析をかける、構文記号で詰まる処理に流し込む—— こうした場面では、Markdownのパイプや井桁は純粋な余分です。
ページ上部の切り替えはこの2つを行き来し、すでに選んだファイルはそのまま引き継がれます。両方に変換して 見比べるのに、アップロードのやり直しは要りません。
ネイティブPDFとスキャンPDF:出力が空に見えるとき
同じ拡張子をまとった2種類のPDFがあり、振る舞いはまったく違います。
ネイティブPDF——Word、LaTeX、InDesign、あるいはブラウザの印刷ダイアログから書き出された もの——には、本物の埋め込みテキストが入っています。変換はほぼ無損失で、しかも速いです。 スキャンPDFは、紙の写真をPDFの容器に入れたものです。抽出すべきテキストは1文字もなく、 あるのはピクセルだけです。
判定は簡単です。PDFを開いて、カーソルで1文を選択してみてください。文字がハイライトされればネイティブで、 きれいに変換できます。ページ全体に選択の長方形がかぶるならスキャンです。スキャンの場合は先にOCRを かけてください。ほとんどのPDFリーダーに「テキストを認識」に相当する機能があります。余計にかかるのは 1分ほどで、出力品質の差は比べるまでもありません。
PDFをそのままアップロードすればいいのでは?
いまはたいていのチャットアシスタントがPDFのアップロードに対応しているので、これはもっともな疑問です。 それでも先に変換しておくほうが勝つ理由が3つあります。
- モデルが見ているものを自分でも見られる。PDFをアップロードして答えが悪かったとき、 モデルの推論が下手だったのか、抽出が原文を壊したのかは区別できません。手元にMarkdownがあれば、 その曖昧さは消えます。
- 送る前に編集できる。40ページの法務定型文を削り、重要な3ページだけを残す。安く、速く、 そして目に見えて答えが正確になります。
- 組み合わせが利く。Markdownのテキストは、システムプロンプトにも、RAGのパイプラインにも、 ファインチューニング用のデータにも、gitリポジトリにもそのまま入ります。PDFの添付ファイルはそうはいきません。
実務で効いてくるのは、出力の下にあるトークンカウンターです。60ページのレポートなら4万トークン前後に なることが多く、長文コンテキストのモデルなら余裕、小さいモデルなら予算超過です。貼り付ける前に分かるほうが、 エラーメッセージで知らされるよりましです。
実際に使われている場面
- 文献レビュー。論文をまとめて変換し、Markdownを連結して、手法上の食い違いを横断的に 探させる。節見出しが残るので、どの主張がどこから来たのかを追えます。
- 契約書レビュー。番号付き条項が番号を保つので、特定の義務について尋ねると、 言い換えではなく実在の条番号を挙げた答えが返ってきます。
- APIやベンダーのドキュメント。いまだにリファレンスをPDFで配る企業向けSDKは 珍しくありません。変換して、 GitHubリポジトリをテキストにした結果と 並べれば、コーディングアシスタントが仕様と実装を同時に見られます。
- 財務諸表。ここで効くのは表の再構成です。行と列が保たれていれば、モデルは 四半期をまたいだ数字の比較ができます。
- 講義資料と教科書。章を変換して要約させ、同じ資料から練習問題を作らせる。
もっときれいな出力を得るには
- そのPDFにテキストベースの兄弟——論文のHTML版、レポートの書き出し元のDOCX——があるなら、 そちらを変換してください。推定の工程が減るぶん構造が良くなります。 WordをMarkdownにや HTMLをMarkdownにをどうぞ。
- 巨大なPDFは変換前に分割してください。500ページのマニュアルも変換自体は通りますが、1つの コンテキストウィンドウには収まりませんし、本当に読みたい章だけを渡したほうが答えは良くなります。
- テキストとして組まれず画像として描かれた表は、再構成できません。OCRなしに読む手段がないからです。 表が重要なら、出力を確認してください。
- 貼り付ける前に最初の数百行に目を通してください。見出しレベルの崩れは10秒で見つかり、 モデルとの噛み合わない会話を丸ごと省けます。
よくある質問
PDFをオンラインでMarkdownに変換するには?
上でPDFをアップロードすれば、その下にMarkdownが表示されます。そのままコピーしても、.mdとしてダウンロードしてもかまいません。無料、登録不要、1ファイル50MBまでです。見出しは#のレベルに、リストは-の箇条書きに、表はパイプ表になるので、次にそれを読むものへ構造がそのまま渡ります。
PDFをMarkdownに変換すると表は残りますか?
残ります。プレーンテキストではなくMarkdownを選ぶ主な理由がこれです。表は行と列の対応を保ったままパイプ表になるので、「第3四半期の売上は」と尋ねられたモデルが、どの数字がどの見出しの下にあるのかを判断できます。同じ表をプレーンテキストに平坦化すると、その対応は二度と戻りません。
PDFの中の画像はどうなりますか?
図版、グラフ、写真はMarkdownには持ち越されません。出力はテキストレイヤーであって、素材一式ではないからです。あるページの意味が図の中にあるなら、そのページを画像として別に書き出し、画像をMarkdownににかけてください。絵の中に描かれた文字を読み取ります。
代わりに使えるPythonライブラリはありますか?
いくつかあります。pymupdf4llm、marker、doclingあたりが定番で、1万ファイルをパイプラインで回すならそちらが正解です。ただし、virtualenvとモデルの重み、GPUの時間も要求されます。次にClaudeやChatGPTへ送るメッセージまでに1本だけ変換したいなら、ブラウザのタブのほうが速いです。
LLMに渡すなら、PDFのMarkdown変換とテキスト変換のどちらが良いですか?
文書に構造があるならMarkdownです。モデルは膨大な量のMarkdownで学習していて、見出しや表の記法をそのまま読めます。「第4節を要約して」が機能するのは、第4節が文字どおり印付けされているからです。プレーンテキストに手を伸ばすのは、構文記号を消したいときだけ——ほとんどは埋め込み用のチャンク分割です。
ページ順と読み順は保たれますか?
1段組みの文書は、読み順どおりに安定して出てきます。2段組みの学術レイアウトもたいていは正しく1次元化されますが、引用の抜き出し、フローティングのサイドバー、脚注ブロックは、元の座標上でページの途中に置かれているせいで段落の途中に紛れ込むことがあります。正確さが要る用途に使う前に、ひととおり目を通す価値があります。
ツールキットの残り
PDFはここで扱える13形式のうちの1つです。File2Txt ならページを選ばずどれでも受け付けますし、目的が決まっているなら ExcelをMarkdownに(スプレッドシート向け)、 PowerPointをMarkdownに(スライド向け)、 EPUBをMarkdownに(電子書籍向け)へ直接どうぞ。
扱う対象がコードやWebなら、 GitHubリポジトリをテキストに、 GitLabプロジェクト、 ローカルフォルダを変換できます。Webページなら、 Web2TxtがURLをMarkdownに取り込みます。 LLM向けに文書を整える方法のガイド では、ここまでの話の一般論をもう少し長めに書いています。
Repo2Txtを開発・運営しているのは v12hero、 プライバシー最優先のネイティブアプリとWebアプリを作る独立系デベロッパーです。