使用 Java 解析提取發票資料 – GroupDocs.Parser
在當今快速變化的商業環境中,快速且準確地 extract invoice data 是自動化財務工作流程的關鍵步驟。無論您是處理單張發票或是批量處理上千張,GroupDocs.Parser for Java 允許您定義彈性模板、使用正則表達式,並 create linked fields 以適應任何文件版面。本教學將逐步說明如何設定庫、建立能 extract invoice data 的模板,以及大規模解析文件。
快速解答
- What does “extract invoice data” mean? 它指的是以程式方式從 PDF、DOCX 或影像檔案中提取發票號碼、日期、稅額與總額等欄位。
- Which library should I use? GroupDocs.Parser for Java 提供強大的基於模板的提取功能,支援正則表達式。
- Can I process many files at once? 可以 — 將解析器與批次文件處理技術結合使用。
- Do I need a license? 免費試用或臨時授權可用於評估;正式環境需購買授權。
- Is it suitable for Java 8+? 當然可以 — 此庫支援 JDK 8 及更新版本。
什麼是 “extract invoice data”?
提取發票資料指的是自動定位並取得關鍵資訊——如發票號碼、日期、稅額與總額——直接從數位文件中擷取,從而免除手動輸入。
為什麼使用 GroupDocs.Parser for Java?
- High accuracy 具備正則表達式與 linked‑field 定位的高精度。
- Supports many formats 支援多種格式(PDF、DOCX、影像)。
- Scalable — 適用於單文件與批次文件處理的情境。
- Easy integration 可輕鬆整合至現有的 Java 應用程式。
前置條件
- JDK 8 或更高版本。
- 任一 IDE(IntelliJ IDEA、Eclipse 等)。
- 取得 GroupDocs.Parser for Java 程式庫(下載或 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 下載最新的 JAR。
知識前置條件
具備基本的 Java 程式設計與檔案 I/O 知識,將使步驟更順暢。
設定 GroupDocs.Parser for Java
- Add the Maven dependency(或 JAR)至您的專案。
- Obtain a license — 您可以從 here 取得免費試用或臨時授權。
- Initialize the parser — 以下程式碼片段示範所需的匯入與簡易初始化。
import com.groupdocs.parser.Parser;
import com.groupdocs.parser.data.*;
import com.groupdocs.parser.templates.*;
如何在模板中建立 Linked Fields
Linked fields 讓您捕捉相對於另一已知欄位固定偏移位置的資料(例如,緊跟在 “Tax” 之後的稅額)。
定義正則表達式欄位
首先,我們使用正則表達式模式定位標籤 Tax。
// Create a template field with a regex position
TemplateField regexField = new TemplateField(
new TemplateRegexPosition("Tax"),
"Tax");
設定 Linked Field
接著,我們定義實際稅額欄位,位置相對於 Tax 標籤。
// Create a linked field based on the position of 'Tax'
TemplateField linkedField = new TemplateField(
new TemplateLinkedPosition(
"Tax",
new Size(100, 20),
new TemplateLinkedPositionEdges(false, false, true, false)),
"TaxValue");
組合模板
將正則表達式欄位與 Linked Field 結合成單一的模板物件。
// Combine both fields into a comprehensive template
Template templateWithRegexAndLink = new Template(Arrays.asList(
new TemplateItem[]{regexField, linkedField}));
如何使用已定義的模板提取發票資料
現在模板已就緒,我們即可解析發票並取得所需的值。
解析文件
開啟 PDF(或任何支援的格式)並套用模板。
try (Parser parser = new Parser("YOUR_DOCUMENT_DIRECTORY/InvoiceSample.pdf")) {
// Extract data according to the defined template
DocumentData data = parser.parseByTemplate(templateWithRegexAndLink);
迭代提取的資料
遍歷結果,並印出每個欄位的名稱與值。
// Loop through all extracted data items
for (int i = 0; i < data.getCount(); i++) {
Object pageArea = data.get(i).getPageArea();
if (pageArea instanceof PageTextArea) {
PageTextArea area = (PageTextArea) pageArea;
System.out.println(data.get(i).getName() + ": " + area.getText());
} else {
System.out.println(data.get(i).getName() + ": Not a template field");
}
}
}
疑難排解技巧
- 驗證檔案路徑並確保文件可存取。
- 在嵌入之前,使用如 regex101.com 等工具測試您的正則表達式。
- 若 Linked Field 未正確擷取,請調整
TemplateLinkedPosition中的Size與 edge 設定。
實務應用
真實案例
- Invoice Processing — 自動提取發票號碼、日期、稅額與總額以供會計系統使用。
- Contract Management — 擷取當事人、有效日期與關鍵條款。
- Customer Data Extraction — 從填寫好的表單中提取訂單細節。
整合可能性
將提取的資料與 ERP 或 CRM 平台結合,打造端對端的自動化工作流程。
批次文件處理技巧
在處理 batch document processing 時,請考慮:
- 重複使用單一
Parser實例處理多個檔案,以減少開銷。 - 在平行串流或執行服務中執行解析任務。
- 將提取結果儲存於資料庫或 CSV,以供後續報告使用。
效能考量
- Simplify templates — 欄位較少、正則表達式較簡單可加速解析。
- Manage memory — 及時關閉
Parser物件(如使用 try‑with‑resources 所示)。 - Process in batches — 將文件分批處理,以平衡 CPU 與 I/O 使用。
常見問題
Q: What is GroupDocs.Parser for Java?
A: 它是一個 Java 程式庫,使用可自訂模板從 PDF、Word 文件、影像等檔案中提取結構化資料。
Q: How do I set up a Maven project with GroupDocs.Parser?
A: 在您的 pom.xml 中加入上述 Maven 區塊所示的儲存庫與 <dependency>。
Q: Can I use GroupDocs.Parser without purchasing a license?
A: 可以,您可以先使用免費試用或取得臨時授權以進行評估。
Q: What are linked fields in templates?
A: Linked fields 為相對於另一欄位定位的模板元素,允許根據版面精確擷取。
Q: How can I scale the solution for thousands of invoices?
A: 實作批次文件處理、重複使用 parser 實例,並考慮多執行緒以有效處理大量發票。
結論
遵循本指南後,您已了解如何使用 Java 解析 extract invoice data、運用正則表達式,並 create linked fields 以適應任何發票版面。可嘗試不同模板,將輸出整合至您的財務系統,並探索如自訂資料轉換器與 OCR 支援等進階功能。
最後更新: 2026-02-11
測試版本: GroupDocs.Parser 25.5
作者: GroupDocs