如何使用 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