PDFを書式を崩さずにMarkdownに変換する

執筆 pdftomd.tools チーム · 更新日 · 約10分で読めます

短い答え:書式を崩さずにPDFをMarkdownに変換できるのは、Markdownでも表せる構造、つまり見出し・リスト・表・コードだけです。ファイルに本物のテキスト層があるか確認し、無料のPDF→Markdown変換ツールで変換して、結果を使う前に見出し・リスト・表をチェックしましょう。フォント、色、正確な間隔といった見た目のデザインは、決して引き継がれません。

イラスト:見出し・段落・表のあるPDFのページが、同じ構造のMarkdownファイルになる

Markdownで残る「書式」と残らない「書式」

PDFは、ページがどう見えるかを記述します。ISO 32000-2 で定義されたこの形式は、ページ上の位置にグリフを置き、フォント、線、画像とともに保存します。作成者がタグを付けない限り「これは見出し」という概念はなく、世の中のほとんどのファイルには使えるタグがありません。Markdownはその逆です。各ブロックが何か(見出し、リスト項目、表の行)を記録し、見た目は表示する側に任せます。

だから、PDFを書式を崩さずにMarkdownに変換するにはどうすればいいかと聞かれたら、正直な答えはこうです。「書式」は2つのグループに分かれます。構造は組み立て直せます。見た目は、Markdownにその記法がないので組み立て直せません。

変換で引き継げるもの
PDFの書式Markdownではメモ
見出し(大きな文字)はい文字サイズから再構成。レベルを確認
箇条書きと番号付きリストはい番号はコピーではなく書き直し
表はい、パイプテーブルとしてヘッダー行は1行、結合セルなし
リンク印刷されたURLのみ語句の裏のリンク先は読み取らない
等幅フォントのコードはい、コードブロックとして言語名は不明
太字と斜体私たちのツールでは不可文字の太さの解析が必要
画像と図いいえ別に書き出す
フォント、色、ページレイアウトいいえMarkdownにその記法がない
“Markdownの書式記法の最も重要な設計目標は、できる限り読みやすくすることだ。”
John Gruber, Markdown プロジェクトページ、Daring Fireball(翻訳)

この設計目標こそが、この交換に価値がある理由です。ページの正確な見た目を手放す代わりに、読みやすく、きれいなGitの差分が取れ、Wikiやチャットモデルに貼り付けられるプレーンテキストが手に入ります。CommonMarkの仕様が中心の記法を定義し、GitHub Flavored Markdown が表とタスクリストを加えています。

まずPDFを確認する:テキスト層、段組み、フォント

PDFを書式を崩さずにMarkdownに変換したいなら、変換の前から始めましょう。2分の確認で1時間の修正が省けます。好きなビューアーでファイルを開き、テキスト層を手早く確認します。文を1つ選択して、どこかに貼り付けてみてください。うまくいけば、ページには本物のテキストがあります。ページ全体が1つのブロックとして選択されたり、何も選択できなかったりするなら、それはスキャンしたPDF、つまり抽出できる文字のないページの写真です。

イラスト:虫眼鏡が2段組みのページで選択できるテキストの行を示し、隣には警告マークの付いたスキャンしたページ
選択できるテキストがあれば、変換ツールには読むものがあります。スキャンにはありません。

コマンドラインでは、Poppler の pdffonts がファイルのフォントを一覧表示します。言葉でいっぱいのページなのに一覧が空なら、スキャンである可能性が高いです。次に、出力のきれいさを左右する3つのレイアウトの特徴を見ます。

  • 段組み。 2段組みの論文やニュースレターでは、変換ツールが読む順番を推測しなければなりません。
  • 見出しのスタイル。 大きな文字で組まれた見出しは見つけやすいです。本文と同じ大きさで太字にしただけの見出しは、サイズで判断する方式からは普通の段落に見えます。
  • フォント。 等幅フォントのコードはコードブロックになれます。特殊なフォントのエンコーディングでは文字が四角や読めない記号になることがあり、どの変換ツールにも直せません。
スクリーンショット:私たちの変換ツールが画像だけのPDFで「抽出できるテキストがありません」と表示し、OCRを行わないことを伝えている
画像だけのファイルでの私たちの変換ツールのスクリーンショット:ファイルがスキャンのようで、OCRなしでテキスト層だけを読むことを知らせています。

ステップごとに:PDFを書式を崩さずにMarkdownに変換

