在 PDF 文檔的 .NET 平臺處理流程中,使用 C# 讀取 PDF 條碼?是一項常見需求,特別適用于處理掃描件或電子表單。無論是物流、金融、醫療還是制造行業,PDF 文檔中經常包含用于追蹤或識別的條碼。這些條碼可能是嵌入圖像,也可能是矢量繪制圖形。通過自動識別,可顯著減少人工操作并提升數據處理效率。
本文將介紹兩種方法,講述如何使用 C# 從 PDF 中提取條碼信息:一種是提取 PDF 頁面中的嵌入圖片后識別條碼,另一種是將整個頁面渲染為圖像再進行識別。這兩種方法都支持識別多種 1D 和 2D 條碼類型。
環境準備
要在 C# 中實現 PDF 條碼識別功能,你需要以下工具:
- 支持 NuGet 包的 C# 項目環境(如 .NET Framework、.NET Core 或 .NET)。
- 安裝兩個核心組件:Spire.Barcode for .NET(用于條碼識別)和?Spire.PDF for .NET(用于 PDF 處理)。
Spire.PDF for .NET? ? ?Spire.Barcode for .NET
加入Spire技術交流QQ群(125237868),與更多開發者一起提升文檔開發技能。
通過 NuGet 安裝命令如下:
Install-Package Spire.Barcode Install-Package Spire.PDF
如何在 C# 中讀取 PDF 條碼
下面將介紹兩種方式從 PDF 中提取條碼數據,可根據 PDF 文件中條碼的具體類型選擇合適的方法。
方法一:提取 PDF 圖片并識別條碼
適用于掃描類 PDF,通常每一頁都包含條碼圖像。可通過?BarcodeScanner.ScanOne()?方法讀取單個圖像中的一個條碼。
示例代碼:
using Spire.Barcode; using Spire.Pdf; using Spire.Pdf.Utilities; using System.Drawing;namespace ReadPDFBarcodeByExtracting {class Program{static void Main(string[] args){// 載入PDF文件PdfDocument pdf = new PdfDocument();pdf.LoadFromFile("Sample.pdf");// 獲取頁面圖片信息PdfPageBase page = pdf.Pages[0];PdfImageHelper imageHelper = new PdfImageHelper();PdfImageInfo[] imagesInfo = imageHelper.GetImagesInfo(page);// 遍歷頁面圖片并讀取條碼信息int index = 0;foreach (PdfImageInfo imageInfo in imagesInfo){Image image = imageInfo.Image;string scanResult = BarcodeScanner.ScanOne((Bitmap)image);Console.WriteLine($"第 {index + 1} 個圖像的掃描結果:\n" + scanResult + "\n");index++;}}} }
以下圖像展示了 PDF 頁面截圖與條碼識別結果:
適用場景:PDF 是掃描件或條碼以圖像形式嵌入時。
方法二:保存 PDF 頁面為圖像并識別條碼
當條碼是通過矢量方式繪制在 PDF 頁面上(而非圖片)時,可將頁面渲染為圖像,再識別其中的條碼。此時使用?BarcodeScanner.Scan()?方法可識別多個條碼。
示例代碼:
using Spire.Barcode; using Spire.Pdf; using System.Drawing;namespace ReadPDFBarcodeByExtracting {class Program{static void Main(string[] args){// 載入PDF文件PdfDocument pdf = new PdfDocument();pdf.LoadFromFile("Sample.pdf");// 遍歷文檔頁面并保存頁面為圖像for (int i = 0; i < pdf.Pages.Count; i++){Image image = pdf.SaveAsImage(i);// 掃描識別圖像中的所有二維碼信息string[] scanResults = BarcodeScanner.Scan((Bitmap)image);for (int j = 0; j < scanResults.Length; j++){Console.WriteLine($"第 {i + 1} 頁第 {j + 1} 個條碼掃描結果:\n" + scanResults[j] + "\n");}}}} }
下面展示的是使用方法二識別 PDF 頁面中矢量條碼的效果:
適用場景:條碼是以繪圖形式嵌入頁面,而非圖片。
如何根據應用場景選擇方法
PDF 文件來源多為掃描件或在線系統生成,條碼既可能作為圖像嵌入,也可能直接繪制在頁面中,推薦根據實際情況靈活選擇方法。建議在不確定文檔結構時結合兩種方法使用,以提升識別成功率。
使用場景 | 推薦方法 |
---|---|
掃描件或圖像式條碼 | 提取嵌入圖片并識別 |
數字 PDF、矢量繪制條碼 | 渲染整頁圖像再識別 |
混合內容或不確定結構 | 可嘗試結合兩種方法使用 |
?總結
通過本教程,你可以使用?C# 從 PDF 中提取條碼信息,無論條碼是圖像嵌入還是矢量繪制,兩種方法都能為你提供穩定的識別結果。在數據自動化處理場景中,這將大幅提升效率與準確性。
常見問題解答
問:支持多頁 PDF 嗎?
答:支持。你可以循環處理 PDF 中的每一頁,逐頁識別條碼。
問:能否識別每頁多個條碼?
答:可以。使用?BarcodeScanner.Scan()?方法可返回圖像中所有檢測到的條碼。
問:提高識別精度的方法有哪些?
答:渲染頁面時可設置更高 DPI,例如使用?SaveAsImage(int pageIndex, PdfImageType.Bitmap, int dpiX, int dpiY)?方法,推薦 300 DPI 以上。