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