Scanbot SDKとIronBarcodeの比較:C#バーコードライブラリの比較
Scanbot SDKは、デバイスのカメラを使用して、バーコードスキャン画面を全画面表示で開きます。 CODE-39243-@@メソッドはありません。 スキャナはカメラのユーザーインターフェースです。 バーコードがサーバー上のPDF請求書に含まれている場合、Scanbotは対応できません。これは批判ではなく、アーキテクチャ上の仕様説明です。 Scanbot SDKは、ネイティブのiOSおよびAndroidスキャンAPIを洗練されたビューファインダーコンポーネントに組み込んだMAUIカメラコントロールです。 CODE-39244--@@フルスクリーンカメラ体験にコントロールを渡し、ユーザーがデバイスをBarCodeに向けると、SDKがライブビデオフィードでそれを検出し、その結果がアプリに返されます。NuGetパッケージ名--"@--CODE-39245--@@"と製品カテゴリ--"barcode SDK"--から、開発者はこのSDKをサーバーサイドのドキュメント処理、WPFデスクトップアプリ、または.NET Core API向けに評価する可能性があるため、この比較は重要です。この記事では、2つのツールのアーキテクチャの違い、それぞれが実際に行うこと、そしてScanbotが構造的にカバーできないシナリオをIronBarcodeがカバーしている点について説明します。
Scanbot SDKについて理解する
Scanbot SDKは、Scanbot GmbHが開発した商用モバイルバーコードスキャンSDKです。 .NET向けには、@--CODE-39246--@@、@--CODE-39247--@および@--CODE-39248--@@をターゲットとしたパッケージがあります。 SDKには、.NET MAUI Application@プロジェクトと、その<UseMaui>true</UseMaui>およびTargetFrameworksのモバイル・ターゲットが必要です。 コンソールアプリ、クラスライブラリ、 ASP.NET Coreプロジェクト、またはWindowsをターゲットとするMAUIアプリに対しては解決されません。
Scanbotは、カメラ機能を最優先に設計された製品です。 そのAPI全体は、ライブビューファインダーの体験を中心に設計されています。設定オブジェクトによって、カメラのUIの外観、ライブビデオパイプラインが監視するフォーマット、そしてユーザーへのフィードバックの提供方法が制御されます。 このライブラリは、iOSおよびAndroidのコンシューマー向けおよびEnterpriseモバイルアプリ向けに、洗練されたスキャンコンポーネントを提供します。
-主なプラットフォームターゲット: .NET MAUIフレームワークを介したiOSおよびAndroidモバイルデバイス。 WindowsおよびmacOSのMAUIターゲットはサポートされていません -入力モデル:ライブデバイスカメラフィードのみ - ファイルパス、ストリーム、またはバイト配列のオーバーロードは存在しません
- API設計: @--CODE-39252--@@ フルスクリーンのカメラ体験に制御を渡し、ユーザーがスキャンを確認するかキャンセルすると、@--CODE-39253--@@を返します。 -カメラUI機能:スキャン領域オーバーレイ付きリアルタイムビューファインダー、懐中電灯制御、アスペクト比設定、音声および触覚フィードバック、向きロック 対応フォーマット: 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は、ライブビデオフレームをリアルタイムで処理し、検出されたバーコードをビューファインダー内で強調表示し、バーコードが確認されるかユーザーがキャンセルすると処理を終了します。 設定オブジェクトは、カメラのUIの外観を制御するものであり、処理動作を制御するものではありません。 これが完全なモデルです。
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ドキュメントに埋め込みます。 -対応フォーマット: QR、DataMatrix、PDF417、Aztec、MaxiCodeを含む30種類以上の1次元フォーマットと5種類の2次元フォーマットに対応 -読み取り機能の強化:機械学習に基づくエラー訂正と、困難な実世界の画像における破損したバーコードの復元
- コンフィギュレーション オブジェクト: @--CODE-39257--@@ カメラの UI の外観ではなく、処理の動作 (速度、マルチバーコード検出) を制御します。 -ライセンスモデル: 4つのティア(Lite 749ドル、 Plus 1,499ドル、 Professional 2,999ドル、Unlimited 5,999ドル)で永久ライセンスを一度購入する方式。 年間更新不要
機能比較
以下の表は、Scanbot SDKとIronBarcodeの基本的な違いをまとめたものです。
| フィーチャー | スキャンボットSDK | IronBarcode |
|---|---|---|
| 主なユースケース | モバイル端末でのライブカメラによるバーコードスキャン | ファイルおよび文書のバーコード読み取りと生成 |
| 入力モデル | デバイスカメラの映像のみ | ファイルパス、ストリーム、バイト配列、PDF |
| プラットフォームサポート | iOSおよびAndroid版MAUIのみ | すべての.NETプラットフォームとプロジェクトタイプ |
| バーコード生成 | なし | はい |
| PDFバーコード抽出 | なし | はい |
| ライセンスモデル | 年間定額料金 | 一度限りの永久 |
| ライブカメラUI | はい、研磨されたビューファインダー部品です | いいえ(写真撮影にはMediaPickerを使用してください) |
詳細な機能比較
| フィーチャー | スキャンボットSDK | IronBarcode |
|---|---|---|
| 読む | ||
| ファイルパスからの入力 | なし | はい |
| ストリームからの入力 | なし | はい |
| バイト配列からの入力 | なし | はい |
| PDFバーコード抽出 | なし | はい |
| ライブカメラビューファインダー | はい | なし |
| リアルタイムフレームスキャン | はい | なし |
| 自動フォーマット検出 | はい | はい |
| 機械学習エラー訂正 | なし | はい |
| 破損したバーコードの復旧 | なし | はい |
| 1Dフォーマットのカウント | 20歳以上 | 30+ |
| 2Dフォーマットのカウント | QRコード、データマトリックス、PDF417、アステカ | QRコード、データマトリックス、PDF417、アステカ、マキシコード |
| 世代 | ||
| バーコード生成 | なし | はい |
| プラットフォーム | ||
| iOS MAUI | はい | はい |
| アンドロイド MAUI | はい | はい |
| Windows MAUI | なし | はい |
| macOS MAUI | なし | はい |
| コンソールアプリケーション | なし | はい |
| .NET Core | なし | はい |
| Blazorサーバー | なし | はい |
| WPFアプリケーション | なし | はい |
| WinFormsアプリケーション | なし | はい |
| Azure Functions | なし | はい |
| AWSラムダ | なし | はい |
| Docker / Linux | なし | はい |
| Windowsサービス | なし | はい |
| .NET Framework 4.6.2以降 | なし | はい |
| ライセンスについて | ||
| ライセンスモデル | 年間定額料金 | 一度限りの永久 |
| 公開価格 | 営業担当 | はい(749ドル~5,999ドル) |
| ボリュームディスカウント | 該当なし(定額料金) | 該当なし(永続的なティア) |
アーキテクチャ:カメラパイプラインとファイル処理の比較
Scanbot SDKとIronBarcodeの最も大きな違いは、機能の差ではなく、それぞれのライブラリが入力データをどのように概念化するかという根本的なアーキテクチャの違いにある。
Scanbot SDKのアプローチ
スキャンボットのアーキテクチャは、ネイティブカメラパイプラインを中心に構築されています。CODE-39258--@@@が呼び出されると、ライブラリは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 Functions、WPFフォーム、またはMAUIページで実行されます。 IronBarcodeは、PDFからバーコードをネイティブに読み取ります。PDFから抽出した画像としてではなく、PDFの構造を直接解析して各ページ上のバーコードを見つけ出すことで読み取ります。
プラットフォームと導入に関するカバレッジ
Scanbot SDKのプラットフォーム範囲は、そのNuGetパッケージがサポートするターゲットによって固定されます。 IronBarcodeのスコープは、 .NETランタイム自体と一致します。
Scanbot SDKのアプローチ
Scanbotのパッケージは@--CODE-39259--@と@--CODE-39260--@を対象としています。 これら2つのターゲットのみを宣言したプロジェクトは、正常にビルドされます。 しかし、@@--CODE-39262--@または@@--CODE-39263--@が@@--CODE-39264--@に追加されると、Scanbotパッケージリファレンスはこれらのターゲット上で解決できません。 これは設定の問題ではありません。このパッケージには、Windows または macOS 用のアセンブリは含まれていません。 このエラーは、 NuGetのインストール時ではなく、デスクトップターゲットでの最初のビルド試行時に発生します。
この制約により、Scanbotはデスクトッププラットフォームを含むマルチターゲットMAUIプロジェクトとは構造的に互換性がなく、フレームワークのバージョンに関係なく、MAUI以外のサーバーまたはデスクトッププロジェクトタイプでは使用できません。
IronBarcodeのアプローチ
IronBarcodeは、すべての.NETプロジェクトタイプとターゲットフレームワークで正しく解決される単一のNuGetパッケージとして配布されます。
// 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はプラットフォーム依存の設定なしに、単一のパッケージ参照から4つのMAUIターゲットすべてをサポートします。 iOS、Android、WindowsをターゲットとするMAUIプロジェクトを構築しているチームは、IronBarcodeを一度追加すれば、3つのプラットフォームすべてで修正することなくBarcodeReader.Read()@を使用できます。
MAUI統合パターン
どちらのライブラリも.NET MAUIプロジェクトで使用できますが、統合パターンは各ライブラリの入力モデルによって大きく異なります。
Scanbot SDKのアプローチ
iOSとAndroidを対象としたMAUIプロジェクトにおいて、Scanbotはアプリのナビゲーションフローに組み込まれたネイティブのカメラビューファインダーを提供します。 CODE-39266--@@呼び出しは、フルスクリーン・スキャナを表示し、ユーザーがスキャンを完了または終了すると、呼び出し元のページに戻ります。 この統合により、モバイルアプリケーションはプラットフォームにネイティブな感覚を与える、専用のスキャンUIを備えることができる。
プロジェクトが拡大すると、その制約が顕在化する。 MAUIプロジェクトにWindowsまたはmacOSのターゲットを追加すると、これらのプラットフォームでのビルドが失敗します。 バーコード処理を必要とするサーバー側コンポーネントを追加するには、別のライブラリが必要です。 Scanbotの依存関係は、iOSとAndroid以外のプロジェクトには適用できません。
IronBarcodeのアプローチ
MAUIプロジェクトでは、IronBarcodeはプラットフォームのMediaPickerと連携して写真をキャプチャし、得られた画像からバーコードを読み取ります。 スキャンワークフローでは、専用のビューファインダーではなく、システムカメラを使用します。
// Works on iOS, Android, Windows, andmacOS MAUItargets
// 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, andmacOS MAUItargets
// 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
そのトレードオフは、ライブビューファインダーのオーバーレイ機能です。 ユーザーはカスタムスキャン領域ではなく、システムカメラのUIを見ることになりますが、これはポイントアンドキャプチャで十分なビジネスアプリケーションには適しています。 .NET MAUIバーコードスキャナーのチュートリアルでは、権限処理やプロジェクト構成を含め、 iOSおよびAndroidをターゲットとしたMAUI統合パターン全体を網羅的に解説します。
ライセンスモデル
Scanbot SDKとIronBarcodeは、根本的に異なる商用ライセンス構造を採用しています。
スキャンボットアプローチ
Scanbotは年間定額料金制で運営されています。 年間ライセンス料金はスキャン量に関係なく固定です。年間100回のスキャンでも、年間1000万回のスキャンでも、料金は同じです。 これにより、モバイル端末のみを安定的に展開しているチームにとって、予測可能な年間予算編成が可能になります。 正確な価格については、Scanbotの営業チームにお問い合わせください。 公表されている数値は入手できません。 年間更新義務があるということは、ライセンスが継続的な運営コストとなることを意味する。
IronBarcodeのアプローチ
IronBarcodeは、 Lite (749ドル)、 Plus (1,499ドル)、 Professional (2,999ドル)、Unlimited(5,999ドル)の4つのプランで、買い切り型の永久ライセンスとして販売されています。購入したバージョンを継続して使用するための年間更新料は不要です。 ライセンス期間内のソフトウェアアップデートは含まれています。 価格はIron Softwareのウェブサイトに掲載されており、営業担当者とのやり取りは不要です。
APIマッピングリファレンス
2つのライブラリのアーキテクチャ上の違いを評価するチームは、このマッピングが概念の等価性を理解する上で役立つでしょう。
| スキャンボットSDK | IronBarcode |
|---|---|
| コード-39268 | コード-39269 |
| コード-39270 | コード-39271 |
| コード-39272 | コード-39273 |
| コード-39274 | CODE-39275--@@またはresults.FirstOrDefault() != nullをチェックしてください。 |
| コード-39277 | コード-39278の戻り値 |
| コード-39279 | --CODE-39280--@@ (IronBarCode.BarcodeEncoding) |
| コード-39281 | コード-39282 |
| コード-39283 | コード-39284 |
| コード-39285 | コード-39286 |
| コード-39287 | コード-39288 |
| コード-39289 | 同等のものはありません — 画像フレーミングはMediaPickerによって処理されます |
| コード-39290 | 同等のオプションはありません。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 のパッケージはそのターゲット上で解決に失敗します。 Scanbotが依存関係リストに含まれていると、Windowsビルドは実行できません。この問題は、デスクトップターゲットのビルドを初めて試みる際に発生し、解決するには共有依存関係リストからScanbotを削除する必要があります。Windowsデスクトップターゲットが必須要件となっているチームにとって、モバイル向けバーコードライブラリの中でデスクトッププラットフォームにも対応しているのはIronBarcodeのみとなります。
PDFおよびドキュメントワークフロー
ライブスキャンから文書自動化へと移行するアプリケーションは、Scanbotの機能的な限界に直面する。 PDF形式の請求書からバーコードを読み取る、スキャンした配送ラベル画像から追跡コードを抽出する、アーカイブされた文書からバーコードデータを処理するなど、これらのワークフローはScanbotモデルではどれも実行できません。なぜなら、入力は常にライブカメラの映像でなければならないからです。 IronBarcodeは、これらのファイルベースの入力をすべてネイティブに処理します。 MAUIモバイルアプリで動作する同じパッケージは、追加の依存関係なしに、バックグラウンド処理ジョブでPDFドキュメントからバーコードを抽出できます。
予測可能なライセンス費用
年間更新費用は、更新サイクルごとに再評価する必要がある。 Scanbotを小規模なモバイル展開で開始し、その後、ユーザー数やプラットフォーム数を増やしてより大規模な展開へと拡大したチームは、規模が大きくなるにつれて年間料金が割高になると感じるかもしれません。 IronBarcodeの1回限りの永久ライセンスモデルは、更新義務をなくします。 ライセンス更新の評価を行うチームは、特にプロジェクトの範囲が拡大し、Scanbotの対象外となるサーバーサイドやデスクトッププラットフォームが含まれる場合、一括購入が長期的なコスト計画に合致するかどうかを検討することが多い。
一般的な移行の考慮事項
Scanbot SDKからIronBarcodeに移行するチームは、移行中に発生するいくつかの技術的な違いに備えておく必要があります。
ライブビューファインダー相当機能なし
Scanbotのリアルタイムカメラビューファインダー(スキャン領域のオーバーレイ、連続検出、触覚フィードバック機能付き)は、 IronBarcodeには直接対応する機能がない。 この置き換えパターンでは、MAUIのMediaPicker.CapturePhotoAsync()を使用して、システムカメラを開き、写真をキャプチャし、処理のために画像を返します。 ユーザー体験は、連続的なスキャンフローではなく、写真撮影フローとなる。 ビジネスアプリケーション(在庫管理、物流、文書処理など)においては、この区別はほとんど重要ではありません。 ライブオーバーレイが製品体験の中心となる消費者向けアプリの場合、これは真のUXの違いであり、移行を決定する前に評価すべきである。
イベントコールバックパターンを直接リターンする
ScanbotのBarcodeScanner.Open()は非同期で、ステータスフィールドとBarcodesコレクションを持つ@@--CODE-39293--@を返します。 IronBarcodeのBarcodeReader.Read()はコレクションを直接返します - ステータスフィールドを持つラッパーオブジェクトはありません。 成功チェックは、result.Status == OperationResult.Okからresults.Any()または@@--CODE-39298--@のNULLチェックに変更されます。
フォーマット列挙型名前空間の変更
ScanbotのBarcodeFormat enum(たとえば、BarcodeFormat.Code128)とIronBarcodeの@@--CODE-39301--@ enum(たとえば、@@--CODE-39302--@)は、似たようなメンバーを含みますが、異なる名前空間の異なる型です。 列挙型に基づいてフォーマット値を格納または比較するコードでは、型参照を更新する必要があります。 CODE-39303--@@出力に基づく文字列比較は、メンバ名が類似しているため、一般的に互換性がありますが、明示的な列挙型の比較では、BarcodeEncoding値に更新する必要があります。
Windowsビルド追加機能
移行前にScanbotパッケージが原因でWindows MAUIのビルドエラーが発生していた場合、そのパッケージを削除することでエラーは解消されます。 IronBarcodeを追加した後、Windows固有の機能(ファイル選択ダイアログ、ローカルファイルパス、Windowsのアクセス許可など)がMAUIアプリのコード内で適切に処理されていることを確認してください。これらの機能はiOSやAndroidのファイルアクセスパターンとは異なるためです。
IronBarcodeの追加機能
本比較で取り上げた主要なシナリオ以外にも、 IronBarcodeはプロジェクトの規模拡大に伴って重要となる機能を提供します。
-バーコード生成:主要な一次元および二次元フォーマットのバーコードを、画像ファイル、ストリーム、またはHTMLおよびPDFドキュメントへの埋め込みコンテンツとして生成します。 -マルチバーコード文書処理:複数ページのPDFファイルの各ページにあるすべてのバーコードを1回の呼び出しで読み取り、各結果にはバーコードが見つかったページ番号が含まれます。 -機械学習によるエラー訂正:標準的な検出アルゴリズムでは解読できない、破損した画像、部分的に隠された画像、またはコントラストの低い画像からバーコードを復元します。 -バッチ画像処理:高スループットのドキュメントワークフローのために、画像パスまたは画像ストリームの配列を単一の操作で処理します。
- BarcodeReaderOptions チューニング:読み取り速度、複数バーコード検出、フォーマットフィルタリング、画像前処理を制御し、特定のユースケースに合わせてスループットと精度をバランスさせます。
- iOS MAUI統合: MediaPickerパターンを使用したiOS MAUIアプリケーションでのバーコード読み取りを完全にサポート
- Android MAUI統合: iOSと同じAPIを使用して、Android MAUIアプリケーションでのバーコード読み取りを完全にサポートします。
.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は、その定義された範囲内において、非常に優れた性能を発揮します。 ユーザーがデバイスのカメラを物理的なバーコードに直接向け、リアルタイムの視覚的なフィードバックを期待する消費者向けおよびEnterpriseモバイルアプリケーション(小売、チケット発行、倉庫検索など)向けに、Scanbotのカメラパイプラインと洗練されたビューファインダーコンポーネントは、そのようなインタラクションモデルに合わせて特別に設計されています。 展開対象がiOSとAndroidのモバイル端末のみで、ライブスキャン体験が製品の中核であり、年間定額料金が予算に見合う場合、Scanbotは、その限定的で明確に定義されたユースケースにとって妥当な選択肢となる。
IronBarcodeは、バーコード処理の要件がライブカメラのシナリオを超える場合に適しています。 サーバーサイドのドキュメント処理、ファイルアップロードを受け付けるASP.NET Coreエンドポイント、WindowsまたはmacOS上のデスクトップアプリケーション、BLOBストレージによってトリガーされるAzure Functions、デスクトッププラットフォームを含むマルチターゲットMAUIプロジェクト、およびバッチPDF処理ジョブはすべて、IronBarcodeのネイティブスコープに含まれます。 単一パッケージは、プラットフォームに依存しない構成でインストールされ、コードがモバイルデバイス、サーバー、デスクトップのいずれで実行されても、同じBarcodeReader.Read()@コールを提供します。
モバイルカメラによるリアルタイムスキャンとファイルまたはサーバー処理の両方を必要とするチームにとって、最もアーキテクチャ的にクリーンなソリューションは、モバイルカメラのUIにはScanbotを、それ以外のすべてにはIronBarcodeを使用することです。 その方法のコストは、2つのバーコード依存関係と2つのライセンス契約です。 モバイルスキャン操作において、カスタムビューファインダーではなくシステムカメラの使用を受け入れる意思のあるチームであれば、 IronBarcode単体で、MAUIモバイルアプリからサーバーAPI、Windowsデスクトップコンパニオンまで、プロジェクト全体の範囲を単一のパッケージと単一のライセンスでカバーできます。
よくある質問
Scanbot SDKとは何ですか?
Scanbot SDKは、C#アプリケーションでバーコードを生成して読み取るための.NETバーコードライブラリです。これは、開発者が.NETプロジェクトのバーコードソリューションを選択する際に評価するいくつかの選択肢の1つです。
Scanbot SDKとIronBarcodeの主な違いは何ですか?
IronBarcodeはインスタンス管理が不要な静的なステートレスAPIを使用していますが、Scanbot SDKは通常、使用前にインスタンスの作成と設定が必要です。IronBarcodeはまた、ネイティブPDFサポート、自動フォーマット検出、およびすべての環境でのシングルキーライセンスを提供します。
IronBarcodeはScanbot SDKよりもライセンスが簡単ですか?
IronBarcodeは単一のライセンスキーで開発環境と本番環境の両方をカバーします。これは、SDKキーとランタイムキーを分離するライセンスシステムと比較して、CI/CDパイプラインとDocker構成を簡素化します。
IronBarcode はScanbot SDKがサポートしているすべてのバーコードフォーマットに対応していますか?
IronBarcodeはQRコード、Code 128、Code 39、DataMatrix、PDF417、Aztec、EAN-13、UPC-A、GS1など30以上のバーコードシンボロジーをサポートしています。フォーマットの自動検出は、明示的なフォーマットの列挙が不要であることを意味します。
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をインストールする:パッケージマネージャーコンソールで'Install-Package IronBarCode'を実行するか、CLIで'dotnet add package IronBarCode'を実行する。追加のSDKインストーラーやランタイムファイルは必要ありません。
Scanbotとは異なり、購入前にIronBarcodeを評価することはできますか?
IronBarcodeのトライアルモードでは、完全なデコードされたバーコード値を返します。購入を決定する前に、ご自身のドキュメントで読み取り精度をベンチマークすることができます。
Scanbot SDKとIronBarcodeの価格の違いは何ですか?
IronBarcodeは、開発および量産をカバーする永続的なシングルデベロッパーライセンスで749ドルからご利用いただけます。価格の詳細とボリュームオプションはIronBarcodeのライセンスページでご覧いただけます。別途ランタイムライセンスは必要ありません。
Scanbot SDKからIronBarcodeへの移行は簡単ですか?
Scanbot SDKからIronBarcodeへの移行は、主にインスタンスベースのAPIコールをIronBarcodeのスタティックメソッドに置き換え、ライセンスの定型文を削除し、結果のプロパティ名を更新します。ほとんどの移行はコードを追加するのではなく、コードを削減します。
IronBarcodeはロゴ入りQRコードを生成できますか?
はい。QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png")は、設定可能なエラー修正機能付きで、ブランド画像をネイティブにQRコードに埋め込みます。カラーQRコードもChangeBarCodeColor()でサポートされています。

