PDFの表抽出、4つの方法:PythonやExcelから大量文書の自動化まで
請求書を数百枚から供給価額だけを取り出して精算しなければならないとき、取引明細書をExcelへ移して整えなければならないとき、私たちはいつも同じ壁に突き当たります。PDFの中に表ははっきり見えているのに、コピーしてExcelへ貼り付けると、数字が一マスずつずれ、結合されたセルが崩れてしまいます。
そのため検索窓には「PDF 表 抽出」「PDFから表を抽出」「PDF 表 Excel 抽出」が絶えず入力されます。ただし正解は一つではありません。表がきれいか結合されているか、デジタルPDFかスキャン版か、何枚を処理するのかによって、合う方法は変わります。本記事では、実務で使う四つの方法を実際の手順とともに押さえ、自分の状況に合う方法を選ぶ基準まで整理します。
こんな悩みなら、この記事が役立ちます
同じ「PDF 表 抽出」を検索しても、ニーズはさまざまです。表をいくつかExcelへ移したい方、PythonやExcelの使い方を探す実務者、反復処理のコードを探す開発者、スキャン版や複雑な表を扱う企業の担当者、毎月数百から数千枚の請求書や明細書を処理するチーム、抽出結果をERPや社内システムへつなげる担当者まで、多岐にわたります。そこで本記事では、方法を並べる前に、状況ごとに何が合うのかから整理します。
重要ポイントのまとめ
PDFの表抽出とは、PDFの中の表を、行と列の構造を保ったままExcel・CSV・JSONへ移す作業です。
表がシンプルで量が少なければオンラインツールやExcel、同じ様式の繰り返しであればPythonでも十分な場合があります。
結合セル・入れ子の表・スキャンPDFでは、ほとんどのツールが表の構造を取りこぼし、人が手直しをしなければなりません。
文書の様式が多様で、抽出後の検収とシステム入力が残っているとき、文書AIの方式の価値が大きくなります。
自分の状況に合う方法を先に確認する
方法を詳しく見る前に、下の表で自分の状況に近い行をまず探してみることをおすすめします。
自分の状況 | まず検討する方法 |
|---|---|
シンプルな表をいくつかだけ移す | オンライン変換ツール、Excelへの貼り付け |
同じ様式を繰り返し処理 | Python(pdfplumber・Camelot)、ExcelのPower Query |
スキャンしたPDF | OCRで文字を読み取ったうえで表の構造を復元 |
結合・入れ子の複雑な表 | 文書AI(OCRと文書パーサー) |
毎月数百から数千枚を処理 | 文書AIベースの自動化 |
外部へ出せないセキュリティ文書 | On-Premiseの文書AI |
ERP・DBシステムとの連携が必要 | 文書AIとワークフロー自動化 |
PDFの表抽出とは何でしょうか?
PDFの表抽出とは、PDF文書の中の表を、行と列の構造を保ったまま、Excel・CSV・JSONのように編集可能なデータへ移す作業です。文字だけを取り出す「PDF 表 テキスト抽出」とは性質が異なります。テキストだけを取り出すと、数字や項目は入ってきますが、どの値がどの行と列に属するかが失われ、人が改めて表に整えなければなりません。
表抽出の核心は、テキストを取り出すことではなく、セル間の位置関係を守り抜くことです。
デジタルPDFとスキャンPDFは、アプローチが異なります
始める前に、自分のPDFがどちらかを確認するのがよいでしょう。テキストレイヤーが生きているデジタルPDFは、表の座標と文字を含んでいるため、比較的簡単に抽出できます。一方、紙をスキャンしたり写真で撮ったりした画像PDFはピクセルだけなので、まずOCRで文字を読み取ったうえで、はじめて表として復元できます。ファイルの種類ごとの認識の違いは、OCRが文書業務をどう自動化するかの記事に整理してあります。
方法1. PythonでPDFの表を抽出する
開発リソースがあり、同じ様式を繰り返し処理するなら、Pythonが柔軟です。表に特化したTabulaやCamelot、テキストと表をあわせて扱うpdfplumberがよく使われます。以下は、pdfplumberで最初のページの表を取り出してExcelへ保存する最小の例です。
bash
# 터미널에서 필요한 라이브러리 설치
pip install pdfplumber pandas openpyxlpython
import pdfplumber
import pandas as pd
pdf_path = "sample.pdf"
try:
with pdfplumber.open(pdf_path) as pdf:
first_page = pdf.pages[0] # 첫 페이지
table = first_page.extract_table() # 첫 번째 표 추출
if table:
# 첫 행을 열 이름으로 사용
df = pd.DataFrame(table[1:], columns=table[0])
df.to_excel("output.xlsx", index=False)
print("엑셀 저장을 마쳤습니다.")
else:
print("표를 찾지 못했습니다. 스캔 PDF이거나 표 경계가 뚜렷하지 않을 수 있습니다.")
except FileNotFoundError:
print("파일 경로를 다시 확인해 주세요.")このコードは、テキストレイヤーのあるデジタルPDFでうまく動きます。ただし、すべての文書でそのまま動くわけではありません。スキャン版はOCRを先に付けなければならず、結合セルや入れ子の表では、様式が少し変わっただけでもパースの規則を手直しする必要があります。取引先ごとに書式が異なる文書を扱うときは、保守の負担が急速に大きくなることがあります。
方法2. ExcelのPower Queryで抽出する
コードなしで進めたいなら、Excelが第一候補です。Microsoft 365と2019には、PDFから表をシートへ読み込むPower Queryのコネクタがあります。手順は次のとおりです。
「データ」から「データの取得」、「ファイルから」、そして「PDFから」の順に進みます。
ファイルを選ぶと、文書の中の表の一覧が表示され、目的の表を選んでシートへ読み込めます。フォルダ内の複数のPDFをまとめて取りまとめることも可能です。
ただし、環境によってこの機能の見え方は異なる場合があります。Excelのバージョンやオペレーティングシステム、Power Queryの対応状況によってPDFコネクタがないことがあり、特に古いバージョンや一部のMac環境ではメニューが表示されないことがあります。その場合は、表をコピーして貼り付けるか、別の変換ツールを経る必要があります。結合セルやスキャン表では、列がずれるという限界もそのまま残ります。
方法3. オンライン変換ツールとセキュリティの確認事項
ブラウザでファイルをアップロードすると、すぐにExcelへ変換してくれるツールがあります。インストールが不要なので、個人が表をいくつか急いで移すときに便利です。
企業文書では、二つをまず確認しなければなりません。第一にセキュリティです。多くは文書を外部サーバーへアップロードする仕組みのため、契約書や財務諸表、個人情報を含む明細書をアップロードする前に、データの取り扱い方式を確認しなければなりません。第二に容量と精度です。無料ツールは、一度に処理できるファイル数を制限したり、一定時間が過ぎると結果を削除したりする場合が多く、結合やスキャン表の精度を保証しません。定期的に繰り返される業務よりも、一度きりの作業に向いています。
方法4. 文書AIで抽出・検証・連携まで処理する
先の三つの方法が壁に突き当たる地点、つまり、さまざまな様式の文書が大量に入ってきて、スキャン版が混ざり、セキュリティがかかった環境で登場する選択肢が、文書AIです。
文書AIの方式は、表を取り出すところで止まりません。文書が入ってくるとOCRが文字と表を読み、文書パーサーが結合セルや入れ子の表の構造をデータへ整理し、その結果を検証し、正常な案件は自動で処理し、例外の案件は人が確認する方向へ分けたうえで、Excelやシステムへ連携する流れまで続きます。人は表を移す反復作業の代わりに、例外処理に集中するようになります。
大量の文書では、抽出のあとに検証と連携まで続く流れが重要です。
四つの方法をひと目で比較
方法 | 合う状況 | スキャンPDF | 結合・入れ子の表 | 大量の自動化 | システム連携 |
|---|---|---|---|---|---|
Python(pdfplumber・Camelot) | 同じ様式の反復、開発が可能 | 別途OCRが必要 | 規則の調整が必要 | 可能 | 自前で構築 |
ExcelのPower Query | 少量・非開発者 | 難しい | ずれが発生 | 限定的 | 手動 |
オンライン変換ツール | 一度きりの少量 | 一部 | 弱い | 難しい | なし |
文書AI | 大量・非定型・セキュリティ | 認識後に構造化 | 構造理解に基づく | 可能 | ERP・API連携 |
PDFの表は、なぜ何度も崩れるのでしょうか?
方法を変えても表が崩れ続けるなら、原因はツールではなく、表そのものの構造にある場合が多いのです。難度が急激に上がる地点は三つです。結合セルは一つの値が複数のマスを覆い、どこに入れるかの判断が必要で、入れ子の表は表の中にまた表があるため境界を区別しなければならず、スキャンや回転した文書はセルの線がかすれて傾いており、テキスト認識だけでは構造を復元しにくいのです。
定型文書ではまれですが、さまざまな所から大量に入ってくる企業文書では、この三つが同時に現れます。
定型化された社内文書だけを扱うなら、こうした表はあまり登場しません。問題は、金融、保険、製造、物流、公共のように、外部から入ってくる文書を大量に処理する現場です。このときは、表をどう取り出すかよりも、表の構造をどう理解するかが鍵になります。
もし、いま扱っている文書がこの三つに当てはまるなら、自分のPDFを直接アップロードして、表がどう認識されるかをDEEP Agent Demoでまず確認できます。
導入前に確認する基準
文書AIの導入を検討するなら、次を先に整理しておくと相談が速くなります。処理する文書の種類と月間処理量、スキャン版と結合表の比率、現在の検収方式、必要な出力形式、連携するシステム、そしてSaaSとして使うか内部ネットワークに構築するかといったセキュリティ条件です。これらの条件によって適した方式と範囲が変わるため、自社の実際の表サンプルで結果をまず確認するのが最も正確です。
韓国ディープラーニングは、文書業務を代行する3 Zero AI Workerをつくります
表をうまく取り出すだけで業務が終わるわけではありません。取り出した値を検証し、おかしな案件を選り分け、システムへ入れる過程が残ります。韓国ディープラーニングは、この過程全体を一つのものとして捉えます。
DEEP OCRがスキャン・画像文書の文字を読み、DEEP Parserが表と文書構造をデータへ整理し、DEEP Agentが抽出から検証、例外分岐、システム連携までを一つの流れでつなぎます。この流れが向かう最終的な方向が、反復的な文書業務を代行する3 Zero AI Workerです。
この技術は、公共・金融・製造・物流など、さまざまな産業の大量文書の現場に導入されてきており、OCRBench v2の英語部門で1位を記録しました。導入は多くの場合、既存の様式を変えずに平均2週間以内で行われます。
3 Zeroは、文書自動化がよく行き詰まる三つの地点を狙っています。
Zero Training — 様式が変わるたびにモデルを新しく学習・構築する負担を減らします。
Zero Hallucination — 文書にない情報を作り出さず、実際の根拠で抽出したうえで検証します。
Zero Review — 正常な案件は自動で処理し、例外と信頼度の低い項目だけを人が確認します。
三つとも負担を完全になくすという意味ではなく、人の担う分を大きく減らす方向です。
表がシンプルで量が少なければ、PythonやExcelで十分です。文書AIは、大量・非定型・セキュリティの環境で価値が大きくなります。拡張子ごとのアプローチは拡張子別のAI OCR導入戦略ガイドに、表を構造として理解する原理は文書パーサーがすることに整理してあります。
よくある質問
Q1. PDFから表を抽出する最も簡単な方法は何ですか?
表がきれいで量が少なければ、オンライン変換ツールやExcelのPDF取り込みが最も簡単です。開発が可能なら、PythonのpdfplumberやCamelotが柔軟です。結合表やスキャン版、大量処理には、これらの方法に限界がある場合があります。
Q2. PDFの表抽出をPythonで行うには、何から始めればよいですか?
pdfplumberとpandasをインストールしたうえで、PDFを開いてページから表を抽出し、データフレームに変換してExcelへ保存すれば大丈夫です。ただし、スキャンPDFはOCRを先に経る必要があり、文書ごとに表の構造が異なるため、例外処理が必要な場合があります。
Q3. ExcelでPDFの表をそのまま取り込めますか?
Microsoft 365と2019では、データの取得のPDFコネクタで表をシートへ読み込めます。ただし、Excelのバージョンやオペレーティングシステムによってこの機能がないことがあり、その場合はコピーして貼り付けるか、別のツールを使う必要があります。
Q4. スキャンしたPDFの表も抽出できますか?
できます。スキャンPDFはピクセル画像なので、まずOCRで文字を読み取ったうえで、表の構造を復元しなければなりません。スキャン品質が低いと精度が落ちる場合があるため、実際の文書で確認することをおすすめします。
Q5. 結合セルの多い複雑な表は、どうすればよいですか?
結合や入れ子の表は、セルの位置関係を理解してこそ正確に復元されます。PythonやExcel、オンラインツールはこの部分でよくずれるため、大量であれば、文書パーサーに基づく構造理解の方式を検討するほうが安定的です。
Q6. 毎月数千枚の文書を処理しなければならないのですが、どの方法が合いますか?
量が多く、様式が多様で、抽出後の検収とシステム入力が残っているなら、抽出と検証、連携まで続く文書AIベースの自動化が現実的です。自社の文書で処理範囲をまず確認することをおすすめします。
まとめ
PDFの表抽出に、たった一つの正解はありません。シンプルな表を少量ならExcelとオンラインツールで、同じ様式の反復ならPythonで始められます。スキャン版と結合表が混ざり、量が増え、抽出後の検収とシステム連携まで続く必要があるなら、そこから文書AIの方式の価値が大きくなります。まずは自分の状況を見きわめ、必要であれば実際の文書で結果を確認してみることをおすすめします。
自分のPDFで表抽出の結果を確認する
表が崩れずに取り出せるかを目で確かめる最も速い方法は、実際に入れてみることです。自分のPDFをアップロードして、表とテキストがどう認識されるかを、ディープエージェントラボですぐに確認してみてください。