それぞれが個別のレポート セクションである十数のデータ テーブルを含む PDF では、変換の課題が生じます。 PDF 全体を 1 つの CSV に変換すると、セクション 3 の表ヘッダーがセクション 2 のデータの途中に表示される、ごちゃ混ぜのスプレッドシートが生成されます。文書全体を一度に変換するPDF to Excel ツールは、テーブルを区別しません。各テーブルを独自の CSV ファイルに抽出するには、各テーブルを大きなドキュメント内の独立したデータ ソースとして扱う、より選択的なアプローチが必要です。
目標は、テーブルごとに 1 つの CSV ファイルを作成し、各 CSV に PDF 内のソース テーブルからの正しい列ヘッダーとデータ行を含めることです。出力ファイルの数は、ドキュメント内の個別のテーブルの数と一致します。このアプローチにより、各データセットがクリーンな状態に保たれ、混在したテーブル データを個別に手動で後処理することなく、分析ツール、データベース、または個別のスプレッドシート タブにインポートできる状態が保たれます。
WukongPDF の PDF データの抽出 ツールは、PDF 内のテーブル構造を識別し、構造化フォーマットでエクスポートします。複数の独立したテーブルを含むドキュメントの場合、以下で説明する抽出ワークフローにより、テーブルごとのクリーンな CSV 出力が生成されます。

