GroupDocs.Parser を使用した Java PDF テーブル抽出の方法

PDF ファイルからテーブルを抽出することは、静的なドキュメントを構造化データに変換する必要がある場合に頻繁に求められます。このチュートリアルでは、Java 用の GroupDocs.Parser ライブラリを使用して テーブルを抽出する方法 を学びます。環境設定、テーブルレイアウトの構成、そして pdf テーブルを csv にエクスポート する方法をカバーします。最後まで読めば、任意の Java ベースのデータパイプラインに堅牢なテーブル抽出を組み込むことができるようになります。

クイック回答

  • 主要なライブラリは何ですか? GroupDocs.Parser for Java
  • スキャンされた PDF からテーブルを抽出できますか? OCR 後のみ可能です。下記の “extract tables scanned pdf” 注記を参照してください
  • ライセンスは必要ですか? 開発にはトライアルライセンスで動作しますが、本番環境ではフルライセンスが必要です
  • 必要な Java バージョンは? Java 8 以上
  • バッチ処理はサポートされていますか? はい – API は大規模抽出向けに最適化されています

Java PDF テーブル抽出とは何か?

Java PDF テーブル抽出は、PDF 内の表形式構造をプログラムで検出し、セルの境界を解釈して、CSV や Excel などの機械可読形式でテキストを取得するプロセスです。これにより、手動でコピー&ペーストすることなく、下流の分析、レポート作成、またはデータ移行タスクを実行できます。

Java PDF テーブル抽出に GroupDocs.Parser を使用する理由

GroupDocs.Parser は 50 以上の入力および出力フォーマットに対する正確なレイアウト検出 を提供し、数百ページに及ぶ PDF でもメモリ使用量を 200 MB 未満に抑えて処理できます。バッチジョブをサポートし、シンプルな Maven 依存関係を提供、さらにスキャンドキュメント向けに GroupDocs OCR とシームレスに統合できます。

前提条件

開始する前に、以下が揃っていることを確認してください。

  • Java 8+ がインストールされ、IDE またはビルドツールで設定されていること。
  • Maven が依存関係管理に使用できること。
  • GroupDocs.Parser ライセンス(トライアルまたはフル)へのアクセスがあること。

必要なライブラリと依存関係

必要なものは次のとおりです。

  • GroupDocs.Parser for Java ライブラリ(バージョン 25.5 以降)。
  • 依存関係管理のためにシステムに Maven がインストールされていること。

環境設定

Java(Java 8 以上)の互換バージョンがインストールされた開発環境を整えてください。

知識の前提条件

Java プログラミングの基本的な理解と、Java におけるファイル操作に慣れていることが望ましいです。

GroupDocs.Parser の設定(Java)

GroupDocs.Parser をプロジェクトに組み込む手順は以下の通りです。

Maven 設定
pom.xml ファイルに以下の設定を追加し、GroupDocs.Parser を依存関係として含めます。

<repositories>
   <repository>
      <id>repository.groupdocs.com</id>
      <name>GroupDocs Repository</name>
      <url>https://releases.groupdocs.com/parser/java/</url>
   </repository>
</repositories>

<dependencies>
   <dependency>
      <groupId>com.groupdocs</groupId>
      <artifactId>groupdocs-parser</artifactId>
      <version>25.5</version>
   </dependency>
</dependencies>

Direct download
または、GroupDocs releases から最新バージョンの GroupDocs.Parser for Java をダウンロードしてください。

ライセンス取得

無料トライアルで開始し、一時ライセンスを取得するか、フルライセンスを購入してください。詳細は GroupDocs licensing page をご覧ください。

基本的な初期化と設定

Java アプリケーションで GroupDocs.Parser を初期化するコードは以下のとおりです。

import com.groupdocs.parser.Parser;

public class DocumentParser {
    public static void main(String[] args) {
        final String filePath = "YOUR_DOCUMENT_DIRECTORY/SampleInvoicePagesPdf.pdf";
        try (Parser parser = new Parser(filePath)) {
            // Ready to perform operations on the document
        } catch (Exception e) {
            System.err.println("Error creating Parser instance: " + e.getMessage());
        }
    }
}

実装ガイド

PDF から テーブルを抽出する方法 をマスターするために、各機能を順に見ていきましょう。

機能 1: GroupDocs を使用したドキュメント解析

