Neodynamic Barcode Professional 與 IronBarcode:C# 條碼庫對比
Scanbot SDK vs IronBarcode: 相機管線 vs 檔案處理
Scanbot SDK 使用裝置攝像頭開啟全螢幕條碼掃描視圖。 沒有 BarcodeScanner.Read(imagePath) 方法。 掃描器是相機的使用者介面。 如果您的條碼位於伺服器上的PDF發票中,Scanbot 無法提供幫助。這不是批評,而是結構描述。 Scanbot SDK 是一個相機控制,將原生 iOS、Android 和 UWP/WinUI 3 掃描API 包裹成一個取景器元件。 ScanbotSDKMain.Barcode.StartScannerAsync(configuration) 將控制權交給全螢幕相機體驗,使用者將裝置對準條碼,SDK 在即時影片流中檢測它,並將結果返回到您的應用程式中。比較很重要,因為 NuGet 套件名稱 — ScanbotBarcodeSDK.MAUI — 以及產品類別 — "條碼 SDK" — 可能會導致開發人員評估其用於伺服器端文件處理、WPF 桌面應用或ASP.NET CoreAPI。本文解釋了這兩種工具之間的架構差異以及各自在何處構建。
了解 Scanbot SDK
Scanbot SDK 是由 doo GmbH 開發的商業條碼掃描 SDK。 其主要 .NET 產品是 ScanbotBarcodeSDK.MAUI(v8.0.0),該套件針對 net9.0-android 和 net9.0-ios。 一個單獨的套件,Scanbot.BarcodeSDK.Windows(v7.0.0),涵蓋具有自動對焦攝影頭的 Windows 10 1809+(x64)上的 UWP 和 WinUI 3 桌面應用程式。 所有支持的目標都與相機綁定 — SDK 將無法解決控制台應用程式、類庫、ASP.NET Core 專案或針對 macOS 的 MAUI 應用程式。
Scanbot 被設計為首選相機產品。 其整個 API 表面以即時取景器體驗為導向:配置物件控制相機 UI 的外觀、即時影片管道監看的格式以及如何將反饋傳達給使用者。 該程式庫為 iOS、Android 和 Windows(UWP/WinUI 3)消費者及企業應用程式提供掃描元件。
- 主要平台目標: 通過 .NET MAUI 的 iOS 和 Android,以及通過單獨的
Scanbot.BarcodeSDK.Windows套件的 Windows 10 1809+ 上的 UWP/WinUI 3; 不支持macOS MAUI目標 - 輸入模型: 僅限裝置攝影頭現場傳輸 — 不存在文件路徑、流或字節陣列超載
- API 設計:
ScanbotSDKMain.Barcode.StartScannerAsync(configuration)將控制權交給全螢幕相機體驗,並返回帶有IsSuccess和Value.Items集的結果 - 攝影頭 UI 功能: 即時取景器配掃描區域覆蓋、手電筒控制、長寬比配置、音訊和觸覺反饋,以及方向鎖定
- 支持格式:20+一維格式(Code 128、EAN-13、UPC等)和多種二維格式(QR、DataMatrix、PDF417、Aztec)
- 無文件處理: 沒有從保存的圖像文件、流或 PDF 文件中讀取條碼的機制
- 無條碼生成: SDK 讀取條碼; 它不生成它們
- 授權模型: 年費固定; 年度費用固定,與掃描量無關
- 專案型別範圍: 支持的 NuGet 套件針對相機綁定運行時(MAUI iOS/Android 和 UWP/WinUI 3); 控制台、類庫、ASP.NET Core、WPF、WinForms、Azure 函式和 Docker 伺服器主機不在該目標集中
攝影管線架構
Scanbot 的架構需要在應用啟動時初始化,然後進行相機驅動的掃描調用。 掃描器方法需要一個 BarcodeScannerScreenConfiguration,因為整個操作是相機驅動的:
using ScanbotSDK.MAUI;
using ScanbotSDK.MAUI.Barcode;
// In MauiProgram.cs — initialization required before any scan
// ScanbotSDKMain.Initialize(new SdkConfiguration {
// LicenseKey = "YOUR-SCANBOT-LICENSE-KEY",
// LoggingEnabled = false
// }, builder);
// Configure scanner appearance and behavior
var configuration = new BarcodeScannerScreenConfiguration
{
UseCase = new SingleScanningMode()
};
// Open full-screen camera scanner — UI takes over the entire screen
var result = await ScanbotSDKMain.Barcode.StartScannerAsync(configuration);
if (result.IsSuccess)
{
foreach (var item in result.Value.Items)
Console.WriteLine($"{item.Barcode.Format}: {item.Barcode.Text}");
}
using ScanbotSDK.MAUI;
using ScanbotSDK.MAUI.Barcode;
// In MauiProgram.cs — initialization required before any scan
// ScanbotSDKMain.Initialize(new SdkConfiguration {
// LicenseKey = "YOUR-SCANBOT-LICENSE-KEY",
// LoggingEnabled = false
// }, builder);
// Configure scanner appearance and behavior
var configuration = new BarcodeScannerScreenConfiguration
{
UseCase = new SingleScanningMode()
};
// Open full-screen camera scanner — UI takes over the entire screen
var result = await ScanbotSDKMain.Barcode.StartScannerAsync(configuration);
if (result.IsSuccess)
{
foreach (var item in result.Value.Items)
Console.WriteLine($"{item.Barcode.Format}: {item.Barcode.Text}");
}
Imports ScanbotSDK.MAUI
Imports ScanbotSDK.MAUI.Barcode
' In MauiProgram.vb — initialization required before any scan
' ScanbotSDKMain.Initialize(New SdkConfiguration With {
' .LicenseKey = "YOUR-SCANBOT-LICENSE-KEY",
' .LoggingEnabled = False
' }, builder)
' Configure scanner appearance and behavior
Dim configuration As New BarcodeScannerScreenConfiguration With {
.UseCase = New SingleScanningMode()
}
' Open full-screen camera scanner — UI takes over the entire screen
Dim result = Await ScanbotSDKMain.Barcode.StartScannerAsync(configuration)
If result.IsSuccess Then
For Each item In result.Value.Items
Console.WriteLine($"{item.Barcode.Format}: {item.Barcode.Text}")
Next
End If
SDK 即時處理影片圖幀,突出顯示檢測到的取景器中的條碼,並在條碼確認或使用者取消時返回。 配置物件控制相機 UI 外觀,而非處理行為。 這就是完整的模式。
理解IronBarcode
IronBarcode 是由 Iron Software 開發的商業 .NET 條碼讀取和生成程式庫。 它以文件處理模型運行:輸入來源是文件路徑、流、字節陣列和 PDF 文件。 沒有相機 UI,也不需要移動硬體。 程式庫在每種 .NET 專案型別中運行。
IronBarcode 的靜態 BarcodeReader.Read() 方法接受呼叫程式碼提供的任何來源,無論該來源是如何產生的。 一個通過 HTTP 上傳的文件、磁碟上的 PDF、來自 blob 儲存的圖像或從 base64 字串解碼的字節陣列都是同等的輸入。 該程式庫返回解碼結果的集合,每個結果都包含條碼值、格式和(適用時的)頁碼。
- 輸入來源: 文件路徑、流、字節陣列和 PDF 文件(原生 PDF 解析,不是圖像提取)
- 支持的專案型別: 控制台應用、ASP.NET Core、WPF、WinForms、Blazor 伺服器、Azure 函式、AWS Lambda、Docker、Windows 服務、.NET MAUI(包括 Windows 和 macOS 的所有目標),以及 .NET Framework 4.6.2+
- 條碼生成: 生成的條碼作為圖像或嵌入在 HTML 和 PDF 文件中
- 格式覆蓋:30+一維格式和五種二維格式,包括 QR、DataMatrix、PDF417、Aztec 和 MaxiCode
- 讀取增強: 基於機器學習的錯誤校正和損壞條碼恢復,以解決難以解碼的實際情況中的圖像
- 配置物件:
BarcodeReaderOptions控制處理行為(速度、多條碼檢測),而不是相機 UI 外觀 - 授權模型: 一次性永久購買,按四級(Lite $749、Plus $1,499、Professional $2,999、Unlimited $5,999); 無需年度續約
特性比較
下圖重點介紹了 Scanbot SDK 和IronBarcode之間的基本差異:
| 特性 | Scanbot SDK | IronBarcode |
|---|---|---|
| 主要使用情境 | 移動裝置上的即時相機條碼掃描 | 文件和文件條碼讀取及生成 |
| 輸入模型 | 僅裝置相機 feed | 文件路徑、流、字節陣列、PDF |
| 平臺支持 | iOS/Android MAUI 和 UWP/WinUI 3(相機綁定) | 所有 .NET 平台和專案型別 |
| 條碼生成 | 否 | 是 |
| PDF 條碼提取 | 否 | 是 |
| 授權模型 | 年費固定 | 一次性永久 |
| 即時相機 UI | 是的 — 拋光取景器組件 | 沒有(使用 MediaPicker 進行照片捕獲) |
詳細特性比較
| 特性 | Scanbot SDK | IronBarcode |
|---|---|---|
| 讀取 | ||
| 從文件路徑輸入 | 否 | 是 |
| 從流輸入 | 否 | 是 |
| 從字節陣列輸入 | 否 | 是 |
| PDF條碼提取 | 否 | 是 |
| 即時相機取景器 | 是 | 否 |
| 即時幀掃描 | 是 | 否 |
| 自動格式檢測 | 是 | 是 |
| ML錯誤校正 | 否 | 是 |
| 損壞條碼恢復 | 否 | 是 |
| 1D 格式數量 | 20+ | 30+ |
| 2D 格式數量 | QR, DataMatrix, PDF417, Aztec | QR, DataMatrix, PDF417, Aztec, MaxiCode |
| 生成 | ||
| 條碼生成 | 否 | 是 |
| 平台 | ||
| iOS MAUI | 是 | 是 |
| Android MAUI | 是 | 是 |
| Windows MAUI | 否 | 是 |
| macOS MAUI | 否 | 是 |
| UWP / WinUI 3(帶相機) | 是的(單獨的 Windows 套件) | 是 |
| 控制台應用 | 否 | 是 |
| ASP.NET Core | 否 | 是 |
| Blazor 伺服器 | 否 | 是 |
| WPF 應用 | 否 | 是 |
| WinForms 應用 | 否 | 是 |
| Azure 函式 | 否 | 是 |
| AWS Lambda | 否 | 是 |
| Docker/Linux | 否 | 是 |
| Windows 服務 | 否 | 是 |
| .NET Framework 4.6.2+ | 否 | 是 |
| 授權 | ||
| 授權模型 | 年費固定 | 一次性永久 |
| 已發布定價 | 聯繫銷售 | 是的($749–$5,999) |
| 批量定價 | 不適用(固定費) | 不適用(永久等級) |
架構:相機管線 vs 檔案處理
Scanbot SDK 和IronBarcode之間最顯著的區別不是功能缺口,而是各程式庫如何概念化其輸入的基本架構差異。
Scanbot SDK 方法
Scanbot 的架構圍繞原生相機管線構建。呼叫 ScanbotSDKMain.Barcode.StartScannerAsync(configuration) 時,程式庫將控制權交給由裝置的原生相機 API 支援的全螢幕相機體驗,適用於 iOS、Android 或 Windows。 程式庫不斷處理即時影片幀,對每幀進行條碼檢測,並在條碼確認或使用者撤銷掃描器時將控制權返回給呼叫應用程式。 在 Scanbot 模型中不存在靜態圖像的概念 — 輸入始終是來自裝置相機的即時影片幀流。
這種設計提供了一種掃描體驗,即時在取景器中突出顯示條碼、可配置掃描區域與比例控制、手電筒切換、音訊和觸覺反饋,以及方向鎖定。 這些是為相機使用情境設計的 UI 功能。 必要條件是程式庫無法與相機硬體和驅動其的作業系統分離。
IronBarcode方法
IronBarcode 接受包含條碼圖像的任何二進制表示,無論圖像是如何獲得的,均使用相同的靜態方法返回解碼結果:
// Install: dotnet add package BarCode
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// From a file path — works in any project type
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
Console.WriteLine($"{result.Value} ({result.Format})");
// From a PDF — reads all barcodes on all pages
var pdfResults = BarcodeReader.Read("invoice.pdf");
foreach (var result in pdfResults)
Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
// From a stream — useful for HTTP file uploads
using var stream = File.OpenRead("document.pdf");
var streamResults = BarcodeReader.Read(stream);
// With processing options
var options = new BarcodeReaderOptions { Speed = ReadingSpeed.Balanced };
var configuredResults = BarcodeReader.Read("image.png", options);
// Install: dotnet add package BarCode
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// From a file path — works in any project type
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
Console.WriteLine($"{result.Value} ({result.Format})");
// From a PDF — reads all barcodes on all pages
var pdfResults = BarcodeReader.Read("invoice.pdf");
foreach (var result in pdfResults)
Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
// From a stream — useful for HTTP file uploads
using var stream = File.OpenRead("document.pdf");
var streamResults = BarcodeReader.Read(stream);
// With processing options
var options = new BarcodeReaderOptions { Speed = ReadingSpeed.Balanced };
var configuredResults = BarcodeReader.Read("image.png", options);
Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
' From a file path — works in any project type
Dim results = BarcodeReader.Read("barcode.png")
For Each result In results
Console.WriteLine($"{result.Value} ({result.Format})")
Next
' From a PDF — reads all barcodes on all pages
Dim pdfResults = BarcodeReader.Read("invoice.pdf")
For Each result In pdfResults
Console.WriteLine($"Page {result.PageNumber}: {result.Value}")
Next
' From a stream — useful for HTTP file uploads
Using stream = File.OpenRead("document.pdf")
Dim streamResults = BarcodeReader.Read(stream)
End Using
' With processing options
Dim options = New BarcodeReaderOptions With {.Speed = ReadingSpeed.Balanced}
Dim configuredResults = BarcodeReader.Read("image.png", options)
相同的呼叫可在控制台應用、ASP.NET Core 控制器、Azure 函式、WPF 表單或 MAUI 頁面運行。IronBarcode原生讀取 PDF 條碼 — 不是圖像從 PDF 提取出來的,而是直接解析 PDF 結構,並在每頁上尋找條碼。
平台和部署覆蓋
Scanbot SDK 的平台範圍由其 NuGet 套件支持的目標固定。IronBarcode的範圍與 .NET 執行時自身匹配。
Scanbot SDK 方法
Scanbot MAUI 套件目標 net9.0-android 和 net9.0-ios。 一個聲明僅這兩個目標的 .NET MAUI Application 專案將成功構建。 然而,當 net9.0-maccatalyst 或Windows MAUI目標新增到 TargetFrameworks 時,在這些目標上 Scanbot MAUI 套件引用無法解析。 這不是配置問題 — MAUI 套件不提供 Windows 或macOS MAUI的集合。 Windows 桌面由單獨的 Scanbot.BarcodeSDK.Windows 套件覆蓋,適用於帶有自動對焦相機的 UWP/WinUI 3 應用程式。
結果是 Scanbot 的 .NET 套件集針對 MAUI 移動和 UWP/WinUI 3 桌面,而不是伺服器或非相機桌面專案型別。
IronBarcode方法
IronBarcode 作為單一 NuGet 套件分發,可正確解析所有 .NET 專案型別和目標框架:
# Same package, same API — works in ASP.NET Core, WPF, console, MAUI, Azure Functions
dotnet add package BarCode
# Same package, same API — works in ASP.NET Core, WPF, console, MAUI, Azure Functions
dotnet add package BarCode
針對 Windows 或 macOS 桌面的 MAUI 應用程式,IronBarcode 支援所有四個 MAUI 目標,無需平台條件配寘 構建針對 iOS、Android 和 Windows 的 MAUI 專案的團隊可以一次新增IronBarcode並在所有三個平台上使用 BarcodeReader.Read() 而無需修改。
MAUI 整合模式
這兩個程式庫都可用於 .NET MAUI 專案,但整合模式因每個程式庫的輸入模型不同而有顯著差異。
Scanbot SDK 方法
在針對 iOS 和 Android 的 MAUI 專案中,Scanbot 提供嵌入應用程式導航流中的原生相機取景器。 ScanbotSDKMain.Barcode.StartScannerAsync() 呼叫顯示全屏掃描器,當使用者完成或撤銷掃描時,結果返回到呼叫頁面。 這種整合使移動應用程式的掃描 UI 感覺與平台原生。
當專案擴展時會出現限制。 新增 macOS 目標或Windows MAUI目標將在這些平台上中斷構建(Windows 桌面由適用於 UWP/WinUI 3 應用程式的單獨 Scanbot.BarcodeSDK.Windows 套件處理)。 新增需要條碼處理的無頭伺服器端組件需要單獨的程式庫 — Scanbot 無法跟隨專案進入 ASP.NET Core、Azure 函式或 Docker。
IronBarcode方法
在 MAUI 專案中,IronBarcode 使用平台的 MediaPicker 來捕獲照片,並從生成的圖像中讀取條碼。 掃描工作流程使用系統相機而不是自訂取景器:
// Works on iOS, Android, Windows, andmacOS MAUItargets
// NuGet: dotnet add package BarCode
using IronBarCode;
private async void ScanButton_Clicked(object sender, EventArgs e)
{
var photo = await MediaPicker.CapturePhotoAsync();
if (photo == null) return;
using var stream = await photo.OpenReadAsync();
using var ms = new MemoryStream();
await stream.CopyToAsync(ms);
var results = BarcodeReader.Read(ms.ToArray());
foreach (var result in results)
await DisplayAlert("Scanned", $"{result.Format}: {result.Value}", "OK");
}
// Works on iOS, Android, Windows, andmacOS MAUItargets
// NuGet: dotnet add package BarCode
using IronBarCode;
private async void ScanButton_Clicked(object sender, EventArgs e)
{
var photo = await MediaPicker.CapturePhotoAsync();
if (photo == null) return;
using var stream = await photo.OpenReadAsync();
using var ms = new MemoryStream();
await stream.CopyToAsync(ms);
var results = BarcodeReader.Read(ms.ToArray());
foreach (var result in results)
await DisplayAlert("Scanned", $"{result.Format}: {result.Value}", "OK");
}
Imports IronBarCode
Imports System.IO
Imports System.Threading.Tasks
Private Async Sub ScanButton_Clicked(sender As Object, e As EventArgs)
Dim photo = Await MediaPicker.CapturePhotoAsync()
If photo Is Nothing Then Return
Using stream = Await photo.OpenReadAsync()
Using ms As New MemoryStream()
Await stream.CopyToAsync(ms)
Dim results = BarcodeReader.Read(ms.ToArray())
For Each result In results
Await DisplayAlert("Scanned", $"{result.Format}: {result.Value}", "OK")
Next
End Using
End Using
End Sub
交易是即時取景器覆蓋。 使用者將看到系統相機 UI,而不是自訂掃描區域,這對於需要"指定並拍攝"即可的商務應用程式來說已經足夠。 .NET MAUI 條碼掃描器教程 涵蓋完整的 MAUI 整合模式,包括許可處理和專案配置,針對 iOS 和 Android 目標
授權模型
Scanbot SDK 和IronBarcode使用截然不同的商業授權結構。
Scanbot 方法
Scanbot 採用年費固定模式運行。 年度授權成本不按掃描量計量。 這為擁有穩定移動裝置部署的團隊提供了可預測的年度預算。 具體定價需聯繫 Scanbot 的銷售團隊; 無法獲取貼出的資料。 年度續約義務意味著該授權是持續的運營成本。
IronBarcode方法
IronBarcode 作為一次性永久購買,提供四個等級:Lite $749、Plus $1,499、Professional $2,999 和 Unlimited $5,999。購買的版本沒有年度續約要求。 授權期間的軟體更新包含在內。 在沒有要求銷售談話的情況下,Iron Software 網站上公佈了定價。
API對映參考
評估兩個程式庫架構差異的團隊將會發現此映射對了解概念等價性很有用:
| Scanbot SDK | IronBarcode |
|---|---|
ScanbotSDKMain.Initialize(new SdkConfiguration { LicenseKey = "..." }, builder) |
IronBarCode.License.LicenseKey = "key" |
new BarcodeScannerScreenConfiguration { UseCase = new SingleScanningMode() } |
new BarcodeReaderOptions() |
ScanbotSDKMain.Barcode.StartScannerAsync(configuration) |
BarcodeReader.Read(path / stream / bytes) |
result.IsSuccess |
檢查 results.Any() 或 results.FirstOrDefault() != null |
result.Value.Items |
返回值 BarcodeReader.Read() |
item.Barcode.Format |
result.Format (IronBarCode.BarcodeEncoding) |
item.Barcode.Text |
result.Value |
BarcodeFormat.Code128 |
BarcodeEncoding.Code128 |
BarcodeFormat.QrCode |
BarcodeEncoding.QRCode |
BarcodeFormat.Ean13 |
BarcodeEncoding.EAN13 |
| 相機掃描區域/比例配置 | 沒有等價 — 圖像構圖由 MediaPicker 處理 |
| 相機閃光燈/手電筒配置 | 沒有等價 — 使用 MediaPicker 選項 |
| 僅相機輸入 | 文件路徑、流、字節陣列或 PDF |
| iOS/Android MAUI and UWP/WinUI 3 | 所有 .NET 平台 |
當團隊考慮從 Scanbot SDK 遷移到IronBarcode時
有幾種情況會常常導致開發團隊將IronBarcode評估為 Scanbot SDK 的替代品或補充。
伺服器端和後端處理
using Scanbot 構建的移動應用通常存在於處理文件上傳、批量任務或 API 端點的伺服器端組件旁邊。 當該伺服器端組件需要條碼處理時 — 從上傳的 PDF 中提取條碼、驗證進入文件中的條碼值,或者從圖像附件處理條碼資料 — Scanbot 不可用。 該套件不能在 ASP.NET Core、Azure 函式、控制台應用或任何非 MAUI 專案中編譯。 深處於這種情況的團隊發現自己必須同時維護一個移動條碼依賴項和一個單獨的伺服器端條碼解決方案,或評估IronBarcode是否可以憑借單個包覆蓋兩者角色。
桌面應用要求
MAUI 的價值主張通常是跨平台覆蓋:一個單一程式碼庫,目標 iOS、Android 和 Windows。 當Windows MAUI成為路線圖中的目標 — 無論從初始要求來看,還是作為後期新增項 — ScanbotBarcodeSDK.MAUI 套件無法在該目標上解析,因為 Scanbot 通過一個單獨的 UWP/WinUI 3 套件覆蓋 Windows(Scanbot.BarcodeSDK.Windows),而不是通過 MAUI Windows。 需要一條單一 Windows 構建路徑的團隊,或需要一個無頭 Windows 組件(例如 Windows 服務)的團隊,無法從 Scanbot 的包覆套件中獲得。IronBarcode提供一個包覆,可以在Windows MAUI目標上解析,並在無頭桌面和伺服器環境中運行。
PDF 和文件工作流程
從現場掃描向文件自動化過渡的應用遇到與 Scanbot 的能力邊界。 從 PDF 發票讀取條碼,從掃描的運單標籤圖片中提取追蹤程式碼,或處理來自已存檔文件的條碼資料都超出了 Scanbot 的輸入模型範疇,其圍繞即時相機輸入模型構建。IronBarcode內建地處理所有這些基於文件的輸入。 同一個包載於 MAUI 移動應用程式中的可以在背景處理作業中從 PDF 文件中提取條碼,無需任何其它依賴項。
預測成本授權
每次續約週期會邀請重新評估年度續費成本。 由於小規模移動部署開始並擴展到更廣泛的部署範圍有更多使用者或平台的團隊可能會發現隨著範圍的增長,年度費用變得不再能接受。IronBarcode的一次性永久授權模式消除了續約義務。 進行授權續約評估的團隊通常考慮一次性購買是否與他們的長期預算規劃更匹配,尤其是當擴展的項目範圍包括伺服器端或桌面平台時,而不限於 Scanbot 的範圍。
常見的遷移考慮因素
從 Scanbot SDK 遷移到IronBarcode的團隊應準備好在轉變期間會出現的幾個技術差異。
沒有即時取景器等價
Scanbot 的即時相機取景器 — 帶有掃描區域覆蓋,連續檢測和觸覺回饋 — 在IronBarcode中沒有直接的等值。 替代模式使用 MAUI 的 MediaPicker.CapturePhotoAsync() 來開啟系統相機,拍攝照片並返回其供處理。 使用者體驗是一種照片捕獲流,而不是連續掃描流。 對於業務應用(庫存、物流、文件處理),這種區別很少是顯著的。 對於以即時覆蓋為產品體驗核心的消費者應用,這是一個真正應在加入前予以評估的使用者體驗差異。
事件回調模式到直接返回
Scanbot 的 ScanbotSDKMain.Barcode.StartScannerAsync() 是非同步的,返回一個帶有 IsSuccess 標誌和 Value.Items 集合的結果。IronBarcode的 BarcodeReader.Read() 直接返回一個集合 — 沒有帶有狀態域的包裝物件。 成功檢查從 result.IsSuccess 變為 results.Any() 或對 results.FirstOrDefault() 的 null 檢查。
格式枚舉命名空間更改
Scanbot 的 BarcodeFormat 枚舉(例如,BarcodeFormat.Code128)和IronBarcode的 BarcodeEncoding 枚舉(例如,BarcodeEncoding.Code128)包含類似的成員,但它們是不同名稱空間中的不同型別。 儲存或通過枚舉型別比較格式值的程式碼需要更新型別引用。 基於 .ToString() 輸出的字串比較通常是相容的,因為成員名稱是相似的,但明確的枚舉型別比較需要更新到 BarcodeEncoding 的值。
Windows 建立增強
如果 Scanbot 套件導致Windows MAUI建立失敗,在遷移前移除它可以解決這些故障。 在新增IronBarcode之後,確認 Windows 專用功能 — 文件選擇對話框,本地文件路徑,Windows 許可 — 在 MAUI 應用程式程式碼中得到妥善處理,因為這些與 iOS 和 Android 文件存取模式不同。
額外的IronBarcode能力
超越在此比較中涵蓋的核心場景,IronBarcode 提供的能力在專案擴展時變得具有相關性:
- 條碼生成: 在所有主要一維和二維格式中生成條碼作為圖像文件、流,或作為 HTML 和 PDF 文件中的嵌入內容
- 多條碼文件處理: 在單次調用中,讀取多頁 PDF 的每一頁上的每個條碼,每個結果載有其遇到的頁碼
- 機器學習錯誤校正: 從損壞的、部分遮蔽的或對比度較低的圖像中恢復條碼,這些是標準檢測算法無法解碼的
- 批量圖像處理: 在單次操作中處理圖像路徑或流的陣列,以支持高吞吐量文件工作流
- BarcodeReaderOptions 調整: 控制讀取速度、多條碼檢測、格式過濾和圖像預處理,以平衡特定用例的吞吐量和精度
- iOS MAUI 整合: 完整支持iOS MAUI應用程式中使用 MediaPicker 模式的條碼閱讀
- Android MAUI 整合: 完整支持Android MAUI應用程式中使用的條碼讀取,API 與 iOS 相同
.NET相容性和未來準備
IronBarcode 支持 .NET 6、.NET 7、.NET 8 和 .NET 9,以及 .NET Framework 4.6.2 及更高版本。 該程式庫接收到與 .NET 發佈節奏一致的定期更新,確保與預計在 2026 年末和未來版本中的 .NET 10 相容性。 因為IronBarcode是文件處理解決方案而不是平台特定的相機 SDK,它不依賴於移動作業系統 API 或硬體能力,這意味着其相容性範圍隨著 .NET 生態系統擴展,而不是受移動平台支持週期的束縛。
結論
Scanbot SDK 和IronBarcode佔據了共享"條碼 SDK"標籤的不同產品類別。Scanbot 是一個相機掃描組件,提供 iOS 和 Android(通過 MAUI)及 Windows(通過 UWP/WinUI 3)的即時取景器體驗。IronBarcode是一個文件和文件處理解決方案,讀取和生成條碼,涵蓋全範圍的 .NET 專案型別和部署目標。 比較的是範圍和架構,而不是各自定義域內的質量。
Scanbot SDK 在其定義範圍內表現強大。 對於使用者直接以裝置相機對準實體條碼並期望得到即時視覺反饋的應用程式 — 零售、票務、倉庫查找 — Scanbot 的相機管線和取景器組件是為該交互模式量身定製的。 如果部署限於相機綁定目標(iOS、Android 和 UWP/WinUI 3 Windows),現場掃描體驗對產品至關重要,而且年度固定費用符合預算,Scanbot 是該用例的合理選擇。
當條碼處理需求超越即時相機場景時,IronBarcode 是合適的選擇。 伺服器端文件處理、接受文件上傳的ASP.NET Core端點、Windows 或 macOS 的桌面應用、由 blob 儲存觸發的 Azure 函式、包括桌面平台的多目標 MAUI 專案以及批次 PDF 處理作業都屬於IronBarcode的原生範圍。 單個套件安裝無需平台條件配置,並在行動裝置、伺服器或桌面執行的程式碼中提供相同的 BarcodeReader.Read() 調用。
對於需求在即時移動相機掃描和文件或伺服器處理之間跨越的團隊來說,架構上最乾淨的解決方案是使用 Scanbot 處理移動相機 UI,使用IronBarcode處理其他所有內容。 這種方法的成本是兩個條碼依賴項和兩個授權協議。 若団隊願意使用系統相機來代替自訂取景器進行移動掃描,IronBarcode 單獨可覆蓋完整的專案範圍 — 從 MAUI 移動應用程式到伺服器 API 再到 Windows 桌面伴侶 — 使用單一套件與單一授權。
常見問題
什麼是 Scanbot SDK?
Scanbot SDK 是一個 .NET 條碼程式庫,用於在 C# 應用程式中生成和讀取條碼。當開發人員選擇 .NET 專案的條碼解決方案時,Scanbot SDK 是幾個替代方案之一。
Scanbot SDK 和 IronBarcode 之間的主要差異是什麼?
IronBarcode 使用無狀態的靜態 API,不需要實例管理,而 Scanbot SDK 通常需要在使用前建立和配置實例。IronBarcode 還提供原生 PDF 支援、自動格式檢測及全環境單金鑰授權。
IronBarcode 的授權是否比 Scanbot SDK 更容易?
IronBarcode使用一個覆蓋開發和生產部署的單一授權金鑰。相比於將SDK金鑰與運行時金鑰分開的授權系統,這簡化了CI/CD管道和Docker配置。
IronBarcode 是否支援與 Scanbot SDK 相同的條碼格式?
IronBarcode支持超過30種條碼符號,包括QR Code、Code 128、Code 39、DataMatrix、PDF417、Aztec、EAN-13、UPC-A、GS1等。格式自動檢測意味著不需要顯式的格式枚舉。
IronBarcode支持原生PDF條碼讀取嗎?
是的。IronBarcode可以直接從PDF文件中讀取條碼,使用BarcodeReader.Read("document.pdf"),無需單獨的PDF渲染程式庫。每頁結果包括頁碼、條碼格式、值和置信分數。
IronBarcode 如何處理批次處理,相較於 Scanbot SDK?
IronBarcode的靜態方法無狀態且天然執行緒安全,可以直接使用Parallel.ForEach而無需每個執行緒的實例管理。任何價格級別下都沒有吞吐量上限。
IronBarcode支持哪些.NET版本?
IronBarcode支持.NET Framework 4.6.2+、.NET Core 3.1,以及.NET 5、6、7、8和9,單一NuGet包。平台目標包括Windows x64/x86、Linux x64和macOS x64/ARM。
如何在.NET專案中安裝IronBarcode?
通過NuGet安裝IronBarcode:在Package Manager Console中運行 'Install-Package IronBarCode',或在CLI中運行 'dotnet add package IronBarCode'。不需要額外的SDK安裝程式或運行時文件。
我可以在購買之前評估 IronBarcode 嗎,與 Scanbot 不同?
可以。IronBarcode的試用模式返回完整解碼的條碼值——只有生成的輸出圖像上有水印。您可以在自己的文件上評估讀取準確性,然後再決定購買。
Scanbot SDK 和 IronBarcode 之間的價格差異是什麼?
IronBarcode起價為$749,為單開發者所適用的永久授權,覆蓋開發和生產。價格詳情和批量選項可在IronBarcode授權頁面獲得。無需單獨的運行時授權。
從 Scanbot SDK 遷移到 IronBarcode 是否直接?
從 Scanbot SDK 遷移到 IronBarcode 主要涉及用 IronBarcode 的靜態方法取代基於實例的 API 呼叫,去除授權樣板程式碼,並更新結果屬性名稱。大多數遷移涉及減少程式碼,而非增加程式碼。
IronBarcode可以生成帶有Logo的QR碼嗎?
可以。QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png") 可以原生嵌入品牌圖像進QR碼,並可配置錯誤更正。也支持通過ChangeBarCodeColor() 生成彩色QR碼。

