如何使用 GroupDocs.Parser 在 Java 中提取 PDF 表格

從 PDF 檔案中提取表格是將靜態文件轉換為結構化資料時的常見需求。在本教學中,我們將示範 如何提取表格,使用 GroupDocs.Parser 的 Java 程式庫。您將了解為何此方法非常適合 java pdf table extraction,如何配置版面以獲得精確結果,甚至如何在之後 export pdf tables csv

快速回答

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

在 PDF 背景下,「how to extract tables」是什麼意思?

當我們談到 how to extract tables 時,我們指的是程式化定位 PDF 內的表格結構、解析儲存格邊界,並以機器可讀的格式(例如 CSV、Excel)取得文字內容的過程。GroupDocs.Parser 抽象化了低階的 PDF 解析,提供一個乾淨的物件模型供您使用。

為何使用 GroupDocs.Parser 進行 java pdf table extraction?

  • 精確的版面偵測 – 能處理多欄位、多列的表格,並支援自訂座標。
  • 效能導向 – 在大型文件與批次工作中表現良好。
  • 易於整合 – 基於 Maven 的相依管理與直觀的 API。
  • 可擴充 – 您可以結合 GroupDocs OCR 以應對 extract tables scanned pdf 的情境。

前置條件

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

  • 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>

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

實作指南

讓我們逐步說明您需要掌握的每項功能,以 how to extract tables 從 PDF 中提取表格。

功能 1:使用 GroupDocs 解析文件

概述
若要與 PDF 文件互動,請建立 Parser 類別的實例。這樣即可對文件執行各種操作。

建立 Parser 實例

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 是否支援表格提取。

檢查表格支援

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:表格版面配置

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

設定表格版面

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

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

設定提取選項

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

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

提取流程

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

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

遍歷並存取儲存格

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,或調整辨識參數以提升精確度。處理合併儲存格可能需要分析儲存格跨距,並實作後處理邏輯來解讀合併區域。

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

回答: 是的,GroupDocs.Parser 已針對批次處理進行最佳化,能有效處理大型文件。妥善的資源管理與將處理任務分塊亦可進一步提升效能。

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

回答: 雖然 GroupDocs.Parser 本身專注於提取,但會提供原始資料(列與儲存格)。您可以自行或使用 Java 函式庫(如 Apache POI 取得 Excel,或 OpenCSV 取得 CSV)輕鬆匯出。這正是 export pdf tables csv 使用情境的所在。

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

回答: 是的,使用 parser.getTables() 並搭配頁面選項,即可跨多頁提取表格。您可以指定頁面範圍,或以迭代方式處理所有頁面,以收集全部表格資料。

結論

從 PDF 中提取表格是自動化文件資料處理的關鍵步驟,GroupDocs.Parser for Java 讓此工作變得前所未有的簡單。透過建立 parser 實例、驗證表格支援、配置版面選項,並遍歷提取的資料,開發者即可高效取得即使是複雜 PDF 的結構化資料。此工具組足以支援多樣化情境——從發票自動化到大規模資料分析——且能無縫整合於 Java 應用程式。只要稍作設定與客製化,您就能將靜態 PDF 轉換為可操作的資料,精準且輕鬆。


最後更新: 2026-02-09
測試環境: GroupDocs.Parser 25.5 (Java)
作者: GroupDocs