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 instanceParser クラスは 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 supporthasTables() メソッドは、ロードされた 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 layoutTemplateTableLayout は期待される列幅と行高さを定義します。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 optionsTableExtractionOptions を使用して、ヘッダー行の含めるかどうか、セルの結合、空行の無視などを指定できます。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 processgetTables() メソッドは、要求されたページ上で検出されたテーブルを表す 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