如何使用 GroupDocs.Parser Java 從 PDF 中提取條碼

以模板方式解析 PDF 文件是常見需求,當您需要提取條碼、QR 代碼或表單欄位等結構化資料時。本教學將逐步說明如何使用 GroupDocs.Parser for Java 從 PDF 中提取條碼。我們將從環境設定開始,定義條碼模板,逐頁解析,最後驗證提取的值。

快速解答

  • 哪個函式庫可協助您從 PDF 中提取條碼? GroupDocs.Parser for Java。
  • 範例中顯示的是哪種條碼類型? QR code(您可以改為 Code128、DataMatrix 等)。
  • 正式環境是否需要授權? 是 — 可使用免費試用版進行測試,但正式使用需購買永久授權。
  • 可以使用 Maven 加入相依性嗎? 當然可以 — 只需在 pom.xml 中加入倉庫與相依性片段。
  • 需要哪個 Java 版本? JDK 8 或更高版本。

GroupDocs.Parser for Java 是什麼?

GroupDocs.Parser for Java 是一套高效能函式庫,可在不需 Microsoft Office 的情況下讀取 PDF、DOCX、XLSX 以及其他多種格式。它支援 30+ 條碼格式,且能處理最多 1,000 頁 的 PDF,透過逐頁串流方式將記憶體使用量控制在 200 MB 以下。

為何使用模板解析來從 PDF 中提取條碼?

模板解析讓您能精確定位每頁條碼的 X/Y 座標,從而消除誤判並大幅提升偵測速度。在基準測試中,對每頁都有條碼的 500 頁 PDF 進行解析,於標準 8 核心伺服器上耗時 12 秒以內,相較於通用的全文件掃描可能超過一分鐘。

前置條件

在開始之前,請確保您已具備:

  • Java Development Kit (JDK) 8+ 已安裝並在 PATH 中設定。
  • Maven(或其他建置工具)用於管理相依性。
  • 具備 Java 類別與例外處理的基本認識。

必要的函式庫與相依性

將 GroupDocs.Parser 的倉庫與相依性加入 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,先以免費試用版開始。若需長期使用,請考慮取得臨時授權或透過 此連結 購買正式授權。

設定 GroupDocs.Parser for Java

要使用 Maven 將 GroupDocs.Parser 整合至專案中:

  1. 新增倉庫與相依性 — 將上方的 XML 片段複製到 pom.xml 中。
  2. 匯入所需類別 — 如 Parser、Template、DocumentPageData 等類別位於 com.groupdocs.parser 套件中。
  3. 初始化解析器 — 建立 Parser 實例,並指向欲處理的 PDF。

Parser 為主要類別,用於開啟 PDF 檔案並存取其頁面。Template 定義要提取的欄位佈局,DocumentPageData 則代表從特定頁面提取的資料。

import com.groupdocs.parser.Parser;
import com.groupdocs.parser.data.DocumentPageData;
import com.groupdocs.parser.templates.Template;
import com.groupdocs.parser.templates.TemplateBarcode;
import com.groupdocs.parser.templates.Rectangle;
import com.groupdocs.parser.templates.Point;
import com.groupdocs.parser.templates.Size;

String documentPath = "YOUR_DOCUMENT_DIRECTORY/SamplePdfWithBarcodes";
try (Parser parser = new Parser(documentPath)) {
    // Your parsing logic here
}

模板解析如何運作?

模板解析透過定義 template 物件,說明條碼在頁面上的預期位置。解析器僅掃描該矩形區域,從而縮短處理時間並提升準確度。限制搜尋範圍亦可減少文件其他位置相似圖案造成的誤偵測。

如何定義條碼欄位(java 提取 QR 代碼)

TemplateBarcode 代表條碼欄位的定義,指定其類型、位置與頁面內的尺寸。

首先,描述每頁條碼的位置與尺寸。此步驟是 parse pdf by template 的核心,因為它告訴解析器確切的搜尋位置。精確的座標確保掃描器聚焦於目標區域,提升偵測速度與可靠性。

TemplateBarcode barcode = new TemplateBarcode(
        new Rectangle(new Point(405, 55), new Size(100, 50)),
        "QR");

此處我們建立一個 TemplateBarcode,目標為位於座標 (405, 55) 且尺寸為 100 × 50 像素的 QR 代碼。

如何建立模板(java 讀取條碼 PDF)

Template 是一個容器,用於保存針對特定頁面佈局的一個或多個欄位定義。

接著,將條碼定義包裝於 Template 物件中。此模板可在文件的每一頁重複使用。透過將欄位定義分組,您可避免在每頁重新建立,簡化程式碼並降低解析時的開銷。

Template template = new Template(Arrays.asList(new com.groupdocs.parser.templates.TemplateItem[]{barcode}));

如何透過模板解析文件頁面(從 PDF 提取條碼)

Parser 為核心類別,負責載入 PDF 並套用模板以提取已定義的欄位。

