LLMにPDFの内容を要約してもらいたい、Notionに過去の論文や契約書を整理したい、社内資料をMarkdown化してナレッジベースに突っ込みたい――やりたいことは単純なのに、いざやろうとすると「PDFのテキスト抽出」という前段で躓きます。
そこで作ったのが pdfmd.net です。PDFをアップロードすると、見出し・段落・表・数式・図のキャプションまで構造化されたMarkdownが返ってきます。
「GPT-5.5にPDF添付」と何が違うの?
「GPT-5.5にPDF添付して『Markdownにして』と頼めばいいじゃないか」と思う方もいると思います。それは正解で、1〜2ページの簡単なPDFなら十分です。
ではpdfmdは何が違うのか。3つのアプローチを比べるとこうなります。
GPT-5.5やClaudeに直接投げる場合、技術的にできることは実はかなり多いです。画像の抽出だって、Code Interpreterを使えば原理的には可能です。問題は「毎回自分でやらないといけない」こと、そしてコストです。
プロンプトが毎回必要 「表はMarkdownの表で」「数式はLaTeXで」「図はファイル名付きで参照して」「ZIPにまとめて」――これを毎回指示しなければ、出力品質はバラつきます。うまくいくときもあれば、図の参照が抜けていたり、表が崩れていたりします。
長い文書は精度が落ちる 50〜200ページの論文・報告書・仕様書を1回の会話で処理しようとすると、コンテキスト上限に引っかかって途中で切れたり、後半の変換品質が落ちたりします。
複数ファイルは1本ずつ手作業 10本の論文をMarkdown化したいとき、1本ずつアップロード・依頼・出力コピーを繰り返すことになります。
高性能モデルは1ページあたりのコストが高い GPT-5.5やClaude Sonnetクラスのモデルに大量のページを処理させると、コストがすぐ膨らみます。100ページの論文を10本変換するだけで、費用が気になり始めます。
pdfmdの仕組み
pdfmdはこれらを解決するために、変換プロセスをまるごと自動化しています。
PDFを受け取ると、ページごとに2種類の情報を取り出します。
- PNG画像(ページを丸ごと描画したもの)→ Vision LLMへの主入力
- テキスト(PyMuPDFで抽出)→ LLMが文字を読み取る際の補助ヒント
Vision LLMは画像を「正解」として構造を理解し、テキストを補助として使いながらMarkdownを生成します。テキスト抽出だけのツールと違うのは、構造の判断が画像ベースで行われる点です。2カラムレイアウトが混ざらず、表の形が保たれ、数式がLaTeXになるのはこのためです。
図・グラフはページから切り出して画像ファイルとして保存し、Markdown中に  という形で参照を埋め込みます。最終的に markdown+全画像をZIP にまとめて返します。
モデルとコストについて pdfmdはユーザー自身のAPIキーで動きます。使用するモデルはユーザーが指定でき、APIの料金はそのまま各プロバイダーに対してユーザーが支払います。デフォルトはGemini Flash Liteクラスの安価なモデルで、プロンプトとパイプラインを徹底的にチューニングすることで高精度な出力を実現しています。精度をさらに上げたい場面ではより高性能なモデルに切り替えることも可能です。このチューニング済みパイプラインを自分のAPIキーで動かせる点が、GPT-5.5に直接投げる場合との本質的な違いです。
操作はアップロードだけ。200ページの論文でも、待つだけで毎回同じ品質の結果が出てきます。
実際の変換結果で見る
複雑な数式:生の抽出とpdfmdを並べてみる
機械学習系の論文(Conditional GAN, arxiv:1906.05596)を例に、数式の変換結果を比較します。
Eq. 1:GAN minimax目的関数
まず論文PDFでの見た目がこちらです。
これをテキスト抽出ツールで取り出すと、行ごとにバラバラになります。pdfmdはLaTeXとして完全に復元します。
\\mathbb{E}(期待値記号)・添字・太字ベクトル $\mathbf{x}$・入れ子の括弧まで、見た目そのままの LaTeX が出てきます。
Eq. 9:場合分け(piecewise)関数
論文PDF上ではこの形です。
テキスト抽出だと場合分けの括弧と改行だけが残り、意味を失います。
\\begin{cases} 構文で場合分けが正しく表現されています。このMarkdownをNotionやObsidianに貼ると、数式が正しくレンダリングされた状態で読めます。
Eq. 5:分数・Frobeniusノルム
分数や多段添字の複合式も崩れません。
\\frac{1}{WH}(分数)、添字 \\theta_G、Frobeniusノルム \\|\\cdot\\|_F^2、\\Omega_{256} の添字まで正確に取れています。テキスト抽出では分子・分母が別行に分かれ、ノルム記号も崩れます。
表:記号の添字まで崩れない
半導体ADCのデータシート(LTC2228/2227/2226)を例に取ります。回路設計の仕様表には VCM、VIH、IIN のように添字つきの記号が大量に登場します。
論文PDF上の元の表はこちらです。
テキスト抽出では添字が消えて VCM、VIH、IIN のままになり、条件式 IOUT = 0 も数式ではなく文字列として取れます。pdfmdは添字を含む記号をすべてLaTeXで表現します。
VCM → $V_{CM}$、VIH → $V_{IH}$、IIN → $I_{IN}$、条件の IOUT = 0 → $I_{OUT} = 0$。添字の有無は記号の意味が変わる致命的な差で、テキスト抽出では避けられません。
ページまたぎ・図の挿入で分断された文を繋ぎ直す
2段組の学術論文(SIGMOD'18掲載のGPU並列アルゴリズム論文)を例に取ります。ページをまたぐ段落と、その途中に割り込む図があります。
元のPDFでは2ページにわたって段落が続いています。
テキスト抽出では、段落の途中にページフッター・セッション名・ページ番号が割り込み、さらに図の座標データが挿入されます。
❌テキスト抽出:段落の途中に「Research 15: Databases for Emerging Hardware」「SIGMOD'18, June 10-15, 2018, Houston, TX, USA」「1558」(ページ番号)が混入し、続いて図のデータ(Phase / Step / 0 1 2 3 4...)が並び、文の後半が全く別の場所に切り離されます。
✅pdfmd:前後の段落をひとつなぎに復元し、図は  として適切な位置に参照を挿入します。ページをまたいでも、図が割り込んでいても、文の意味が保たれます。
日本語の複雑なレイアウト:広報紙を変換してみる
日本語PDFの鬼門は「多段組」です。市区町村の広報紙のように、縦書きと横書きが混在し、3〜4カラムにぎっしり情報が詰まったレイアウトが特に厄介です。
試しに町田市の広報紙(1ページ)を変換してみます。
テキスト抽出ツール(PyMuPDF)の出力:
まちだ市民大学HATS
まちだ市民大学HATS
まちだ市民大学HATS ← 見出しが3回重複
受講生募集
襖
鴬 ← 装飾文字化け
横横横横横横横横横横横横横横 ← 罫線が文字化け
対市内在住、在勤、在学の、原則、全回出席できる方
場陶芸に関する講座=陶芸スタジオ(下小山田町)、
日9月10日~12月17日の月曜日 ← 別セクションが混入
人間関係学~人間関係の多様性と向き合 ← 読み順がバラバラ
玉 ← 縦書きが1文字ずつバラける
川
学
園
子
ど
も
ク
ラ
ブ
…
縦書き部分は1文字ずつ縦に並び、3カラムの内容が混ざり合い、罫線や装飾が文字化けします。これをLLMに渡しても、元の文書の意味を正しく読み取ることはほぼ不可能です。
pdfmdの出力:
## 催し ご参加を
### 玉川学園子どもクラブ ころころ児童館
#### 【7月のわくわくWeek「水鉄砲合戦~広場決戦の巻」】
自分の水鉄砲を持ってきて参加できます。びしょぬれになるので、
着替えが必要な方はお持ち下さい。
* **対** 小学生以上の方
* **日** 7月23日(月)~8月3日(金)、いずれも午後3時30分~5時(雨天中止)
※7月25日は休館日です。
#### 【学童・児童館合同企画~ボディペインティング】
* **対** 小学生以上の方
* **日** 8月6日(月) 午前10時30分~正午(雨天時は8月8日に延期)
**問** 同館 📞710・1475 FAX710・1476
### まちだ市民大学HATS 2012年度後期講座 受講生募集
* **対** 市内在住、在勤、在学の、原則、全回出席できる方
* **申** 7月25日正午~8月24日に電話でイベントダイヤル(📞724・5656)へ。
* **問** 生涯学習センター 📞728・0071 FAX728・0073
縦書き・横書き混在のカラムレイアウトを正しく読み解き、##→###→####の見出し階層、**対** **日** **申**のラベル、📞の電話番号、各イベントの読み順が完全に復元されています。
中国語・韓国語…多言語もそのまま
Vision LLMベースなので、言語による精度差がほとんどありません。中国語の学術論文を変換するとこうなります。
# CUDA 并行计算技术在情报信息研判中的应用
**摘要:** 文章在研究公安情报信息研判技术的基础上…
$$W_{ik} = \\frac{tf_{ik} \\log(N/n_k + 0.01)}{\\sqrt{\\sum_{k=1}^n [tf_{ik} \\log(N/n_k + 0.01)]^2}} \\tag{1}$$
対応言語は13言語(英語・日本語・簡体中文・繁体中文・スペイン語・フランス語・ポルトガル語・ロシア語・ドイツ語・トルコ語・韓国語・イタリア語・オランダ語)。UIも翻訳されています。
図やグラフも「説明」してくれる
棒グラフや散布図といった「テキストとして抽出できない情報」に対しても、pdfmdは画像を保存しつつ、その図が何を示しているかをキャプションとして書き残してくれます。

**Fig. 5.** Boxplots of Dice scores for various anatomical structures for ANTs,
NiftyReg, and VoxelMorph. Structures are ordered by average ANTs Dice score.
後でLLMに「この論文のFig.5は何を示している?」と聞いたときにちゃんと答えられる。
こんなときに使ってほしい
- 論文・契約書・社内資料を NotionやObsidianに移行したい
- 過去PDFをLLMのRAG用データとして整形したい
- ブログ記事の引用元としてPDFの一部をそのままMarkdown引用したい
- 多言語の資料を DeepL / GPT に渡す前処理として綺麗にしたい
逆に「PDF内のテキスト検索ができればいい」程度の用途なら、専用ツールやPDFビューアで十分です。pdfmdが効くのは、「Markdownにした後に何かをしたい」ユースケースです。
試してみる
pdfmd.net で、登録するだけで50ページ分を無料で試せます。1ポイント=1ページ、ファイルをアップロードしてしばらく待つと、Markdownと画像がZIPで降ってくる、というシンプルな仕様です。
APIキーも無料で用意できます。 pdfmdはユーザー自身のAPIキーで動きますが、Google AI Studio でGeminiのAPIキーを無料発行できます。デフォルトモデル(Gemini Flash Liteクラス)はAI Studioの無料枠で動くため、登録時の50ページはAPIコストも含めてまるごと無料で試せます。クレジットカードの登録も不要です。
「PDFをLLMに食わせるのに、いつもなんかうまくいかない」と思っていた方は、一度同じPDFをpdfmd経由で変換してから渡してみてください。たぶん、戻れなくなります。











