如何使用 GroupDocs.Parser 進行 Java PDF 表格提取

從 PDF 檔案中提取表格是將靜態文件轉換為結構化資料的常見需求。在本教學中,您將學習 如何提取表格,使用適用於 Java 的 GroupDocs.Parser 函式庫。我們將涵蓋環境設定、表格佈局配置,以及如何 export pdf tables csv 以供後續處理。完成後,您將能將強大的表格提取整合到任何基於 Java 的資料管道中。

快速回答

  • 主要的函式庫是什麼? GroupDocs.Parser for Java
  • 我可以從掃描的 PDF 提取表格嗎? 只能在 OCR 之後;請參閱下方 “extract tables scanned pdf” 註解
  • 我需要授權嗎? 試用授權可用於開發;正式環境需要完整授權
  • 需要哪個 Java 版本? Java 8 或更高版本
  • 支援批次處理嗎? 是 – API 已針對大規模提取進行最佳化

什麼是 Java PDF 表格提取?

Java PDF 表格提取是指以程式方式在 PDF 中定位表格結構、解析儲存格邊界,並以機器可讀的格式(如 CSV 或 Excel)取得文字內容。這可讓後續的分析、報告或遷移工作無需手動複製貼上。

為什麼使用 GroupDocs.Parser 進行 Java PDF 表格提取?

GroupDocs.Parser 提供 超過 50 種以上的輸入與輸出格式的精確版面偵測,且能在記憶體使用量低於 200 MB 的情況下處理數百頁的 PDF。它支援批次作業,提供簡單的 Maven 相依性,並可與 GroupDocs OCR 無縫整合,以應對掃描文件的情境。

前置條件

在開始之前,請確保您具備以下條件:

  • Java 8+ 已安裝並在您的 IDE 或建置工具中配置。
  • Maven 用於相依性管理。
  • 取得 GroupDocs.Parser 授權(試用或正式)。

必要的函式庫與相依性

您需要:

  • GroupDocs.Parser for Java 函式庫(版本 25.5 或更新)。
  • 系統上已安裝 Maven 以進行相依性管理。

環境設定

確保您的開發環境已安裝相容的 Java 版本(Java 8 或更高)。

知識前置條件

具備 Java 程式設計的基本概念,並熟悉在 Java 中處理檔案,將會有所幫助。

設定 GroupDocs.Parser for 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>

直接下載
或者,從 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());
        }
    }
}

實作指南

讓我們逐一說明您需要掌握的每項功能,以 如何提取表格 為例。

功能 1:使用 GroupDocs 解析文件

概觀
要與 PDF 文件互動,請建立 Parser 類別的實例。
Parser 是在 GroupDocs.Parser 中讀取 PDF 內容的入口類別,能對文件執行各種操作。

建立 parser 實例
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:表格提取能力檢查

概觀
在提取表格之前,請先確認 PDF 是否支援表格提取。

檢查表格支援
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:表格版面配置

概觀
設定表格的版面配置可提升資料提取的準確度。

設定表格版面
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:表格提取選項設定

概觀
設定具體配置的表格提取選項,以提升提取準確度。

設定提取選項
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:從文件中提取表格

概觀
使用已設定的選項提取表格,並依需求處理。

提取流程
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:遍歷表格列與欄

概觀
提取完成後,遍歷列與欄以存取各個儲存格。

遍歷與存取儲存格
每個 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 提取表格嗎?

回答: GroupDocs.Parser 主要適用於含有內嵌文字的數位、可選取 PDF。對於掃描的 PDF,必須先執行 OCR(可使用 GroupDocs OCR 或其他 OCR 引擎),使文字可搜尋後才能進行表格提取。

2. 如何處理具有複雜版面或合併儲存格的表格?

回答: 可透過精確設定 TemplateTableLayout 的欄與列座標,或在 TableExtractionOptions 中啟用 mergeCells 旗標。可能需要後處理以正確解讀合併區域。

3. GroupDocs.Parser 適用於大型文件或批次處理嗎?

回答: 是。此函式庫針對高吞吐量情境設計,能在低記憶體消耗下處理數百頁的 PDF。使用頁範圍選項,並在每批完成後釋放 Parser 實例,以提升效能。

4. 我可以將提取的表格資料匯出為 CSV 或 Excel 等格式嗎?

回答: GroupDocs.Parser 會回傳原始表格資料(列與儲存格)。您可以使用 OpenCSV 輕鬆寫入 CSV,或使用 Apache POI 寫入 Excel。此即滿足 export pdf tables csv 的使用情境,且不需額外授權。

5. 是否支援一次從多頁提取表格?

回答: 當然可以。呼叫 parser.getTables(pageOptions) 並指定頁範圍,或遍歷所有頁面。API 會彙總跨頁的表格,讓您建立單一的合併資料集。

結論

使用 GroupDocs.Parser,Java PDF 表格提取變得相當簡單。只要初始化 Parser、確認表格支援、設定版面與提取選項,並遍歷產生的 Table 物件,即可將靜態 PDF 轉換為結構化的 CSV 或 Excel 檔案。函式庫以效能為導向的設計、支援超過 50 種格式,且與 OCR 無縫整合,成為發票自動化、資料遷移與大規模分析管道的理想選擇。依照上述步驟,您即可在任何 Java 應用程式中嵌入可靠的表格提取功能。


最後更新: 2026-09-17
測試版本: GroupDocs.Parser 25.5 (Java)
作者: GroupDocs

相關教學