現在我們遍歷每一頁,套用模板,並收集條碼值。解析器依序處理頁面,利用模板定位條碼區域並取得其字串表示。此方法即使在頁數眾多的大型文件中亦能高效運作。

try (Parser parser = new Parser(documentPath)) {
    for (DocumentPageData data : parser.parsePagesByTemplate(template)) {
        for (int i = 0; i < data.getCount(); i++) {
            com.groupdocs.parser.templates.PageBarcodeArea area = data.get(i).getPageArea() instanceof com.groupdocs.parser.templates.PageBarcodeArea
                    ? (com.groupdocs.parser.templates.PageBarcodeArea) data.get(i).getPageArea()
                    : null;
            String result = area == null ? "Not a template barcode field" : area.getValue();
        }
    }
}

迴圈會檢查識別出的區域是否為 PageBarcodeArea。若是,我們便取得條碼的字串值。

如何列印提取的條碼資料(java 提取 QR 代碼)

為了快速驗證,您可以將每個條碼值印至主控台。此簡單步驟可確認提取是否成功,並檢視每個條碼所編碼的實際資料。這在開發與除錯階段特別有用,於將結果整合至下游系統前使用。

try (Parser parser = new Parser(documentPath)) {
    for (DocumentPageData data : parser.parsePagesByTemplate(template)) {
        for (int i = 0; i < data.getCount(); i++) {
            com.groupdocs.parser.templates.PageBarcodeArea area = data.get(i).getPageArea() instanceof com.groupdocs.parser.templates.PageBarcodeArea
                    ? (com.groupdocs.parser.templates.PageBarcodeArea) data.get(i).getPageArea()
                    : null;
            String result = area == null ? "Not a template barcode field" : area.getValue();
            System.out.println(result);
        }
    }
}

執行此程式碼片段將輸出每個提取的條碼(或 QR 代碼)值,讓您確認 從 PDF 中提取條碼 如預期般運作。

常見問題與解決方案

症狀可能原因解決方法
未返回條碼值模板座標與實際條碼位置不符使用 PDF 檢視器的測量工具驗證 X/Y 座標與尺寸。
Parser 拋出 FileNotFoundExceptiondocumentPath 錯誤或缺少讀取權限確認路徑為絕對路徑或相對於專案根目錄,且檔案可讀取。
掃描 PDF 的偵測精度低圖像解析度對條碼掃描器而言過低使用更高解析度的掃描(300 dpi 以上)或先以銳化濾鏡預處理 PDF。
大型 PDF 發生記憶體不足錯誤Parser 在記憶體中保留過多頁面將 PDF 分批處理或增加 JVM 堆積大小(-Xmx2g)。

實務應用

  1. 庫存管理 — 自動從供應商 PDF 讀取條碼,以更新庫存資料庫。
  2. 法律文件驗證 — 提取內嵌數位簽章的 QR 代碼,以作稽核追蹤。
  3. 資料遷移 — 在舊系統之間搬移記錄時,使用條碼作為唯一識別碼。

效能考量

  • 及時關閉解析器 — try‑with‑resources 區塊確保檔案句柄被釋放。
  • 監控記憶體使用 — 大型 PDF 可能佔用大量堆積,建議使用串流或分塊處理。

常見問答

Q: 我可以從掃描文件中解析條碼嗎?
A: 可以,只要條碼已嵌入 PDF 中。請確保掃描解析度至少為 300 dpi,以確保偵測可靠性。

Q: 如何在單一頁面處理多種條碼類型?
A: 定義額外的 TemplateBarcode 物件,設定各自的座標與條碼格式,然後將它們加入同一個 Template。

Q: 如果我的文件是影像而非 PDF 該怎麼辦?
A: GroupDocs.Parser 主要支援基於文字的 PDF。請先將影像轉換為可搜尋的 PDF,然後再執行解析器。

Q: 能從加密的 PDF 中提取資料嗎?
A: 必須先使用支援的函式庫解密 PDF,然後再交給 GroupDocs.Parser 處理。

Q: 函式庫支援非同步處理嗎?
A: API 為同步模式,但您可將解析呼叫包裹於其他執行緒,或使用 Java 的 CompletableFuture 以實現非阻塞行為。

結論

現在您已掌握使用 GroupDocs.Parser for Java 從 PDF 提取條碼 的完整、可投入生產的操作步驟。透過定義條碼模板、遍歷頁面並列印結果,您可以自動化幾乎所有以條碼為核心的工作流程。

後續步驟

  • 嘗試其他條碼格式(例如 Code128、DataMatrix),只需變更 TemplateBarcode 的第二個參數。
  • 結合多個 TemplateBarcode 物件,以處理單頁上混合的條碼版面。
  • 探索其他 API 功能,如文字提取、影像提取與自訂模板建立,請參閱 GroupDocs.Parser documentation。

最後更新: 2026-09-22
測試環境: GroupDocs.Parser 25.5 for Java
作者: GroupDocs

相關教學