如何使用 IronOCR 在 C# 中讀取 BARCODE 與 QR 碼
IronOCR 可透過在設定中設定 ReadBarCodes = true,以 C# 讀取 BarCode 和 QR 碼。 此單一設定可讓系統在執行一般文字辨識的同時,自動從 PDF 檔案和圖像中擷取 BARCODE 值,支援超過 20 種 BARCODE 格式,包括 QR 碼、Code 128 及 Data Matrix。
快速入門:立即從 PDF 讀取 BarCode
只需一項設定即可啟用 BarCode 偵測,並使用 IronOCR 掃描 PDF 檔案。 以下程式碼示範如何啟用 BARCODE 讀取功能、處理 PDF 檔案,以及擷取解碼後的數值。
-
using NuGet 套件管理員安裝 https://www.nuget.org/packages/IronOcr
PM > Install-Package IronOcr -
請複製並執行此程式碼片段。
var result = new IronOcr.IronTesseract() { Configuration = new IronOcr.TesseractConfiguration { ReadBarCodes = true } }.Read(new IronOcr.OcrPdfInput("document.pdf")); foreach(var bc in result.Barcodes) Console.WriteLine(bc.Value); -
部署至您的生產環境進行測試
立即透過免費試用,在您的專案中開始使用 IronOCR
如何使用 IronOCR 在 C# 中讀取 BarCode 與 QR 碼
- 下載 C# 函式庫以讀取 BarCode 和 QR 碼。
- 請匯入目標圖片及 PDF 文件。
- 將 ReadBarCodes 屬性設定為 true,即可啟用 BarCode 讀取功能。
- 請照常使用
Read方法如常執行 OCR。 - 輸出偵測到的文字與BarCode值。
如何從 PDF 文件中讀取 BarCode?
建立一個 IronTesseract 物件以執行讀取作業。 將 ReadBarCodes 屬性設為 true 以啟用 BarCode 偵測功能。 請使用 OcrPdfInput 建構函式匯入 PDF 文件。 請使用 `` 方法對匯入的 PDF 執行 OCR 處理。
以下是使用此 PDF 文件的範例:
:path=/static-assets/ocr/content-code-examples/how-to/barcodes-read-barcodes.cs
using IronOcr;
using System;
// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();
// Enable barcode reading
ocrTesseract.Configuration.ReadBarCodes = true;
// Add PDF
using var imageInput = new OcrPdfInput("pdfWithBarcodes.pdf");
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
// Output detected barcodes and text values
Console.WriteLine("Extracted text:");
Console.WriteLine(ocrResult.Text);
Console.WriteLine("Extracted barcodes:");
foreach (var barcode in ocrResult.Barcodes)
{
Console.WriteLine(barcode.Value);
}
Imports IronOcr
Imports System
' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()
' Enable barcode reading
ocrTesseract.Configuration.ReadBarCodes = True
' Add PDF
Dim imageInput = New OcrPdfInput("pdfWithBarcodes.pdf")
' Perform OCR
Dim ocrResult As OcrResult = ocrTesseract.Read(imageInput)
' Output detected barcodes and text values
Console.WriteLine("Extracted text:")
Console.WriteLine(ocrResult.Text)
Console.WriteLine("Extracted barcodes:")
For Each barcode In ocrResult.Barcodes
Console.WriteLine(barcode.Value)
Next barcode
BarCode下方會顯示多個BarCode值,這些值會包含在擷取的文字中。
為什麼 IronOCR 會同時擷取文字和 BarCode 的值?
IronOCR 的雙重擷取功能可提供全面的文件分析。 在處理同時包含文字與 BarCode 的文件時,此函式庫會執行標準的 OCR 文字擷取,同時解碼 BarCode 符號系統。 這種統一的方法,可免除多次處理流程或使用獨立函式庫的必要。
文字擷取功能可捕捉人類可讀的元素,而BarCode偵測功能則能識別並解碼機器可讀的資料。 這對於發票、運送標籤或庫存報告等文件特別有用,因為這些文件中的BarCode值與列印文字相互關聯。 OcrResult 類別會將這些輸出分開——透過 Text 屬性存取文字,並透過 Barcodes 集合存取 BARCODE 資料。
支援哪些BarCode格式?
IronOCR 支援超過 20 種 BarCode 格式:
1D BarCode:
- Code 128、Code 39、Code 93
- EAN-13、EAN-8
- UPC-A、UPC-E
- Codabar
- ITF (交錯 2 選 5)
- MSI
- Plessey
2D BarCode:
- QR 碼
- 數據矩陣
- PDF417
- 阿茲特克密碼
- MaxiCode
對於讀取 MICR 支票或處理身分證明文件等專業應用,IronOCR 的 BARCODE 功能可與其文字擷取功能相輔相成。
何時應使用 OCR 進行 BarCode 讀取,而非專用的 BarCode 函式庫?
在以下情況下,請選擇 IronOCR 的整合式 BarCode 讀取功能:
- 混合內容處理:文件同時包含文字與BARCODE(如運送標籤、發票或掃描文件)
- 單一函式庫偏好:您希望盡量減少依賴項,並採用單一解決方案
- PDF 處理:您已經在使用 IronOCR 進行 PDF OCR 文字擷取
- 複雜的文件版面配置:文件中的BarCode嵌入在文字區域或表格內
在以下情況下請使用專用的BarCode庫:
- 處理大量僅含 BarCode 的圖像
- 需具備即時 BARCODE 掃描功能(回應時間 < 50 毫秒)
- 處理受損或品質不佳的 BARCODE,需採用專用演算法
- 透過相機優化實現行動裝置BarCode掃描
如何從文件中讀取 QR 碼?
如同讀取 BARCODE 一樣,請將 ReadBarCodes 屬性設定為 true。 除檔案路徑外,無需進行其他程式碼變更。 處理此包含 QR 碼的 PDF 文件:
:path=/static-assets/ocr/content-code-examples/how-to/barcodes-read-qr-codes.cs
using IronOcr;
using System;
// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();
// Enable barcode reading
ocrTesseract.Configuration.ReadBarCodes = true;
// Add PDF
using var imageInput = new OcrPdfInput("pdfWithQrCodes.pdf");
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
// Output detected barcodes and text values
Console.WriteLine("Extracted text:");
Console.WriteLine(ocrResult.Text);
Console.WriteLine("Extracted barcodes:");
foreach (var barcode in ocrResult.Barcodes)
{
Console.WriteLine(barcode.Value);
}
Imports IronOcr
Imports System
' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()
' Enable barcode reading
ocrTesseract.Configuration.ReadBarCodes = True
' Add PDF
Dim imageInput = New OcrPdfInput("pdfWithQrCodes.pdf")
' Perform OCR
Dim ocrResult As OcrResult = ocrTesseract.Read(imageInput)
' Output detected barcodes and text values
Console.WriteLine("Extracted text:")
Console.WriteLine(ocrResult.Text)
Console.WriteLine("Extracted barcodes:")
For Each barcode In ocrResult.Barcodes
Console.WriteLine(barcode.Value)
Next barcode
為何相同的設定能同時適用於 BarCode 和 QR 碼?
IronOCR 的統一 BarCode 偵測引擎將所有機器可讀代碼一視同仁。 ReadBarCodes 設定會啟用一套全面的符號識別器,該識別器能辨識 1D(線性 BarCode)與 2D(QR 碼、Data Matrix)格式,且無需進行特定格式的設定。 此設計簡化了實作流程,並降低了設定的複雜度。
偵測演算法會自動:
- 根據圖案辨識來識別符號類型
- 採用適當的解碼演算法
- 支援各種方向與尺寸變體
- 無論BarCode類型為何,皆以一致的格式返回結果
此方法與電腦視覺模型的運作方式相仿——透過訓練多種格式來提供通用的偵測能力。
使用 OCR 讀取 QR 碼時常見哪些問題?
處理 QR 碼時常見的挑戰包括:
-
解析度問題:PDF 中的 QR 碼可能因縮放而低於最小模組尺寸。請使用 DPI 設定確保足夠的解析度(建議至少 300 DPI)。
- 影像品質:掃描後的 QR 碼常會出現模糊、雜訊或變形等問題。 套用影像修正濾鏡以提升清晰度:
// Apply filters to improve QR code readability
ocrTesseract.Co/nfiguration.ReadBarCodes = true;
var input = new OcrImageInput("qr-code-scan.jpg");
input.DeNoise();
input.Sharpen();
input.EnhanceResolution();
var result = ocrTesseract.Read(input);
// Apply filters to improve QR code readability
ocrTesseract.Co/nfiguration.ReadBarCodes = true;
var input = new OcrImageInput("qr-code-scan.jpg");
input.DeNoise();
input.Sharpen();
input.EnhanceResolution();
var result = ocrTesseract.Read(input);
' Apply filters to improve QR code readability
ocrTesseract.Configuration.ReadBarCodes = True
Dim input As New OcrImageInput("qr-code-scan.jpg")
input.DeNoise()
input.Sharpen()
input.EnhanceResolution()
Dim result = ocrTesseract.Read(input)
如何提升 QR 碼辨識的準確度?
運用以下技巧優化 QR 碼辨識:
- 圖片預處理:使用"濾鏡精靈"來確定最佳的增強設定:
// Enhanced QR code reading with preprocessing
var ocrTesseract = new IronTesseract();
ocrTesseract.Co/nfiguration.ReadBarCodes = true;
// Configure for better QR detection
var input = new OcrImageInput("document-with-qr.pdf");
input.TargetDPI = 300; // Ensure sufficient resolution
input.Binarize(); // Convert to black and white
input.DeNoise(); // Remove image artifacts
var result = ocrTesseract.Read(input);
// Enhanced QR code reading with preprocessing
var ocrTesseract = new IronTesseract();
ocrTesseract.Co/nfiguration.ReadBarCodes = true;
// Configure for better QR detection
var input = new OcrImageInput("document-with-qr.pdf");
input.TargetDPI = 300; // Ensure sufficient resolution
input.Binarize(); // Convert to black and white
input.DeNoise(); // Remove image artifacts
var result = ocrTesseract.Read(input);
Imports IronOcr
' Enhanced QR code reading with preprocessing
Dim ocrTesseract As New IronTesseract()
ocrTesseract.Configuration.ReadBarCodes = True
' Configure for better QR detection
Dim input As New OcrImageInput("document-with-qr.pdf")
input.TargetDPI = 300 ' Ensure sufficient resolution
input.Binarize() ' Convert to black and white
input.DeNoise() ' Remove image artifacts
Dim result = ocrTesseract.Read(input)
- 處理多頁文件:針對 QR 碼分佈於多頁的文件:
// Process multi-page documents efficiently
using var pdfInput = new OcrPdfInput("multi-page-qr-document.pdf");
pdfInput.TargetDPI = 300;
var results = ocrTesseract.Read(pdfInput);
foreach (var page in results.Pages)
{
Console.WriteLine($"Page {page.PageNumber}:");
foreach (var barcode in page.Barcodes)
{
Console.WriteLine($" QR Code: {barcode.Value}");
Console.WriteLine($" Location: X={barcode.X}, Y={barcode.Y}");
}
}
// Process multi-page documents efficiently
using var pdfInput = new OcrPdfInput("multi-page-qr-document.pdf");
pdfInput.TargetDPI = 300;
var results = ocrTesseract.Read(pdfInput);
foreach (var page in results.Pages)
{
Console.WriteLine($"Page {page.PageNumber}:");
foreach (var barcode in page.Barcodes)
{
Console.WriteLine($" QR Code: {barcode.Value}");
Console.WriteLine($" Location: X={barcode.X}, Y={barcode.Y}");
}
}
Imports System
' Process multi-page documents efficiently
Using pdfInput As New OcrPdfInput("multi-page-qr-document.pdf")
pdfInput.TargetDPI = 300
Dim results = ocrTesseract.Read(pdfInput)
For Each page In results.Pages
Console.WriteLine($"Page {page.PageNumber}:")
For Each barcode In page.Barcodes
Console.WriteLine($" QR Code: {barcode.Value}")
Console.WriteLine($" Location: X={barcode.X}, Y={barcode.Y}")
Next
Next
End Using
- 非同步處理:若需處理多份文件以獲得更佳效能,請使用非同步方法:
// Asynchronous QR code reading
var result = await ocrTesseract.ReadAsync(imageInput);
// Asynchronous QR code reading
var result = await ocrTesseract.ReadAsync(imageInput);
' Asynchronous QR code reading
Dim result = Await ocrTesseract.ReadAsync(imageInput)
- 排除辨識問題:啟用結果標示功能,以視覺化呈現 IronOCR 偵測到的內容:
result.SaveAsHighlightedImage("qr-detection-debug.png");
result.SaveAsHighlightedImage("qr-detection-debug.png");
result.SaveAsHighlightedImage("qr-detection-debug.png")
大規模BarCode處理的效能優化
在處理數千份包含 BARCODE 和 QR 碼的文件時,請實施以下優化策略:
- 多執行緒:利用多執行緒處理技術,同時處理多個文件:
// Process multiple documents in parallel
var documents = new[] { "doc1.pdf", "doc2.pdf", "doc3.pdf" };
var results = documents.AsParallel().Select(doc =>
{
var tesseract = new IronTesseract();
tesseract.Co/nfiguration.ReadBarCodes = true;
return tesseract.Read(new OcrPdfInput(doc));
}).ToList();
// Process multiple documents in parallel
var documents = new[] { "doc1.pdf", "doc2.pdf", "doc3.pdf" };
var results = documents.AsParallel().Select(doc =>
{
var tesseract = new IronTesseract();
tesseract.Co/nfiguration.ReadBarCodes = true;
return tesseract.Read(new OcrPdfInput(doc));
}).ToList();
Imports IronTesseract
' Process multiple documents in parallel
Dim documents = {"doc1.pdf", "doc2.pdf", "doc3.pdf"}
Dim results = documents.AsParallel().Select(Function(doc)
Dim tesseract = New IronTesseract()
tesseract.Configuration.ReadBarCodes = True
Return tesseract.Read(New OcrPdfInput(doc))
End Function).ToList()
- 記憶體管理:針對長時間執行的操作,請使用中止標記:
// Implement cancellation for large batch processing
using var cts = new CancellationTokenSource();
ocrTesseract.Co/nfiguration.CancellationToken = cts.Token;
// Cancel if processing takes too long
cts.CancelAfter(TimeSpan.FromMinutes(5));
// Implement cancellation for large batch processing
using var cts = new CancellationTokenSource();
ocrTesseract.Co/nfiguration.CancellationToken = cts.Token;
// Cancel if processing takes too long
cts.CancelAfter(TimeSpan.FromMinutes(5));
Imports System.Threading
' Implement cancellation for large batch processing
Using cts As New CancellationTokenSource()
ocrTesseract.Configuration.CancellationToken = cts.Token
' Cancel if processing takes too long
cts.CancelAfter(TimeSpan.FromMinutes(5))
End Using
- 結果匯出:將結果儲存為可搜尋的 PDF 檔案,以保留文字與 BARCODE 資料:
// Export results with embedded barcode values
result.SaveAsSearchablePdf("output-with-barcodes.pdf");
// Export results with embedded barcode values
result.SaveAsSearchablePdf("output-with-barcodes.pdf");
' Export results with embedded barcode values
result.SaveAsSearchablePdf("output-with-barcodes.pdf")
與企業應用程式的整合
IronOCR 的 BarCode 功能可與現有的 .NET 應用程式無縫整合。 常見的整合情境包括:
- 庫存管理:從出貨清單中提取產品代碼
- 文件歸檔:透過嵌入的 BarCode 識別碼對掃描文件進行索引
- 發票處理:將 BarCode SKU 與財務文件中的明細項目進行配對
- 醫療紀錄:處理患者手環 BARCODE 及醫療表格
對於處理大量 BarCode 和 QR 碼的生產級應用程式,建議實作進度追蹤功能,以監控處理狀態,並根據實際運作指標來優化效能。
常見問題
如何在我的 C# 應用程式中啟用 BARCODE 讀取功能?
using IronOCR 時,請在 TesseractConfiguration 中將 ReadBarCodes 設為 true 以啟用 BarCode 讀取功能。此單一設定將在執行一般文字辨識的同時,自動從 PDF 和圖像中擷取 BarCode 值,並支援超過 20 種 BarCode 格式。
我可以從同一份文件中同時讀取文字和BARCODE嗎?
是的,IronOCR 具備雙重擷取功能——它透過標準 OCR 擷取可供人類閱讀的文字,同時解碼可供機器讀取的 BARCODE。OcrResult 類別會將這些輸出分開處理,文字可透過 Text 屬性存取,BARCODE 資料則透過 Barcodes 集合存取。
可偵測哪些 BarCode 格式?
IronOCR 支援超過 20 種 BARCODE 格式,包括一維 BARCODE(Code 128、Code 39、Code 93、EAN-13、EAN-8、UPC-A、UPC-E、Codabar、ITF、MSI、Plessey)及二維 BARCODE(QR Code、Data Matrix 等)。
如何從 PDF 文件中擷取 BarCode?
建立一個 IronTesseract 物件,將 ReadBarCodes 設為 true,使用 OcrPdfInput 建構函式載入您的 PDF 檔案,然後呼叫 Read 方法。IronOCR 將執行 OCR 並擷取所有偵測到的 BarCode 值,您可透過 result.Barcodes 集合存取這些資料。
我需要分別使用不同的函式庫來進行文字 OCR 和 BARCODE 讀取嗎?
不,IronOCR 的統一處理方式消除了多次處理流程或使用獨立程式庫的必要性。它能在單一操作中執行標準 OCR 文字擷取,同時解碼 BARCODE 符號系統。
IronOCR 是否支援多種語言?
IronOCR 支援多種語言,使其成為適用於需要識別不同語言文字的全球應用程式的多功能工具。
IronOCR 能否整合至現有應用程式中?
IronOCR 設計上可輕鬆透過 C# 整合至現有應用程式中,讓開發人員能以最少的努力,為其軟體增添 OCR 功能。
使用 IronOCR 進行文件管理有哪些好處?
使用 IronOCR 進行文件管理,可將掃描文件轉換為可搜尋且可編輯的文字,從而簡化工作流程,減少人工資料輸入的需求,並提升文件的可存取性。
IronOCR 如何提升資料準確性?
IronOCR 透過其先進的辨識演算法與影像校正功能來提升資料準確性,確保文字擷取過程既可靠又精確。
IronOCR 是否有提供免費試用版?
是的,Iron Software 提供 IronOCR 的免費試用版,讓使用者能在決定購買前測試其功能與效能。

