Scanbot SDK 與 IronBarcode:C# 條碼庫對比
Scanbot SDK 使用裝置相機開啟全螢幕條碼掃描視圖。 沒有 BarcodeScanner.Read(imagePath) 方法。 掃描器就是相機使用者介面。 如果您的條碼位於伺服器上的 PDF 發票中,Scanbot 就無法提供協助。這並非批評,而是一種架構描述。 Scanbot SDK 是一個 MAUI 相機控制軟體,它將原生 iOS 和 Android 掃描 API 封裝成一個精美的取景器元件。 ScanbotBarcodeSDK.BarcodeScanner.Open(configuration) 將控制權交給全螢幕攝影機體驗,使用者將裝置對準條碼,SDK 會在即時視訊串流中偵測到條碼,並將結果傳回給您的應用程式。這種比較至關重要,因為 NuGet 套件名稱(ScanbotBarcodeSDK.MAUI)和產品類別("條碼 SDK")可能會誤導開發人員將其用於伺服器端文件處理、WPF 桌面應用程式或 ASP.NET Core API。本文將解釋這兩個工具之間的架構差異、各自的實際功能,以及IronBarcode哪些方面可以滿足 Scanbot 在結構上無法實現的需求。
了解 Scanbot SDK
Scanbot SDK 是由 Scanbot GmbH 開發的商業行動條碼掃描 SDK。 其 .NET 產品為 ScanbotBarcodeSDK.MAUI,該軟體包的目標平台為 net8.0-android 和 net8.0-ios。 該 SDK 需要一個 .NET MAUI Application 項目,其中包含 <UseMaui>true</UseMaui> 和移動目標 TargetFrameworks。 它無法在控制台應用程式、類別庫、ASP.NET Core 專案或 Windows 的 MAUI 應用程式中解析。
Scanbot 的設計理念是以相機為核心。 它的整個 API 介面都圍繞著即時取景器體驗而設計:配置物件控制相機 UI 的外觀、即時視訊管道監視的格式以及如何向用戶提供回饋。 該程式庫為 iOS 和 Android 消費者及企業行動應用程式提供了一個完善的掃描元件。
-主要平台目標:透過 .NET MAUI 框架實現的 iOS 和 Android 行動裝置; Windows 和 macOS 上的 MAUI 目標不受支援。 -輸入模型:僅限即時裝置相機畫面-不存在檔案路徑、串流或位元組陣列重載。
- API 設計:
BarcodeScanner.Open(configuration)將控制權交給全螢幕相機體驗,並在使用者確認掃描或取消掃描時返回OperationResult-相機使用者介面功能:即時取景器(帶掃描區域疊加顯示)、手電筒控制、寬高比設定、音訊和觸覺回饋以及方向鎖定 -支援的格式: 20 多種一維格式(Code 128、EAN-13、UPC 等)和多種二維格式(QR、DataMatrix、PDF417、Aztec) -無檔案處理功能:沒有從已儲存的影像檔案、串流或 PDF 文件中讀取條碼的機制。 -不產生條碼: SDK 讀取條碼; 它不會產生它們 -授權模式:年度固定費用; 無論掃描量如何,年度費用都是固定的。 -專案類型限制:無法在控制台、類別庫、ASP.NET Core、WPF、WinForms、Azure Functions 或 Docker 託管專案中編譯。
相機流水線架構
Scanbot 的架構需要在應用程式啟動時進行初始化,然後呼叫攝影機進行掃描。 沒有接受檔案路徑或流的 BarcodeScanner.Open() 重載; 方法簽名需要 BarcodeScannerConfiguration,因為整個操作都是由相機驅動的:
// In MauiProgram.cs or App.xaml.cs — initialization required before any scan
ScanbotSDK.Initialize(new ScanbotSDKConfiguration
{
LicenseKey = "YOUR-SCANBOT-LICENSE-KEY",
EnableLogging = false
});
// Configure accepted formats and camera appearance
var configuration = new BarcodeScannerConfiguration();
configuration.BarcodeFormats = new[]
{
BarcodeFormat.Code128,
BarcodeFormat.QrCode,
BarcodeFormat.Ean13
};
// Open full-screen camera scanner — UI takes over the entire screen
var result = await ScanbotBarcodeSDK.BarcodeScanner.Open(configuration);
if (result.Status == OperationResult.Ok)
{
foreach (var barcode in result.Barcodes)
Console.WriteLine($"{barcode.Format}: {barcode.Text}");
}
// In MauiProgram.cs or App.xaml.cs — initialization required before any scan
ScanbotSDK.Initialize(new ScanbotSDKConfiguration
{
LicenseKey = "YOUR-SCANBOT-LICENSE-KEY",
EnableLogging = false
});
// Configure accepted formats and camera appearance
var configuration = new BarcodeScannerConfiguration();
configuration.BarcodeFormats = new[]
{
BarcodeFormat.Code128,
BarcodeFormat.QrCode,
BarcodeFormat.Ean13
};
// Open full-screen camera scanner — UI takes over the entire screen
var result = await ScanbotBarcodeSDK.BarcodeScanner.Open(configuration);
if (result.Status == OperationResult.Ok)
{
foreach (var barcode in result.Barcodes)
Console.WriteLine($"{barcode.Format}: {barcode.Text}");
}
Imports System
' In MauiProgram.vb or App.xaml.vb — initialization required before any scan
ScanbotSDK.Initialize(New ScanbotSDKConfiguration With {
.LicenseKey = "YOUR-SCANBOT-LICENSE-KEY",
.EnableLogging = False
})
' Configure accepted formats and camera appearance
Dim configuration As New BarcodeScannerConfiguration()
configuration.BarcodeFormats = New BarcodeFormat() {
BarcodeFormat.Code128,
BarcodeFormat.QrCode,
BarcodeFormat.Ean13
}
' Open full-screen camera scanner — UI takes over the entire screen
Dim result = Await ScanbotBarcodeSDK.BarcodeScanner.Open(configuration)
If result.Status = OperationResult.Ok Then
For Each barcode In result.Barcodes
Console.WriteLine($"{barcode.Format}: {barcode.Text}")
Next
End If
SDK 即時處理即時視訊幀,在觀景窗中反白顯示偵測到的條碼,並在條碼確認或使用者取消時返回。 配置物件控制相機使用者介面外觀,而不是處理行為。 這就是完整的模型。
了解 IronBarcode
IronBarcode 是由 Iron Software 開發的商業 .NET 條碼讀取和產生函式庫。 它採用文件處理模型:輸入來源包括文件路徑、流、位元組數組和 PDF 文件。 沒有相機使用者介面,也不需要行動硬體。 該程式庫可在所有 .NET 專案類型中執行。
IronBarcode 的靜態 BarcodeReader.Read() 方法接受呼叫程式碼提供的任何來源,無論該來源是如何產生的。 透過 HTTP 上傳的檔案、磁碟上的 PDF 檔案、blob 儲存體中的映像或從 base64 字串解碼的位元組數組都是等效的輸入。 該程式庫傳回一組解碼結果,每個結果都包含條碼值、格式和頁碼(如適用)。
-輸入來源:文件路徑、流、位元組數組和 PDF 文件(原生 PDF 解析,而非圖像提取)
支援的專案類型:控制台應用程式、ASP.NET Core、WPF、WinForms、Blazor Server、Azure Functions、AWS Lambda、Docker、Windows 服務、.NET MAUI(所有目標平台,包括 Windows 和 macOS)以及 .NET Framework 4.6.2 及更高版本。
條碼產生:產生條碼,格式可以是圖像,也可以嵌入到 HTML 和 PDF 文件中。
-格式支援:支援 30 多種一維格式和 5 種二維格式,包括 QR 碼、DataMatrix 碼、PDF417 碼、Aztec 碼和 MaxiCode 碼。
-閱讀增強功能:基於機器學習的錯誤糾正和損壞條碼恢復,適用於難以讀取的真實世界圖像
-設定物件: BarcodeReaderOptions 控制處理行為(速度、多條碼偵測),而非相機使用者介面外觀
-授權模式:一次永久購買,分為四個等級(Lite 版 749 美元,Plus 版 1499 美元,Professional 版 2999 美元,Unlimited 版 5999 美元); 無需每年續費
功能比較
下表列出了 Scanbot SDK 和IronBarcode之間的根本差異:
| 特點 | Scanbot SDK | IronBarcode |
|---|---|---|
| 主要使用個案 | 行動裝置即時攝影機頭條碼掃描 | 文件和文檔條碼讀取和生成 |
| 輸入模型 | 設備攝影機畫面 | 文件路徑、流、位元組數組、PDF |
| 平台支援 | iOS 和 Android MAUI 系統 | 所有 .NET 平台和專案類型 |
| 條碼生成 | 無 | 是 |
| PDF條碼擷取 | 無 | 是 |
| 授權模式 | 年度固定費用 | 一次永久 |
| 即時攝影機介面 | 是的——精緻的取景器組件 | 否(使用 MediaPicker 進行照片拍攝) |
詳細功能比較
| 特點 | Scanbot SDK | IronBarcode |
|---|---|---|
| 閱讀 | ||
| 從檔案路徑輸入 | 無 | 是 |
| 來自流的輸入 | 無 | 是 |
| 從位元組數組輸入 | 無 | 是 |
| PDF條碼擷取 | 無 | 是 |
| 即時相機觀景窗 | 是 | 無 |
| 即時影格掃描 | 是 | 無 |
| 自動格式偵測 | 是 | 是 |
| 機器學習誤差校正 | 無 | 是 |
| 條碼損壞恢復 | 無 | 是 |
| 一維格式計數 | 20歲以上 | 30+ |
| 二維格式計數 | QR碼、DataMatrix碼、PDF417碼、Aztec碼 | QR碼、DataMatrix碼、PDF417碼、Aztec碼、MaxiCode碼 |
| 世代 | ||
| 條碼生成 | 無 | 是 |
| 平台 | ||
| iOS 主介面 | 是 | 是 |
| Android MAUI | 是 | 是 |
| Windows MAUI | 無 | 是 |
| macOS MAUI | 無 | 是 |
| 控制台應用程式 | 無 | 是 |
| ASP.NET Core | 無 | 是 |
| Blazor 伺服器 | 無 | 是 |
| WPF 應用程式 | 無 | 是 |
| WinForms應用程式 | 無 | 是 |
| Azure 功能 | 無 | 是 |
| AWS Lambda | 無 | 是 |
| Docker / Linux | 無 | 是 |
| Windows 服務 | 無 | 是 |
| .NET Framework 4.6.2+ | 無 | 是 |
| 授權 | ||
| 許可模式 | 年度固定費用 | 一次永久 |
| 出版價格 | 聯絡銷售人員 | 是的(749美元至5,999美元) |
| 批量定價 | 不適用(固定費用) | 不適用(永久層級) |
架構:相機管線與檔案處理
Scanbot SDK 和IronBarcode之間最顯著的差異不是功能上的差距,而是兩個函式庫在理解其輸入方式上的根本架構差異。
Scanbot SDK 方法
Scanbot 的架構是基於原生相機管道建構。當呼叫 BarcodeScanner.Open(configuration) 時,該程式庫會將控制權交給 iOS 和 Android 裝置上由原生相機 API 提供支援的全螢幕相機體驗。 該庫持續處理即時視訊幀,對每一幀應用條碼檢測,並在確認條碼或用戶關閉掃描器時將控制權返回給呼叫應用程式。 Scanbot 模型中沒有靜態影像的概念—輸入始終是來自裝置相機的即時視訊幀流。
此設計可帶來流暢的掃描體驗:即時條碼在取景器中突出顯示,可配置的掃描區域具有縱橫比控制,手電筒切換,音頻和觸覺反饋,以及方向鎖定。 這些是 Scanbot 為行動相機使用場景投入開發的 UI 功能。 但缺點是,該庫與相機硬體以及驅動它的行動作業系統密不可分。
IronBarcode方法
IronBarcode 接受任何包含條碼的影像的二進位表示形式,並透過相同的靜態方法傳回解碼結果,而不管影像是如何獲得的:
// Install: dotnet add package IronBarcode
IronBarCode.License.LicenseKey = "YOUR-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 IronBarcode
IronBarCode.License.LicenseKey = "YOUR-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
Imports System.IO
' Install: dotnet add package IronBarcode
License.LicenseKey = "YOUR-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 的軟體包目標為 net8.0-android 和 net8.0-ios。 一個只聲明了這兩個目標的 .NET MAUI Application 專案將成功建置。 但是,當 net8.0-windows 或 net8.0-maccatalyst 新增至 TargetFrameworks 時,Scanbot 套件引用無法解析這些目標。 這不是配置問題——該軟體包沒有提供適用於 Windows 或 macOS 的組件。 故障出現在桌面目標上的首次建置嘗試期間,而不是 NuGet 安裝時。
此限制意味著 Scanbot 在結構上與包含桌面平台的多目標 MAUI 專案不相容,並且無論框架版本如何,它都不能用於任何非 MAUI 伺服器或桌面專案類型。
IronBarcode方法
IronBarcode 以單一 NuGet 套件的形式分發,可在所有 .NET 專案類型和目標框架中正確解析:
// Same package, same API — works in ASP.NET Core, WPF, console, MAUI, Azure Functions
dotnet add package IronBarcode
// Same package, same API — works in ASP.NET Core, WPF, console, MAUI, Azure Functions
dotnet add package IronBarcode
對於也面向 Windows 或 macOS 桌面的 MAUI 應用程序,IronBarcode 透過單一軟體包引用支援所有四個 MAUI 目標,無需平台條件配置。 建置以 iOS、Android 和 Windows 為導向的 MAUI 專案的團隊可以新增一次 IronBarcode,然後在所有三個平台上使用 BarcodeReader.Read(),而無需進行任何修改。
MAUI整合模式
這兩個庫都可以在 .NET MAUI 專案中使用,但根據每個庫的輸入模型,整合模式有很大不同。
Scanbot SDK 方法
在針對 iOS 和 Android 的 MAUI 專案中,Scanbot 提供了一個嵌入在應用程式導航流程中的原生相機取景器。 BarcodeScanner.Open() 呼叫會顯示全螢幕掃描器,當使用者完成或關閉掃描時,結果會回到呼叫頁面。 這種整合使行動應用程式擁有專門的掃描使用者介面,感覺就像是平台原生應用程式一樣。
當專案規模擴大時,這種限制就顯現出來了。 在 MAUI 專案中新增 Windows 或 macOS 目標會導致這些平台上的建置失敗。 新增需要條碼處理的伺服器端元件需要單獨的函式庫。 Scanbot 依賴項無法跟隨專案擴展到 iOS 和 Android 以外的平台。
IronBarcode方法
在 MAUI 專案中,IronBarcode 與此平台的 MediaPicker 搭配使用,以擷取照片並從產生的影像中讀取條碼。 掃描工作流程使用系統攝影機,而不是客製化取景器:
// Works on iOS, Android, Windows, and macOS MAUI targets
// NuGet: dotnet add package IronBarcode
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, and macOS MAUI targets
// NuGet: dotnet add package IronBarcode
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
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
這項交易是即時取景器疊加。 使用者看到的是系統相機介面,而不是自訂掃描區域,這對於只需對準拍攝即可滿足的商業應用來說已經足夠了。 .NET MAUI 條碼掃描器教學涵蓋了iOS和Android目標的完整 MAUI 整合模式,包括權限處理和專案配置。
許可模式
Scanbot SDK 和IronBarcode所使用的商業授權結構截然不同。
掃描機器人方法
Scanbot採用年度固定收費模式。 無論掃描量多少,年度許可證費用都是固定的——無論是每年掃描 100 次還是每年掃描 1000 萬次,費用都一樣。 這為擁有穩定純行動端部署的團隊提供了可預測的年度預算。 確切價格需聯絡 Scanbot 銷售團隊; 暫無已公佈的數據。 每年續約義務意味著許可證是一項持續的營運成本。
IronBarcode方法
IronBarcode採用一次性永久購買模式,分為四個等級:Lite版749美元,Plus版1499美元,Professional版2999美元,Unlimited版5999美元。購買版本無需每年續費即可繼續使用。 許可期限內的軟體更新包含在內。 Iron Software 網站上公佈了產品定價,無需銷售人員進行洽談。
API 對應參考。
評估這兩個庫架構差異的團隊會發現此映射有助於理解概念等效性:
| Scanbot SDK | IronBarcode |
|---|---|
ScanbotSDK.Initialize(new ScanbotSDKConfiguration { LicenseKey = "..." }) |
IronBarCode.License.LicenseKey = "key" |
new BarcodeScannerConfiguration() |
new BarcodeReaderOptions() |
ScanbotBarcodeSDK.BarcodeScanner.Open(configuration) |
BarcodeReader.Read(path / stream / bytes) |
result.Status == OperationResult.Ok |
檢查 results.Any() 或 results.FirstOrDefault() != null |
result.Barcodes |
傳回值 BarcodeReader.Read() |
barcode.Format |
result.Format (IronBarCode.BarcodeEncoding) |
barcode.Text |
result.Value |
BarcodeFormat.Code128 |
BarcodeEncoding.Code128 |
BarcodeFormat.QrCode |
BarcodeEncoding.QRCode |
BarcodeFormat.Ean13 |
BarcodeEncoding.EAN13 |
BarcodeScannerConfiguration.FinderAspectRatio |
沒有等效項-影像取景由 MediaPicker 處理 |
BarcodeScannerConfiguration.FlashEnabled |
沒有等效選項-請使用 MediaPicker 選項 |
| 僅相機輸入 | 文件路徑、流、位元組數組或 PDF |
| iOS 和 Android MAUI 系統 | 所有 .NET 平台 |
當團隊考慮從 Scanbot SDK 遷移到IronBarcode時
通常情況下,開發團隊會根據多種因素來評估 IronBarcode,看看它能否取代 Scanbot SDK 或作為其補充。
伺服器端和後端處理
使用 Scanbot 建立的行動應用程式通常會與一個伺服器端元件並存,該元件負責處理文件上傳、批次作業或 API 端點。 當伺服器端元件需要進行條碼處理時(例如從上傳的 PDF 中提取條碼、驗證傳入文件中的條碼值或處理影像附件中的條碼資料),Scanbot 就無法使用了。 該軟體包無法在 ASP.NET Core、Azure Functions、控制台應用程式或任何非 MAUI 專案中編譯。 在這種情況下,團隊會發現自己既要維護移動條碼依賴項,又要維護單獨的伺服器端條碼解決方案,或者評估IronBarcode是否可以用一個軟體包來滿足這兩個角色。
桌面應用程式要求
MAUI 的價值主張通常是跨平台覆蓋:一個程式碼庫即可覆蓋 iOS、Android 和 Windows。 當 Windows MAUI 目標進入開發計劃時(無論是最初的需求還是後來的添加),Scanbot 的軟體包都無法在該目標上解析。 Windows 建置過程中,如果相依性清單中包含 Scanbot,則無法繼續進行。團隊會在首次嘗試建立桌面目標平台時發現此問題,解決方法是從共用依賴項清單中移除 Scanbot。對於必須使用 Windows 桌面目標平台的團隊而言,IronBarcode 成為唯一一款既支援行動裝置又支援桌面平台的條碼程式庫。
PDF和文件工作流程
從即時掃描發展到文件自動化的應用會遇到 Scanbot 的功能瓶頸。 從 PDF 發票中讀取條碼、從掃描的貨運標籤影像中提取追蹤程式碼或處理存檔文件中的條碼資料——這些工作流程在 Scanbot 模型中都不可能實現,因為輸入必須始終是即時攝影機畫面。IronBarcode可以原生處理所有這些基於檔案的輸入。 MAUI 行動應用程式中使用的相同軟體套件可在背景處理作業中從 PDF 文件中提取條碼,而無需任何額外的依賴項。
可預測的許可成本
每年的續費費用需要在每個續費週期中重新評估。 對於最初以小規模移動部署方式使用 Scanbot,後來擴展到擁有更多用戶或平台的更廣泛部署的團隊來說,隨著規模的擴大,他們可能會發現年費不再那麼划算。IronBarcode的一次性永久授權模式免除了續費義務。 進行許可證續約評估的團隊通常會考慮一次性購買是否更符合他們的長期成本規劃,尤其是在擴展的專案範圍包括 Scanbot 本身就不涵蓋的伺服器端或桌面平台時。
常見的遷移考量
從 Scanbot SDK 遷移到IronBarcode的團隊應該做好準備,以應對過渡過程中出現的一些技術差異。
沒有即時取景器等效物
Scanbot 的即時相機取景器(具有掃描區域疊加、連續偵測和觸覺回饋功能)在IronBarcode中沒有直接的對應功能。 替換模式使用 MAUI 的 MediaPicker.CapturePhotoAsync() 開啟系統相機,拍攝照片,並將影像傳回以進行處理。 使用者體驗是照片拍攝流程,而不是連續掃描流程。 對於商業應用(庫存、物流、文件處理),這種差異很少具有重要意義。 對於以即時疊加層為核心產品體驗的消費者應用而言,這是一個真正的使用者體驗差異,在決定遷移之前應該對其進行評估。
事件回呼模式直接返回
Scanbot 的 BarcodeScanner.Open() 是異步的,並傳回一個 OperationResult,其中包含一個狀態欄位和一個 Barcodes 集合。IronBarcode的 BarcodeReader.Read() 直接傳回一個集合-沒有一個有狀態欄位的包裝物件。 成功檢查從 result.Status == OperationResult.Ok 變為 results.Any() 或對 results.FirstOrDefault() 進行空值檢查。
格式枚舉命名空間更改
Scanbot 的 BarcodeFormat 枚舉(例如,BarcodeFormat.Code128)和IronBarcode的 BarcodeEncoding 枚舉(例如,BarcodeEncoding.Code128)包含類似的成員,但它們是不同的類型。 按枚舉類型儲存或比較格式值的程式碼需要更新類型參考。 基於 .ToString() 輸出的字串比較通常是相容的,因為成員名稱相似,但明確枚舉類型比較需要更新為 BarcodeEncoding 值。
Windows 建置附加元件
如果在遷移之前 Scanbot 軟體包導致 Windows MAUI 建置失敗,則將其移除即可解決這些失敗。 新增IronBarcode後,請驗證 MAUI 應用程式程式碼中是否正確處理了 Windows 特有的功能(檔案選擇對話方塊、本機檔案路徑、Windows 權限),因為這些功能與 iOS 和 Android 的檔案存取模式不同。
IronBarcode的其他功能
除了本次對比中涵蓋的核心場景之外,IronBarcode 還提供了一些隨著專案擴展而變得重要的功能:
-條碼產生:以圖像檔案、串流或嵌入 HTML 和 PDF 文件中的內容形式,產生所有主流的一維和二維條碼。 -多條碼文件處理:一次呼叫即可讀取多頁 PDF 文件中每一頁上的條碼,每個結果都包含其所在頁碼。 -機器學習糾錯:從標準偵測演算法無法解碼的損壞、部分遮蔽或低對比影像中恢復條碼 -批次影像處理:在一次操作中處理影像路徑或流數組,實現高吞吐量的文件工作流程 -條碼讀取器選項調優:控制讀取速度、多條碼偵測、格式過濾和影像預處理,以在特定用例中平衡吞吐量和準確性。
- iOS MAUI 整合:全面支援使用 MediaPicker 模式在 iOS 主介面 應用程式中讀取條碼
- 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 應用程式提供流暢的即時取景器體驗。IronBarcode是一個檔案和文件處理庫,可以讀取和產生各種 .NET 專案類型和部署目標的條碼。 比較的是範圍和架構,而不是每個函式庫在其預期領域內的品質。
Scanbot SDK 在其定義的範圍內確實非常強大。 對於消費者和企業行動應用,用戶可以直接將設備攝影機對準實體條碼並期望獲得即時視覺反饋——零售、票務、倉庫查找——Scanbot 的攝影機管道和完善的取景器組件是專為這種互動模型而構建的。 如果部署僅限於 iOS 和 Android 行動設備,即時掃描體驗是產品的核心,而年度固定費用符合預算,那麼 Scanbot 對於這種範圍狹窄且定義明確的使用場景來說是一個合理的選擇。
當條碼處理需求超出即時攝影機場景時,IronBarcode 就顯得尤為重要。 伺服器端文件處理、接受文件上傳的 ASP.NET Core 端點、Windows 或 macOS 上的桌面應用程式、由 Blob 儲存體觸發的 Azure Functions、包含桌面平台的多目標 MAUI 專案以及批次 PDF 處理作業都屬於IronBarcode的原生範圍。 此單一軟體包無需平台條件配置即可安裝,並且無論代碼是在行動裝置、伺服器或桌面上運行,都提供相同的 BarcodeReader.Read() 呼叫。
對於既需要即時移動相機掃描又需要檔案或伺服器處理的團隊來說,架構最簡潔的解決方案是使用 Scanbot 處理行動相機 UI,而使用IronBarcode則處理其他一切。 這種方法的代價是需要兩個條碼依賴項和兩份許可協議。 對於願意接受系統攝影機而不是自訂取景器進行行動掃描互動的團隊來說,IronBarcode 僅憑一個軟體包和一個許可證即可涵蓋整個專案範圍——從 MAUI 行動應用程式到伺服器 API 和 Windows 桌面伴侶程式。
常見問題解答
什麼是 Scanbot SDK?
Scanbot SDK 是一個 .NET 條碼庫,用於在 C# 應用程式中產生和讀取條碼。它是開發人員在為 .NET 專案選擇條碼解決方案時評估的幾個替代方案之一。
Scanbot SDK 和 IronBarcode 的主要差異是什麼?
IronBarcode 使用靜態、無狀態的 API,無需實例管理,而 Scanbot SDK 通常需要先建立實例並進行設定才能使用。 IronBarcode 還提供原生 PDF 支援、自動格式偵測以及跨所有環境的單金鑰許可。
IronBarcode 的授權比 Scanbot SDK 更容易嗎?
IronBarcode 使用單一授權金鑰,同時涵蓋開發和生產部署。與將 SDK 金鑰與執行時間金鑰分開的授權系統相比,這簡化了 CI/CD 管線和 Docker 配置。
IronBarcode是否支援Scanbot SDK支援的所有條碼格式?
IronBarcode 支援超過 30 種條碼符號體系,包括 QR 碼、Code 128、Code 39、DataMatrix、PDF417、Aztec、EAN-13、UPC-A、GS1 等等。格式自動偵測功能意味著無需明確枚舉格式。
IronBarcode是否支援原生PDF條碼讀取?
是的。 IronBarcode 可以直接從 PDF 檔案讀取條碼,使用 `BarcodeReader.Read("document.pdf")` 方法,無需單獨的 PDF 渲染庫。每頁的讀取結果包括頁碼、條碼格式、數值和置信度評分。
與 Scanbot SDK 相比,IronBarcode 在批次處理方面有何不同?
IronBarcode 的靜態方法是無狀態的,且天然執行緒安全,因此可以直接使用 Parallel.ForEach,而無需進行執行緒層級實例管理。所有定價層級均無吞吐量上限。
IronBarcode支援哪些.NET版本?
IronBarcode 在單一 NuGet 套件中支援 .NET Framework 4.6.2+、.NET Core 3.1 以及 .NET 5、6、7、8 和 9。平台目標包括 Windows x64/x86、Linux x64 和 macOS x64/ARM。
如何在.NET專案中安裝IronBarcode?
透過 NuGet 安裝 IronBarcode:在程式包管理器控制台中執行“Install-Package IronBarCode”,或在命令列介面中執行“dotnet add package IronBarCode”。無需其他 SDK 安裝程式或運行時檔案。
與 Scanbot 不同,我可以在購買前評估 IronBarcode 的功能嗎?
是的。 IronBarcode 的試用模式會傳回完整的解碼條碼值-只有產生的輸出影像才會有浮水印。您可以在購買前,用自己的文件測試讀取準確率。
Scanbot SDK 和 IronBarcode 的價格有什麼不同?
IronBarcode 的永久單開發者許可證起價為 749 美元,涵蓋開發和生產環境。定價詳情和大量許可選項請造訪 IronBarcode 授權頁面。無需單獨的運行時許可證。
從 Scanbot SDK 遷移到 IronBarcode 是否簡單?
從 Scanbot SDK 遷移到 IronBarcode 主要涉及將基於實例的 API 呼叫替換為 IronBarcode 的靜態方法、移除許可相關的樣板程式碼以及更新結果屬性名稱。大多數遷移工作都是減少程式碼,而不是增加程式碼。
IronBarcode 能產生帶有 logo 的二維碼嗎?
是的。 `QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png")` 可以將品牌圖片原生嵌入二維碼中,並支援設定糾錯功能。此外,它還支援透過 `ChangeBarCodeColor()` 函數建立彩色二維碼。

