PDFから表形式データを抽出する4つの方法
PDFから表をコピーしてExcelに貼り付けると、値がごちゃ混ぜのまま1列に並んだり、何も貼り付けられなかったりします。それはあなたのせいではありません。PDFはそもそも表というデータを保存していないのです。このガイドでは、実際に機能する4つの方法を、手軽なコピペのコツからスキャン文書に対応できるツールまで比較し、ファイルに合った方法を選べるようにします。
なぜPDFの表は抽出が難しいのか
PDFには「表」という概念がありません。行と列に見えるものは、x/y座標に配置された個々のテキスト断片にすぎず、間に線が描かれていることがあるだけです。「表」は見る人の目の中にしか存在せず、ファイルにはセルも行もヘッダーも保存されていません。
したがって、あらゆる抽出方法は「再構築」です。どのテキスト断片が同じセルに属するか、どのセルが1つの行を構成するか、列がどこから始まるかを、アルゴリズムが推測します。罫線のある表(グリッド線が見えるもの)は再構築しやすい一方、空白区切りの表、結合セル、複数行にまたがるセル、複数ページに続く表は、多くのツールが失敗する箇所です。
スキャンPDFはさらに厄介です。ページ全体が写真なので、OCRを実行するまでテキストが一切存在しません。自分のドキュメントがどの問題を抱えているかに応じて方法を選びましょう。
方法1:Excelへのコピペ(手軽、小さな罫線付きの表向け)
罫線がしっかりある単純な表なら、PDFビューアで表を選択してコピーし、ExcelやGoogle Sheetsに貼り付けます。すべてが1列に入ってしまった場合は、Excelの「データ → 区切り位置」またはGoogle Sheetsの「データ → テキストを列に分割」で値を分割し直します。
便利なテクニックとして、まずプレーンテキストエディタに貼り付けて、どんな構造が残っているか確認する方法があります。値が一定のスペースやタブで区切られていれば「区切り位置」で表を復元できますが、行が入り混じったり途切れたりしている場合は、どう分割しても直りません。
有効な場面:セルの値が短い、1ページ完結の罫線付きの表。失敗する場面:結合セル、セル内の複数行テキスト、桁区切り付きの数値がバラバラに分割されるケース、そしてスキャン文書全般です。
方法2:Excel Power QueryまたはWord(追加ツール不要の標準機能)
新しいExcelはPDFの表を直接インポートできます:「データ → データの取得 → ファイルから → PDFから」。Excelがドキュメントをスキャンして検出した表を一覧表示し、プレビューを見せてくれるので、表を選んで「読み込み」をクリックすれば、そのままスプレッドシートの範囲になります。Windowsでは最良の標準機能です(Microsoft 365または2021以降のライセンスが必要で、Excel for Macでは利用できないバージョンもあります)。
WordもPDFを直接開けます(「ファイル → 開く」でPDFを選択)。ドキュメントが編集可能なファイルに変換され、単純な表なら本物のWordの表として残ることが多いため、そこからExcelへコピーできます。
有効な場面:罫線が明確な、デジタル作成のPDF。失敗する場面:空白区切りだけの表は見落とされたり誤分割されたりしがちで、複数ページの表は別々の断片としてインポートされます。スキャンPDFからは何も取れません。Power QueryはOCRを行わないためです。
方法3:Pythonライブラリ — camelot・tabula-py・pdfplumber(開発者向け)
多数のPDFからプログラムで表を抽出する必要があるなら、定番のオープンソースはcamelot(罫線付きの表に最も強く、2つの検出モードを持つ)、tabula-py(Java製Tabulaエンジンのラッパーで、一貫したレイアウトに強い)、pdfplumber(単語・線・矩形を低レベルで制御でき、独自ロジックが必要なときに最適)です。
camelotの最小例:pip install camelot-py[cv] のあと、tables = camelot.read_pdf("report.pdf", pages="all") を実行し、tables[0].df でpandasのDataFrameが得られます。.to_csv() や .to_excel() でエクスポートできます。
落とし穴:各ライブラリには得意なレイアウトスタイルがあり、実際のドキュメントはスタイルが混在します。ドキュメントの種類ごとに設定のチューニング(camelotの flavor="stream" と "lattice" の切り替え、tabulaの領域指定など)が必要になると考えてください。また、いずれもスキャンPDFは処理できません。先にOCRを実行する必要があり、その過程でレイアウトが失われます。
表以外も含めたPythonでのPDFパース全般については、PythonでPDFをMarkdownに変換するガイドをご覧ください。
方法4:AIによる抽出(スキャンPDF・混在レイアウト・大量処理)
最も新しいアプローチは、人間と同じようにページを読むドキュメント理解モデルを使う方法です。罫線や座標のヒューリスティクスに頼らず、視覚的なレイアウトから表構造を検出します。スキャン文書、撮影されたページ、不揃いなレイアウトを1回の処理で扱えるのは、この方式だけです。
ParseJetはこの方式で動作します。parsejet.com/tools/pdf-to-markdown にPDFをアップロードすると、表が読み順どおりのクリーンなMarkdownの表として返ってきます。スキャンページは自動的にOCRされます。テキストではなくデータが欲しい場合は、APIがパース済みドキュメントを構造化出力で返します(PDF JSON 変換ツールを参照)。ファイル1件につきPOST 1回なので、バッチパイプラインでも実用的です。
有効な場面:スキャン・撮影された文書、罫線と空白区切りが混在するレイアウト、ドキュメントごとのチューニングが不可能な大量処理。トレードオフはホスト型サービスであること。きれいなPDFの表を1回だけ取り出すなら、方法1や2のほうが早く済みます。
結局どの方法を使うべきか
小さな罫線付きの表を1回だけ:コピペ(方法1)。貼り付けが崩れたらExcel Power Query(方法2)にフォールバックします。
同じレイアウトの定期レポート:スプレッドシート派はPower Query、開発者はcamelotまたはtabula-py(方法3)。一度のセットアップが、以後のすべてのファイルで効いてきます。
スキャン文書、写真、乱れた混在レイアウト:現実的に再入力なしで済む唯一の選択肢はAI抽出(方法4)です。
レイアウトがバラバラな数百件のドキュメント:API経由の方法4。方法3のライブラリをドキュメントごとにチューニングするやり方は、レイアウトの種類が数個を超えるとスケールしません。
スキャンも含め、あらゆるPDFから表を抽出
PDFをアップロードすると、すべての表が読み順どおりのクリーンなMarkdownで返ってきます。スキャンページは自動OCR。無料で試せて、登録は不要です。
PDF Markdown 変換を試すよくある質問
PDFの表をExcelに抽出するにはどうすればいいですか?
まずExcel標準のインポートを試してください:「データ → データの取得 → ファイルから → PDFから」で、検出された表を選びます。空白区切りやスキャンの表でよくあるように、Excelが表を見落としたり崩したりする場合は、ParseJetのようなAIツールで抽出し、Markdownの表をExcelに貼り付けてください。
スキャンしたPDFから表を抽出できますか?
OCR対応ツールでのみ可能です。コピペ、Power Query、Pythonの表抽出ライブラリはいずれも実テキストを必要とします。AI型の抽出ツールは先にページをOCRしてから表を再構築します。スキャンをParseJetにアップロードすれば、表がテキストとして返ってきます。
PDFの表抽出に最適なPythonライブラリはどれですか?
罫線付きの表ならcamelot、レイアウトが一貫したレポートならtabula-py、低レベルの独自ロジックが必要ならpdfplumberです。3つともレイアウトごとのチューニングが必要で、スキャンページは扱えないため、入力が乱れがちなパイプラインは結局パースAPIを呼ぶ構成に落ち着くことが多いです。
貼り付けた表が1列になってしまうのはなぜですか?
PDFビューアが表の行断片をスペース区切りのプレーンな行として書き出し、Excelが各行を1つのセルに貼り付けたためです。「区切り位置」で分割し直すか、表構造を再構築する方法(Power Queryや抽出ツール)を使ってください。
結合セルのある表はどう抽出されますか?
ほとんどのツールでうまくいきません。結合セルは、あらゆるヒューリスティクスが前提とする行×列のグリッドを壊してしまうからです。構造を認識する抽出が最も上手に処理しますが、どの方法を使う場合でも、結合部分は手動での確認を見込んでください。
多数のPDFから自動で表を抽出できますか?
はい。各ファイルをパースAPIにPOSTしてください。ParseJetでは /v1/parse/auto/file がドキュメントをMarkdownの表(または構造化JSON)付きで返します。無料のAPIアカウントには月300クレジットが含まれます。
関連ツール
PDF to Markdown Converter
Convert PDF to Markdown online for free. Preserves headings, lists, tables, and code blocks. No signup required — try it instantly or automate via API.
PDF to JSON Converter
Convert PDF to JSON online for free. Get text, title, and metadata as structured JSON — ready for your app, database, or AI pipeline. API included.
Extract Text from PDF
Extract text from PDF files online for free. Supports scanned documents, multi-page PDFs, and complex layouts. No installation needed — works in your browser.
Related guides
How to Convert PDF to Markdown in Python
Convert PDF to Markdown in Python: PyMuPDF4LLM, Marker, MarkItDown, and a hosted API compared — with working code, accuracy notes, and when to pick each.
How to Copy Text from a PDF
Learn 4 proven ways to copy text from any PDF file — regular, scanned, or protected. Includes free methods, step-by-step instructions, and troubleshooting tips.