Overview
PDF ドキュメントとやり取りするには、Parser クラスのインスタンスを作成します。
Parser は GroupDocs.Parser における PDF コンテンツ読み取りのエントリーポイントであり、さまざまな操作を可能にします。

Creating a parser instance
Parser クラスは GroupDocs.Parser で PDF コンテンツを読み取るためのエントリーポイントです。ドキュメントをメモリにロードし、テキスト、テーブル、その他の構造を抽出するメソッドを提供します。

import com.groupdocs.parser.Parser;

public class CreateParserInstance {
    public static void main(String[] args) {
        final String filePath = "YOUR_DOCUMENT_DIRECTORY/SampleInvoicePagesPdf.pdf";
        try (Parser parser = new Parser(filePath)) {
            // Document is ready for operations
        } catch (Exception e) {
            System.err.println("Error creating Parser instance: " + e.getMessage());
        }
    }
}

機能 2: テーブル抽出機能のチェック

Overview
テーブルを抽出する前に、PDF がテーブル抽出に対応しているか確認してください。

Checking table support
hasTables() メソッドは、ロードされた PDF に検出可能なテーブルデータが含まれているかどうかを示すブール値を返します。
hasTables() はドキュメントにテーブルが存在するかをチェックします。

import com.groupdocs.parser.Parser;

public class CheckTableSupport {
    public static void main(String[] args) {
        final String filePath = "YOUR_DOCUMENT_DIRECTORY/SampleInvoicePagesPdf.pdf";
        try (Parser parser = new Parser(filePath)) {
            boolean isTablesSupported = parser.getFeatures().isTables();
            
            if (!isTablesSupported) {
                System.out.println("Document doesn't support tables extraction.");
            }
        } catch (Exception e) {
            System.err.println("Error checking table extraction capability: " + e.getMessage());
        }
    }
}

機能 3: テーブルレイアウト設定

Overview
テーブルのレイアウトを構成することで、データ抽出の精度を向上させることができます。

Setting up table layout
TemplateTableLayout は期待される列幅と行高さを定義します。
TemplateTableLayout はテーブル検出のためにカスタム列幅と行高さを指定します。これらの値を調整することで、エンジンがセル境界を視覚的なグリッドに合わせやすくなります。

import com.groupdocs.parser.templates.TemplateTableLayout;
import java.util.Arrays;

public class ConfigureTableLayout {
    public static void main(String[] args) {
        final double[] columnWidths = {50.0, 95.0, 275.0, 415.0, 485.0, 545.0};
        final double[] rowHeights = {325.0, 340.0, 365.0, 395.0};

        TemplateTableLayout layout = new TemplateTableLayout(
                Arrays.asList(columnWidths), 
                Arrays.asList(rowHeights));
    }
}

機能 4: テーブル抽出オプション設定

Overview
特定の構成でテーブル抽出オプションを設定し、抽出精度を向上させます。

Configuring extraction options
TableExtractionOptions を使用して、ヘッダー行の含めるかどうか、セルの結合、空行の無視などを指定できます。
TableExtractionOptions はヘッダーの含有やセル結合などの抽出動作を設定します。

import com.groupdocs.parser.options.PageTableAreaOptions;
import com.groupdocs.parser.templates.TemplateTableLayout;

public class SetExtractionOptions {
    public static void main(String[] args) {
        TemplateTableLayout layout = new TemplateTableLayout(
                Arrays.asList(new Double[]{50.0, 95.0, 275.0, 415.0, 485.0, 545.0}), 
                Arrays.asList(new Double[]{325.0, 340.0, 365.0, 395.0}));

        PageTableAreaOptions options = new PageTableAreaOptions(layout);
    }
}

機能 5: ドキュメントからのテーブル抽出

Overview
設定したオプションを使用してテーブルを抽出し、必要に応じて処理します。

Extraction process
getTables() メソッドは、要求されたページ上で検出されたテーブルを表す Table オブジェクトのコレクションを返します。
getTables() はドキュメントから検出されたすべてのテーブルを取得します。
Table は行とセルを持つ単一の抽出テーブルを表します。

import com.groupdocs.parser.Parser;
import com.groupdocs.parser.options.PageTableAreaOptions;
import com.groupdocs.parser.data.PageTableArea;