PDF テーブル抽出の仕組み
表抽出エンジンは、各 PDF ページ上のテキスト文字の空間位置を分析します。水平方向に近接した文字が単語を形成します。垂直方向に一定の間隔で水平方向の行に配置された単語が表の行を形成します。列間の垂直方向の隙間は、列の境界を定義します。このエンジンは、文字をセルに、セルを行に、行をテーブル構造にグループ化し、そのテーブルを区切り文字で区切られたテキストとしてエクスポートします。抽出の精度は、元の PDF テーブルがどの程度きれいにフォーマットされているかによって決まります。グリッド線が表示され、列幅が一定で、セルが結合されていない表は、ほぼ完璧な精度で抽出されます。
1 つのセルが複数の列または行にまたがる結合セルでは、結合されたセルがどの列に属しているかをエンジンが判断できないため、空間分析が混乱します。行ごとに交互に配置される背景のシェーディングのあるテーブルでは、エンジンがシェーディングの境界を列の境界として誤って解釈する可能性があります。コンテンツがセル内で複数行に折り返されているテーブルでは、エンジンが折り返された各行を別の行として扱う可能性があります。抽出方法を決定する前に、PDF テーブルでこれらの機能を視覚的に検査し、それに応じて期待値を設定します。
PDFをExcelに変換してみる
インストールは必要ありません。ブラウザで直接動作します。
方法 1: Adobe Acrobat Pro を使用して個々のテーブルをエクスポートする
Acrobat Pro では PDF を Excel にエクスポートでき、そこからワークブックを個別の CSV ファイルに分割できます。 Acrobat Pro で PDF を開き、[ツール]、[PDF のエクスポート] の順に移動します。出力形式として「スプレッドシート」を選択し、「Microsoft Excel ワークブック」を選択します。 「エクスポート」をクリックします。 Acrobat はドキュメント全体を処理し、XLSX ファイルを生成します。 Excel で XLSX を開きます。各 PDF ページのコンテンツは、ドキュメントのレイアウトに応じて、別のシートに表示されるか、連続したデータ範囲に表示されます。
Excel 出力内の各テーブルの開始位置と終了位置を特定します。最初のテーブルのデータ範囲 (ヘッダー行を含む) を選択し、それを新しい Excel ブックにコピーします。そのワークブックを、Sales_Q1_2025.csv などのわかりやすい名前を付けて CSV ファイルとして保存します。後続のテーブルごとに繰り返します。この手動アプローチは、最大 5 つのテーブルを含むドキュメントに対して確実に機能します。多数の表を含むドキュメントの場合、手動でコピーして保存するワークフローは面倒になるため、以下の自動化された方法の 1 つがより実用的です。
方法 2: テーブル検出を備えたオンライン ツール
いくつかのオンライン PDF から CSV へのコンバーターには、ドキュメント内の個々の表を識別する表検出が含まれています。これらのツールは PDF をスキャンし、検出された表領域を強調表示し、検出された各表を個別の CSV または XLSX ワークブック内の個別のシートとしてエクスポートします。 Tabula は、Web アプリケーションとしてもローカル デスクトップ アプリケーションとしても利用できるオープンソース ツールで、このワークフローに特化しています。 PDF をアップロードし、抽出する各テーブルの周囲に選択ボックスを描画して、[エクスポート] をクリックします。 Tabula は、選択したテーブル領域ごとに 1 つの CSV を生成します。
実際には、オンライン抽出の品質は PDF の内部構造に大きく依存します。テーブルの内容が実際のテキスト文字として保存されているテキストベースの PDF は、確実に抽出されます。スキャンされた PDF (表がテキスト自体ではなくテキストの画像である場合) は、抽出前に OCR が必要です。 PDF がスキャナーから作成された場合は、最初に OCR エンジンを通じて PDF を実行し、次に検索可能な OCR 出力から表を抽出します。 OCR ステップでは、特に数字の場合、似たような文字として誤認識される可能性があるため、いくつかの抽出エラーが発生します。
方法 3: Python と表形式を使用して抽出を自動化する
繰り返しの抽出タスクや多くの表を含むドキュメントの場合、tabula-py ライブラリを使用した Python スクリプトによりワークフローが自動化されます。スクリプトは PDF を開き、各ページの表領域を検出し、各表を pandas DataFrame に抽出し、各 DataFrame を個別の CSV ファイルとして保存します。基本的な抽出スクリプトには約 25 行のコードが必要です。
tabula-py ライブラリは、グリッド線が表示されているテーブルのラティス モードや、空白で列が区切られているテーブルのストリーム モードなど、テーブル検出戦略のパラメーターを受け入れます。ラティス モードは、境界線のある整形式のテーブルの場合により正確です。ストリーム モードでは境界のないテーブルが許容されますが、空白のギャップに一貫性がない場合、列の位置がずれる可能性があります。混合表スタイルを含むドキュメントの場合は、各モードで 1 回ずつ抽出を 2 回実行し、出力を比較して、どのモードが各表に対してよりきれいなデータを生成したかを判断します。
| メソッド | 最適な用途 | キー制限 |
|---|---|---|
| Adobe Acrobat Pro のエクスポート | クリーンなテーブル、1 つまたは 2 つの PDF | 結合されたセルに関する問題 |
| オンラインの PDF から CSV へのツール | 素早い変換、インストール不要 | 複数ページのテーブルを誤って処理する可能性がある |
| Python + パンダ + ボード | バッチ処理、複雑なテーブル | スクリプトの知識が必要です |
複数のページにわたるテーブルの処理
3 ページから 4 ページに続く表には特別な課題があります。抽出エンジンは、各ページに 1 つずつ、2 つの個別のテーブルを認識します。それぞれのテーブルには、3 ページに独自のヘッダー行があり、場合によっては 4 ページに繰り返しヘッダーがあります。抽出後、2 つの CSV ファイルを手動で、またはスクリプトを使用して、最初のファイルのデータ行の下に 2 番目のファイルのデータ行を追加し、2 番目のファイルから重複したヘッダー行を削除します。
一部の抽出ツールには、複数ページのテーブルを自動的にマージしようとする、ページをまたぐオプションやテーブルの連結オプションが含まれています。このオプションは、テーブル構造がページ間で一貫しており、各改ページが行境界で発生する場合に機能します。改ページによって 1 行が 2 ページに分割される場合 (3 ページの下部で始まり 4 ページの上部で終了する折り返されたテキストを含む長い行など)、自動結合によって最初の CSV の末尾に部分的な行が生成され、2 番目の CSV の先頭に別の部分的な行が生成されます。このような特殊なケースでは、マージ ポイントを手動で検査して修正する必要があります。
各 PDF テーブルを独自の CSV ファイルに抽出すると、スプレッドシートやデータベース ツールに直接インポートできる、分析可能なクリーンなデータが生成されます。選択する方法は、抽出する必要があるテーブルの数と、このタスクを実行する頻度によって異なります。少数のテーブルで時折使用する場合は、Acrobat Pro の Excel へのエクスポート ワークフローとそれに続く手動 CSV 分割によってジョブが処理されます。標準化されたドキュメントから繰り返しバッチ抽出を行う場合、Python と Tabula のアプローチにより数百の PDF が処理され、一貫した結果が得られます。
抽出された CSV データの精度の検証
各テーブルを CSV に抽出した後、データを分析パイプラインにインポートする前に、簡単な検証パスを実行します。スプレッドシート アプリケーションで各 CSV を開き、行数を元の PDF テーブルに表示されている行数と比較します。改ページをまたぐ可能性のあるヘッダー行を考慮して、カウントは 1 行または 2 行内で一致する必要があります。 CSV 内の数値を PDF と照らし合わせてスポットチェックします。数値を含む 5 つのランダムなセルを選択し、値が正確に一致することを確認します。
元の PDF 内の結合されたセルを含む列には特に注意してください。抽出エンジンは多くの場合、結合されたセルの値をセルがまたがるすべての列にわたって複製するか、一部の列を空白のままにします。分析が、保持される結合されたセル構造に依存している場合は、抽出エンジンが正しく処理することを期待するのではなく、後処理中に結合ロジックを適用します。 CSV を読み取り、事前定義されたマッピングに基づいて列を元の構造にマージする短い Python スクリプトは、抽出エンジンのマージ検出に依存するよりも信頼性の高い結果を生成します。
代わりに API 抽出サービスを使用する場合
大規模な PDF テーブル抽出の場合、API ベースのサービスは、複雑なレイアウトに対してローカル ツールよりも高い精度を提供します。 Amazon Textract、Google Document AI、および Microsoft Form Recognizer は、数百万のテーブル形式でトレーニングされた機械学習モデルを使用し、結合されたセル、複数行のセルのコンテンツ、境界のないテーブルをルールベースのエンジンよりも確実に処理します。コストはページごとであり、時折高価値の抽出を行う場合には経済的ですが、毎日数千ページのバッチ処理を行う場合には高価になる可能性があります。
API 抽出は、基本的なツールでは見逃されるテーブル コンテキストをキャプチャします。ヘッダーが複数の列にまたがる場合でも、列ヘッダーはデータ セルに関連付けられます。階層的な親子ヘッダーが識別されます。出力はフラットな CSV ではなく構造化された JSON であり、ダウンストリーム処理のテーブル セマンティクスを保持します。精度が財務上または法的結果に影響を及ぼすビジネスクリティカルなデータの場合、ページあたりの API コストは、手動で抽出エラーを修正するコストの数分の 1 で済みます。
PDFをExcelに変換してみる
インストールは必要ありません。ブラウザで直接動作します。
