LLM 向け PDF から Markdown へ

ChatGPT、Claude、自分のパイプライン向けのきれいな Markdown。トークン数が常に見え、削るたびに何トークン減るかがわかり、チャンクは JSONL でダウンロードできます。

ここに PDF をドロップ

貼り付けやファイル選択でも追加できます。一度に 20 件まで、このタブの中で変換します。

手元にファイルがなければ、こちらで試せます:

ファイルはこのブラウザタブの中で読み込まれ、アップロードされることはありません。

PDF ではなく Markdown をモデルに渡す理由

チャットに PDF を添付すると、アプリが文字を取り出してくれますが、モデルが実際に何を受け取ったかは見えません。先に自分で変換すると、3 つの利点があります。

  • 文字が見える。 崩れた表、混ざった段組み、文字のないページが、モデルを混乱させる前にわかります。
  • 構造が残る。 見出し、リスト、表がモデルの読みやすい Markdown として残り、平たい行の連続になりません。
  • トークンが減る。 ページ番号、繰り返しのヘッダー、行末のハイフン、レイアウトの余白が取り除かれるので、コンテキストウィンドウをより多く中身に使えます。

このページは最初からそのための設定で開きます。画像は含めず、各ページの始まりに <!-- Page N --> というコメントを入れてモデルがページを引用できるようにし、画像の行は削ります。

信頼できるトークン数

Markdown の上の数字は、コピーまたはダウンロードする内容の正確なトークン数で、フロントマターとページの区切りも含みます。GPT-4o 以降の OpenAI モデルが使うエンコーディング o200k_base で数えています。Claude をはじめ他のモデルは独自のトークナイザーを使うため、それらには正確な値ではなく近い目安として見てください。

LLM 向けに削るの各スイッチは、オンにする前に、そのファイルで何トークン減るかを表示します。

スイッチすること
リンク先の URL を削るリンクの文字は残し、URL を消す
太字と斜体を外す** と * の記号を消す
画像の行を削る画像の代わりの表示もリンクも出さない
HTML タグをただの文字に<sup>、<sub>、<br> をただの文字にする
文字を正規化fi のような合字を fi に、変わった空白を普通の空白に
表を詰める空の列とセルの余白を取り除く

PDF を読み直さないので、スイッチはミリ秒単位で反映されます。

RAG 用のチャンク

検索には、埋め込みにできるくらい小さく、それだけで意味の通じる断片に分けた文書が必要です。チャンクタブが Markdown を分けてくれます。

  • まず見出しで区切る。 できる限り節の途中からは始めないので、各チャンクは 1 つの話題を扱います。
  • 選んだトークン上限以内に収めます。256 から 8,192 トークンまで選べます。上限より大きい節は文の切れ目で、大きな表は行の切れ目で分け、見出し行を繰り返します。
  • 見出しの道筋付き。 各チャンクは 手法 › データ収集 のように自分の上にある見出しを知っていて、それを先頭に付けられます。検索で取り出されたチャンクも、どこから来たかがわかります。
  • ページ番号付き。 回答から元の 12 ページ目を指し示せます。

JSONL をダウンロードすると、1 行に 1 つの JSON オブジェクトが入っています。

{
  "id": "report.pdf#3",
  "source": "report.pdf",
  "chunk": 3,
  "headings": ["Methods", "Data collection"],
  "page_start": 4,
  "page_end": 5,
  "tokens": 812,
  "text": "..."
}

数行のコードで、使っているベクトルストアに読み込めます。

うまくいく手順

  1. PDF をドロップし、まず確認するページを見ます。おかしなページは直すか OCR にかけます。
  2. 節約に見合う削り方をオンにします。モデルに出典を示させたいならリンクは残します。
  3. チャットなら Markdown をコピーして貼り付けます。パイプラインなら JSONL のチャンクを使います。

すべてブラウザの中で行われます。これはここで大事な点です。モデルに渡す文書は、社内報告書や契約書、研究資料など、また別のサービスにアップロードすべきでないものが多いからです。

よくある質問

LLM にはプレーンテキストより Markdown のほうが本当によいのですか?

構造のある文書なら、たいてい役に立ちます。見出しは節の入れ子関係をモデルに伝え、表は各数字をそのラベルの隣に保ちます。散文 1 ページだけなら差は小さいでしょう。スイッチで構造を残すか外すかを選べます。

チャンクの大きさはどのくらいがよいですか?

文書への質問応答なら、まず 512 か 1,024 トークンから始めてください。小さいチャンクは狭い質問にぴったり合い、大きいチャンクは文脈をまとめて保ちます。チャンクタブの下の要約に数と最大のチャンクが出るので、効果をすぐ確認できます。

トークンは端末の中で数えていますか?

はい。トークナイザーは、変換ツールのほかの部分と同じくタブの中で動きます。数えるために OpenAI やほかの誰かへ何かを送ることはありません。

データセット用に多くの PDF を処理できますか?

一度に 20 個までドロップし、すべてを 1 つの .zip でダウンロードできます。数千ファイルならスクリプトのほうが向いています。Python で PDF を Markdown にをご覧ください。