使用 Java 解析的批次發票處理 – GroupDocs.Parser

在當今快速變化的商業環境中,批次發票處理對於減少人工工作量和消除資料輸入錯誤至關重要。使用 GroupDocs.Parser for Java,您可以自動從 PDF、DOCX 檔案或掃描圖像中提取發票號碼、日期、稅額和總額。本教程將指導您設定庫、建立可重用的範本,並將解決方案擴展至一次處理數千張發票。

快速答案

  • 「提取發票資料」是什麼意思? 它指的是以程式方式從 PDF、DOCX 或圖像檔案中提取發票號碼、日期、稅額和總額等欄位。
  • 我應該使用哪個函式庫? GroupDocs.Parser for Java 提供基於範本的提取,並支援完整的正則表達式。
  • 我可以一次處理多個檔案嗎? 可以 — 結合解析器與批次處理模式,即可有效處理大量檔案。
  • 我需要授權嗎? 免費試用或臨時授權可用於評估;正式使用則需購買授權。
  • 它適用於 Java 8 以上嗎? 絕對適用 — 此函式庫支援 JDK 8 及更新版本。

什麼是「提取發票資料」?

提取發票資料是從數位文件中自動取得關鍵發票欄位(例如發票號碼、開立日期、稅額與應付總額)的過程。透過程式化定位這些數值,企業可消除手動資料輸入、降低錯誤,並加速後續的會計、報表與分析等處理。

為什麼要使用 GroupDocs.Parser for Java?

GroupDocs.Parser for Java 透過結合正則表達式匹配與連結欄位定位,提供高精度提取。它支援超過 30 種輸入與輸出格式,包括 PDF、DOCX 以及常見的圖像類型,且能在不將整個檔案載入記憶體的情況下處理數百頁的文件。這使其非常適合單一文件情境以及大規模批次發票處理管線。

先決條件

  • JDK 8 或更高版本已安裝於開發機器上。
  • 使用 IntelliJ IDEA 或 Eclipse 等 IDE。
  • 取得 GroupDocs.Parser for Java 函式庫(可從 Maven 套件庫或以 JAR 形式下載)。

所需函式庫、版本與相依性

將儲存庫與相依性加入您的 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>

您也可以下載最新的 JAR,網址為 GroupDocs.Parser for Java releases。

知識先備

具備 Java 程式設計與檔案 I/O 的基本概念,將使步驟更順暢。

設定 GroupDocs.Parser for Java

  1. 將 Maven 相依性(或 JAR)加入您的專案。
  2. 取得授權 — 您可以從臨時授權頁面開始使用免費試用或臨時授權。
  3. 初始化解析器 — 以下程式碼片段示範所需的匯入與簡易初始化。
import com.groupdocs.parser.Parser;
import com.groupdocs.parser.data.*;
import com.groupdocs.parser.templates.*;

如何在範本中建立連結欄位

直接回答: 連結欄位允許您捕獲相對於另一已知欄位固定偏移位置的資料(例如,緊跟在「Tax」字樣之後的稅額)。先以正則表達式模式定義標籤欄位(例如「Tax」),再建立一個連結欄位,提取位於該標籤右側數個字元處的值。此兩步驟方法確保即使文件版面變化,提取的值仍與其標籤對齊。

定義正則表達式欄位

首先,我們使用正則表達式模式定位標籤 Tax。

// Create a template field with a regex position
TemplateField regexField = new TemplateField(
        new TemplateRegexPosition("Tax"), 
        "Tax");

設定連結欄位

接著,我們定義實際稅額的欄位,其位置相對於 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");

組合範本

將正則表達式欄位與連結欄位合併為單一範本物件。

// Combine both fields into a comprehensive template
Template templateWithRegexAndLink = new Template(Arrays.asList(
        new TemplateItem[]{regexField, linkedField}));

如何使用已定義的範本提取發票資料

直接回答: Parser 是用來讀取與解析文件的核心類別。使用 Parser parser = new Parser("invoice.pdf") 載入目標文件,透過 parser.parse(template) 套用先前建立的範本,然後遍歷 Field 集合以讀取每個提取的值。此過程會回傳一個結構化的映射,將欄位名稱對應到其提取的字串,供後續處理使用。

解析文件

開啟 PDF(或任何支援的格式)並套用範本。

try (Parser parser = new Parser("YOUR_DOCUMENT_DIRECTORY/InvoiceSample.pdf")) {
    // Extract data according to the defined template
    DocumentData data = parser.parseByTemplate(templateWithRegexAndLink);

遍歷提取的資料

Field 代表一筆提取的資料,包含其名稱與值。遍歷結果並印出每個欄位的名稱與值。

    // 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");
        }
    }
}

故障排除提示

TemplateLinkedPosition 定義了文件中連結欄位的相對位置與大小。

  • 確認檔案路徑並確保文件可存取。
  • 在嵌入之前,使用如 regex101.com 等工具測試您的正則表達式。
  • 若連結欄位未正確捕獲,請調整 TemplateLinkedPosition 中的 Size 與邊緣設定。

實務應用

真實案例

  • 發票處理 — 自動提取發票號碼、日期、稅額與總額,以供會計系統使用。
  • 合約管理 — 從法律協議中提取當事人、有效日期與關鍵條款。
  • 客戶資料提取 — 從已填寫的訂單表單中提取訂單細節。

整合可能性

您可以將提取的資料匯入 ERP 或 CRM 平台,存入關聯式資料庫,或傳送至下游分析管線,以進行即時財務報告。

批次文件處理技巧

在處理批次發票處理時,請考慮:

  • 重複使用單一 Parser 實例處理多個檔案,以減少開銷。
  • 在平行串流或 executor services 中執行解析任務,以利用多核心 CPU。
  • 將提取結果持久化至 CSV 檔案或資料庫,以供下游使用。
    ExecutorService 是 Java 的併發工具,可管理執行緒池以非同步執行任務。

效能考量

  • 簡化範本 — 欄位較少、正則表達式較簡單可加速解析。
  • 管理記憶體 — 使用 try‑with‑resources 及時關閉 Parser 物件。
  • 批次處理 — 將文件分組,以平衡 CPU 與 I/O 使用,避免資源消耗峰值。

常見問題

Q: 什麼是 GroupDocs.Parser for Java?
A: GroupDocs.Parser for Java 是一個使用可自訂範本與正則表達式,從 PDF、Word 文件、圖像及其他格式提取結構化資料的函式庫。

Q: 如何使用 GroupDocs.Parser 設定 Maven 專案?
A: 將上述 Maven 區塊中顯示的儲存庫與 <dependency> 加入您的 pom.xml,然後執行 mvn clean install 以下載函式庫。

Q: 我可以在未購買授權的情況下使用 GroupDocs.Parser 嗎?
A: 可以,您可以先使用免費試用或取得臨時授權以進行評估。

Q: 範本中的連結欄位是什麼?
A: 連結欄位是其位置相對於另一欄位定義的範本元素,允許根據文件版面進行精確提取。

Q: 如何將解決方案擴展至處理數千張發票?
A: 實作批次處理、重複使用 parser 實例,並使用多執行緒(例如 Java ExecutorService)同時解析多個檔案,同時監控記憶體使用情況。

結論

透過本指南,您現在已了解如何使用 Java 解析提取發票資料,運用正則表達式,並建立連結欄位以適應任何發票版面。嘗試不同的範本,將輸出整合至您的財務系統,並探索進階功能,如自訂資料轉換器與掃描發票的 OCR 支援。


最後更新: 2026-09-22
測試版本: GroupDocs.Parser 25.5
作者: GroupDocs

相關教學