この手順は、テキスト層を読むどの変換ツールでも使えます。私たちのツールを使うのは、何をしているか正確に説明できるからです。pdf.js でテキスト層を読み、単語を行にまとめ、大きさと位置から見出し・リスト・表・コードを組み立て直します。ファイルはアップロードされません。

  1. 変換ツールを開き、ファイルをドロップします。生のテキストが必要でない限り、「AIの痕跡を除去」は有効のままにします。
  2. プレビューの下の要約を読みます。 ページ数、文字数、見つかった表の数が表示されます。ページが多いのに文字がとても少ないなら、一部のページがスキャンです。
  3. プレビューを上から下へざっと見ます。 まず見出しのレベル、次にリスト、最後に表を見ます。
  4. .md ファイルをコピーかダウンロードし、エディターでプレビューと並べて開きます。
  5. 下のチェックリストで見つかったものを直し、結果をコミットするか貼り付けます。
スクリーンショット:私たちの変換ツールでPDFを書式を崩さずにMarkdownに変換。プレビューに見出し・リスト・表がある
スクリーンショット:見出し・リスト・表のある1ページのテスト用ファイルを、書式を崩さずにMarkdownに変換。要約には表を1つ見つけたと表示されています。

主にレポートやマニュアルを変換するなら、PDF MD 変換ツールのページで見出しとリストの規則を詳しく説明しています。表が中心のファイルなら、PDFの表をMarkdownに変換するガイドを読んでください。

見出し、リスト、表:確認すべき点

見出し・リスト・表は文書の構造の大部分を担っています。読む人が大事にする書式が残るかどうかは、これらで決まります。

見出し

変換で見出しを残すために、変換ツールは各行の高さを本文と比べます。私たちのツールは最も大きな段階を # から #### に割り当て、大文字だけの短い行も見出しとして扱います。確認するのは2点です。タイトルだけが # であること、そしてセクションとサブセクションのレベルが入れ替わっていないことです。本文より少しだけ大きく組まれた章のタイトルは、レベルが1つ下がることがあります。

リスト

箇条書きは記号(•、–、*)か、ピリオドや括弧の付いた数字から生まれます。番号付きの項目は毎回 1. と書かれ、Markdownでは1、2、3と表示されます。2行目に折り返したリスト項目に注意してください。PDFでは2行目はただの続きのテキストですが、同じ項目に残るべきです。

表

表は最も手作業が必要になりやすい部分です。罫線のある表や列がきれいにそろった表は、たいていうまく変換できます。12種類の表のレイアウトでの私たちのテストでは、表が1つある8つのレイアウトすべてと、表が2つあるページが想定どおりの行で返り、2段組みのテキストのページは正しく表なしになりました。90度回転した表は認識されませんでした。パイプテーブルでは表せないので、結合セルは分解されます。

失われるもの:太字・斜体、図、段組み

どんな書式もまったく失わずにPDFをMarkdownに変換できるツールはありません。形式そのものによる損失もあれば、特定のツールの限界による損失もあり、どちらなのかを知っておくと役立ちます。

  • 太字と斜体。 Markdownには **太字** と *斜体* があるので、これは形式ではなくツールの限界です。私たちの変換ツールはまだ強調を認識せず、印なしで言葉を出力します。警告など、意味を持つ場所には強調を足してください。
  • 図とグラフ。 これらはテキストではなく、描画や埋め込み画像です。飛ばされます。必要な画像は別に書き出し、![alt](file.png) でリンクしてください。
  • 脚注。 脚注のテキストは残りますが、印と脚注のつながりは残りません。重要なものは手で組み立て直します。
  • 複数段組みのレイアウト。 読む順番があいまいだと、段が混ざることがあります。各セクションの最初のページを確認してください。
  • 正確な間隔と改ページ。 ページの境目は取り除かれ、改ページで切れた段落は安全な場合に再結合されます。

繰り返しのヘッダー・フッターとページ番号は特別です。この書式はたいてい消したいものです。私たちの変換ツールは、ほとんどのページの上部や下部で繰り返される行を取り除くので、「年次報告書 · 7ページ」が段落の途中に現れることはありません。

仕上げのチェックリスト

イラスト:3つの項目にチェックの入ったチェックリストと、ペンが1行を直しているエディター

