如何使用 GroupDocs.Parser 進行 Java PDF 表格提取
在本完整教學中,您將學習如何使用 GroupDocs.Parser 函式庫執行 java pdf table extraction。無論您需要提取財務表格、發票項目或研究資料,本指南都會指導您檢查文件支援、定義精確的表格佈局,並有效地提取資料以供後續 Java 處理使用。
快速解答
- GroupDocs.Parser 能從 PDF 讀取表格嗎? 是 – 它提供原生的 PDF 以及其他多種格式的表格提取功能。
- 開發時需要授權嗎? 您可以先使用免費試用版;在正式環境中需要授權。
- 需要哪個 Java 版本? JDK 8 或更高版本。
- Maven 是唯一加入此函式庫的方式嗎? 否 – 您也可以直接下載 JAR。
- 這能處理受密碼保護的檔案嗎? 是,只需在建立
Parser實例時提供密碼。
什麼是 java pdf table extraction?
Java pdf table extraction 是使用 Java 程式碼以程式化方式讀取嵌入於 PDF(或 Word)檔案中的表格結構的過程。GroupDocs.Parser 抽象化低層解析,將每個儲存格以純文字返回,方便進行分析或匯入資料庫。它同時支援掃描版與原生 PDF,能處理合併儲存格與跨頁表格,且無需額外設定。
為何使用 GroupDocs.Parser 進行表格提取?
GroupDocs.Parser 支援 50+ 種輸入與輸出格式——包括 PDF、DOCX、PPTX 與 HTML——讓您可以在不同文件類型間重複使用相同的 API。其基於佈局的提取在複雜表格上可達 最高 98 % 的準確率,且函式庫透過串流方式處理上百頁的 PDF,將記憶體使用量控制在 200 MB 以下。
前置條件
- 已安裝 Java Development Kit (JDK) 8+。
- 用於相依管理的 Maven(或手動 JAR 處理)。
- 具備 Java 語法與物件導向概念的基本認識。
為 Java 設定 GroupDocs.Parser
Maven 設定
如果您使用 Maven 管理相依性,請將以下儲存庫與相依性加入您的 pom.xml:
<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.Parser for Java releases 下載最新版本。請依照其網站提供的安裝說明操作。
取得授權
若要完整使用 GroupDocs.Parser 功能,建議取得授權。您可以先使用免費試用版,或依照 購買頁面 的步驟取得臨時授權。
設定完成後,讓我們進一步進行實際的 java pdf table extraction 實作。
實作指南
檢查文件是否支援表格提取
此文件是否支援表格提取?
首先需要確認目標檔案能否進行表格處理。GroupDocs.Parser 會公開一個功能旗標,告訴您該格式是否支援表格提取,從而避免執行時產生不必要的錯誤。
- Parser 初始化:
Parser類別是載入文件至記憶體的入口點。 - 功能檢查: 呼叫
parser.getFeatures().isTables();若支援表格提取則回傳true。
import com.groupdocs.parser.Parser;
import com.groupdocs.parser.data.IDocumentInfo;
public class TableExtractionCheck {
public static void main(String[] args) {
try (Parser parser = new Parser("YOUR_DOCUMENT_DIRECTORY/your_document.pdf")) {
// Check if the document supports table extraction.
if (!parser.getFeatures().isTables()) {
System.out.println("Document doesn't support table extraction.");
} else {
System.out.println("Document supports table extraction. Proceeding...");
extractTablesFromDocument();
}
}
}
}
建立表格佈局以進行提取
如何定義精確的表格佈局?
佈局告訴引擎欄位與列的起始位置,對於自動偵測可能遺漏合併儲存格或間距不規則的複雜 PDF 極為重要。
- 欄列座標: 為每個欄位指定 X 軸的起始/結束位置,為每列指定 Y 軸位置。
- TemplateTableLayout: 此物件儲存座標映射,稍後會傳遞給提取呼叫。
import com.groupdocs.parser.templates.TemplateTableLayout;
public class TableExtractionSetup {
public static TemplateTableLayout createTemplateTableLayout() {
return new TemplateTableLayout(
java.util.Arrays.asList(new Double[]{50.0, 95.0, 275.0, 415.0, 485.0, 545.0}),
java.util.Arrays.asList(new Double[]{325.0, 340.0, 365.0, 395.0})
);
}
}
從文件頁面提取表格
提取表格的逐步流程是什麼?
在確認支援與定義佈局後,您會遍歷每一頁,請求表格資料,並將結果收集至 Java 集合以供後續處理。
- 頁面遍歷: 迴圈
parser.getPages()以處理多頁 PDF。 - 表格提取: 使用
parser.getTables(pageIndex, options),其中options包含先前定義的佈局。
import com.groupdocs.parser.Parser;
import com.groupdocs.parser.data.PageTableArea;
import com.groupdocs.parser.data.IDocumentInfo;
import com.groupdocs.parser.options.PageTableAreaOptions;
public class TableExtractionProcess {
public static void extractTablesFromDocument() {
try (Parser parser = new Parser("YOUR_DOCUMENT_DIRECTORY/your_document.pdf")) {
IDocumentInfo documentInfo = parser.getDocumentInfo();
if (documentInfo.getPageCount() > 0) {
PageTableAreaOptions options = new PageTableAreaOptions(TableExtractionSetup.createTemplateTableLayout());
for (int pageIndex = 0; pageIndex < documentInfo.getPageCount(); pageIndex++) {
Iterable<PageTableArea> tables = parser.getTables(pageIndex, options);
for (PageTableArea table : tables) {
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) {
System.out.print(cell.getText() + " | ");
}
}
System.out.println();
}
System.out.println();
}
}
} else {
System.out.println("Document has no pages.");
}
}
}
}
java pdf table extraction 的實際應用
在多種實務情境中實作表格提取都相當有益:
- 資料分析: 從財務報告或科學論文中提取結構化資料,以供後續分析。
- 發票處理: 自動從發票中提取項目,並將資料匯入會計系統。
- 文件管理: 將提取的表格資料與全文內容一起索引,以提升 DMS 解決方案的可搜尋性。
效能考量
使用 GroupDocs.Parser 時的最佳效能建議如下:
- 優化記憶體使用: 為大型 PDF 分配足夠的堆空間(例如
-Xmx2g)。 - 批次處理: 將多個文件合併於同一工作,以減少 JVM 暖機開銷。
- 有效的佈局: 精確的座標定義可縮小掃描範圍,將提取速度提升最高達 30 %。
常見問題與解決方案
| 問題 | 原因 | 解決方案 |
|---|---|---|
| 未返回表格 | 佈局座標與實際表格位置不符 | 使用檢視器的尺規核對 PDF 中的欄列座標。 |
| 記憶體不足錯誤 | 整個大型文件一次載入 | 使用串流模式或增加 JVM 堆積大小(-Xmx)。 |
| 空儲存格 | 表格包含佈局未涵蓋的合併儲存格 | 調整佈局以包含合併儲存格邊界,或在未使用佈局的情況下使用預設提取。 |
常見問答
Q: 我可以從其他文件格式提取表格嗎?
A: 可以,GroupDocs.Parser 支援 DOCX、PPTX、TXT 等多種格式。請參閱官方文件以取得完整清單。
Q: 開發版需要授權嗎?
A: 免費試用授權足以應付開發與測試。正式部署則需商業授權。
Q: GroupDocs.Parser 如何處理受密碼保護的 PDF?
A: 在建立 Parser 物件時提供密碼,例如 new Parser(filePath, password)。函式庫會自動解密檔案。
Q: 可以在未定義佈局的情況下提取表格嗎?
A: 可以,您可以直接呼叫 parser.getTables(pageIndex) 而不提供選項,但基於佈局的提取在複雜表格上能提供更高的準確度。
Q: 哪個版本的 GroupDocs.Parser 相容於 Java 11?
A: 本指南使用的 25.5 版完整支援 Java 8‑17,包括 Java 11。
結論
您現在已掌握使用 GroupDocs.Parser 進行 java pdf table extraction 的生產就緒方法。透過驗證文件功能、定義自訂的 TemplateTableLayout,以及遍歷頁面,您能可靠地提取結構化資料,以供任何後續的 Java 工作流程使用。
後續步驟
- 在 documentation 中探索進階功能,如 表格合併、儲存格格式化 與 匯出為 CSV。
- 嘗試不同的佈局設定,以因應文件集合中多樣的表格設計。
最後更新: 2026-09-17
測試環境: GroupDocs.Parser 25.5 for Java
作者: GroupDocs