public class ExtractTables {
    public static void main(String[] args) {
        final String filePath = "YOUR_DOCUMENT_DIRECTORY/SampleInvoicePagesPdf.pdf";
        PageTableAreaOptions options = new PageTableAreaOptions(/* layout from previous feature */);

        try (Parser parser = new Parser(filePath)) {
            Iterable<PageTableArea> tables = parser.getTables(options);
            
            for (PageTableArea table : tables) {
                // Process each table as needed
            }
        } catch (Exception e) {
            System.err.println("Error extracting tables: " + e.getMessage());
        }
    }
}

機能 6: テーブルの行と列の反復処理

Overview
抽出後、行と列を反復処理して個々のセルにアクセスします。

Iterate and access cells
各 Table は getRows() を提供し、各 Row は getCells() を提供します。getText() でセルのテキストを取得し、CSV など任意の形式で書き出すことができます。
Row は Table 内の単一行を表します。
getRows() はテーブル内の行リストを返します。
getCells() は行内のセルを返します。
getText() はセルのテキスト内容を取得します。

import com.groupdocs.parser.data.PageTableArea;
import com.groupdocs.parser.data.PageTableAreaCell;

public class IterateTables {
    public static void main(String[] args) {
        PageTableArea table = /* reference to a specific PageTableArea object */;

        for (int row = 0; row < table.getRowCount(); row++) {
            for (int column = 0; column < table.getColumnCount(); column++) {
                PageTableAreaCell cell = table.getCell(row, column);
                if (cell != null) {
                    // Process the cell text as needed
                }
            }
        }
    }
}

よくある問題と解決策

問題発生理由プロ・ヒント
テーブルが返されないPDF がスキャン(画像ベース)であるまず OCR を実行するか、解析前に GroupDocs OCR を使用してください。
列の位置がずれるレイアウト座標が合っていないTemplateTableLayout の値を微調整して視覚的グリッドに合わせてください。
大容量 PDF でメモリが急増Parser がドキュメント全体をメモリにロードするページをバッチ処理し、各バッチ後に Parser を閉じてください。

よくある質問

1. スキャンされた PDF からテーブルを抽出できますか、それともデジタル PDF のみですか?

Answer: GroupDocs.Parser は主にテキストが埋め込まれたデジタル PDF(選択可能なテキスト)で動作します。スキャンされた PDF については、まず OCR を実行してテキストを検索可能にしてからテーブル抽出を行う必要があります(GroupDocs OCR などを使用)。

2. 複雑なレイアウトや結合セルを持つテーブルはどう処理しますか?

Answer: TemplateTableLayout で列・行の座標を正確に設定するか、TableExtractionOptions の mergeCells フラグを有効にします。結合領域を正しく解釈するために、抽出後のポストプロセスが必要になる場合があります。

3. GroupDocs.Parser は大規模ドキュメントやバッチ処理に適していますか?

Answer: はい。ライブラリは高スループットシナリオ向けに設計されており、数百ページの PDF を低メモリ消費で処理できます。ページ範囲オプションを使用し、各バッチ後に Parser インスタンスを破棄してパフォーマンスを最大化してください。

4. 抽出したテーブルデータを CSV や Excel などの形式にエクスポートできますか?

Answer: GroupDocs.Parser は生のテーブルデータ(行とセル)を返します。取得したデータは OpenCSV を使って CSV に、Apache POI を使って Excel に簡単に書き出すことができ、追加のライセンスなしで pdf テーブルを csv にエクスポート のユースケースを実現できます。

5. 複数ページから一括でテーブルを抽出するサポートはありますか?

Answer: もちろんです。parser.getTables(pageOptions) にページ範囲を指定するか、すべてのページを反復して呼び出すことで、ページ横断的にテーブルを取得し、単一の統合データセットを構築できます。

結論

GroupDocs.Parser を使用すれば、Java における PDF テーブル抽出はシンプルになります。Parser を初期化し、テーブルサポートを確認し、レイアウトと抽出オプションを設定し、取得した Table オブジェクトを反復処理することで、静的な PDF を構造化された CSV や Excel ファイルに変換できます。50 以上のフォーマットに対応し、OCR とのシームレスな統合を備えた同ライブラリは、請求書自動化、データ移行、大規模分析パイプラインに最適です。上記手順を踏めば、任意の Java アプリケーションに信頼性の高いテーブル抽出機能を組み込む準備が整います。


最終更新日: 2026-09-17
テスト済みバージョン: GroupDocs.Parser 25.5 (Java)
作者: GroupDocs

関連チュートリアル