PDFを書式を崩さずにMarkdownに変換する最後のステップは、短い見直しです。エディターでプレビューを開いたまま、このリストを確認してください。一般的なレポートなら数分で終わります。

  • 先頭に # のタイトルが1つ、セクションには ##。飛んでいるレベルは直す。
  • 紛れ込んだヘッダーや画像のキャプションが見出しになっていない。
  • リスト項目がそろっていて、折り返した行が正しい項目に入っている。
  • どの表にもヘッダー行があり、すべての行のセルの数が同じ。
  • 結合セルや空のセルは埋めるか、表の下のメモで説明する。
  • 意味が変わる場所には強調を足す。
  • 図があった場所には画像のプレースホルダーかリンクを入れる。
  • リンクを足す:私たちの変換ツールは印刷されたURLをテキストとして残しますが、語句の裏のリンク先は読み取りません。

チャットモデルやRAGのインデックスでは、見出しがチャンクの境目になるので最も重要です。LLM向けのガイドでこの場合を扱っています。

別のツールが向いているとき(OCR、レイアウトモデル)

テキスト層を読む変換ツールは、ワープロ、スライドソフト、組版システムから書き出したファイルに向いています。次の3つの場合は、出力と格闘するよりツールを替えたほうがよいでしょう。

  • スキャン。 スキャンしたPDFには、まずOCRが必要です。OCRmyPDF はスキャンしたファイルに検索できるテキスト層を加えます。その後なら、テキストの変換ツールで読めます。
  • 複雑なレイアウト。 数式、複数段組みのページ、多数の表がある密度の高い論文には、Docling のようなレイアウトモデルを使うツールが、ページレイアウト、読む順番、表の構造への対応をうたっています。Pythonでローカルに動きますが、セットアップの手間が多くなります。
  • スキャンとテキストが混ざった大量のファイル。 marker はテキスト層とOCR、オプションのLLMの補助を組み合わせられます。商用で使う前に、モデルの重みのライセンス条件を確認してください。

何を選んでも、確認の手順は続けてください。ファイルに保存されていなかった書式は、どのツールにも残せません。運営についてのページに、OCRを含め、私たちの変換ツールにできないことをまとめています。

出典

  1. ISO 32000-2:2020 Document management — Portable document format — Part 2: PDF 2.0 — ISO, 2020
  2. CommonMark Spec, version 0.31.2 — CommonMark, 2024
  3. GitHub Flavored Markdown Spec — GitHub, 2019
  4. Markdown — Daring Fireball (John Gruber), 2004
  5. pdf.js — Mozilla
  6. pdffonts(1) manual page — Poppler / Debian
  7. OCRmyPDF — OCRmyPDF project
  8. Docling — Docling project

よくある質問

PDFを書式を崩さずにMarkdownに変換できますか?

構造は残せます。見出し、リスト、表、コード、ページに印刷されたURLです。フォント、色、段組み、正確な間隔といった見た目のデザインは、Markdownに記法がないので残せません。太字と斜体はMarkdownにありますが、私たちの変換ツールはまだ認識しません。

見出しが普通の段落になってしまったのはなぜですか?

私たちのものを含め、ほとんどの変換ツールは文字サイズで見出しを見分けます。太字でも本文と同じ大きさの見出しは、段落に見えます。# を手で足すか、元の文書を本物の見出しスタイルで書き出し直せないか確認してください。

PDFにテキスト層があるかどうか、どうすればわかりますか?

文を選択してコピーしてみてください。テキストとして貼り付けられれば、テキスト層があります。コマンドラインでは pdffonts file.pdf がファイルのフォントを一覧表示します。言葉でいっぱいのページでフォントがないなら、たいていスキャンです。

変換すると表はどうなりますか?

認識された表は、ヘッダー行が1つあるGitHub風のパイプテーブルになります。結合セルは先頭のセルと後ろの空のセルに分解され、複数ページにまたがる表はページごとに1つの表として返ります。対処法は表のガイドにあります。

スキャンしたPDFの変換はうまくいきますか?

テキスト層を読む変換ツールではうまくいきません。スキャンには読み取れる文字がないので、私たちのツールは「抽出できるテキストがありません」と表示します。先に OCRmyPDF などでOCRをかけ、その結果を変換してください。OCRには独自の誤りがあるので、スキャンでは書式が残る可能性は低くなります。

変換するとき、ファイルはアップロードされますか?

私たちの変換ツールではされません。PDFはブラウザのタブの中で pdf.js が読み取ります。サイトが何を収集するかはプライバシーのページで説明しています。