Neodynamic Barcode ProfessionalとIronBarcodeの比較:C#バーコードライブラリの比較
Scanbot SDKとIronBarcode: カメラパイプラインとファイル処理
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 Core API用の評価につながる可能性があるためです。この記事では、2つのツールのアーキテクチャの違いと各ツールが何のために構築されているかについて説明します。
Scanbot SDKについて理解する
Scanbot SDKはdoo GmbHによって開発された商業バーコードスキャンSDKです。 その主要な.NET提供は、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、およびWindows 10 1809+でのUWP/WinUI 3経由の別パッケージ
Scanbot.BarcodeSDK.Windows; macOS MAUIターゲットはサポートされていません -入力モデル:ライブデバイスカメラフィードのみ - ファイルパス、ストリーム、またはバイト配列のオーバーロードは存在しません - API設計:
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 Functions、および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ドキュメントです。 カメラのユーザーインターフェースはなく、モバイル端末のハードウェアも不要です。 このライブラリは、あらゆる種類 for .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次元フォーマットに対応 -読み取り機能の強化:機械学習に基づくエラー訂正と、困難な実世界の画像における破損したバーコードの復元
- 構成オブジェクト:
BarcodeReaderOptionsは、カメラUIの外観ではなく処理動作(速度、マルチバーコード検出)を制御します。 -ライセンスモデル: 4つのティア(Lite 749ドル、 Plus 1,499ドル、 Professional 2,999ドル、Unlimited 5,999ドル)で永久ライセンスを一度購入する方式。 年間更新不要
機能比較
以下の表は、Scanbot SDKとIronBarcodeの基本的な違いをまとめたものです。
| フィーチャー | スキャンボットSDK | IronBarcode |
|---|---|---|
| 主なユースケース | モバイル端末でのライブカメラによるバーコードスキャン | ファイルおよび文書のバーコード読み取りと生成 |
| 入力モデル | デバイスカメラの映像のみ | ファイルパス、ストリーム、バイト配列、PDF |
| プラットフォームサポート | iOS/Android MAUIとUWP/WinUI 3(カメラに関連) | すべて for .NETプラットフォームとプロジェクトタイプ |
| バーコード生成 | なし | はい |
| PDFバーコード抽出 | なし | はい |
| ライセンスモデル | 年間定額料金 | 一度限りの永久 |
| ライブカメラUI | はい、研磨されたビューファインダー部品です | いいえ(写真撮影にはMediaPickerを使用してください) |
詳細な機能比較
| フィーチャー | スキャンボットSDK | IronBarcode |
|---|---|---|
| 読む | ||
| ファイルパスからの入力 | なし | はい |
| ストリームからの入力 | なし | はい |
| バイト配列からの入力 | なし | はい |
| PDFバーコード抽出 | なし | はい |
| ライブカメラビューファインダー | はい | なし |
| リアルタイムフレームスキャン | はい | なし |
| 自動フォーマット検出 | はい | はい |
| 機械学習エラー訂正 | なし | はい |
| 破損したバーコードの復旧 | なし | はい |
| 1Dフォーマットのカウント | 20歳以上 | 30+ |
| 2Dフォーマットのカウント | QRコード、データマトリックス、PDF417、アステカ | QRコード、データマトリックス、PDF417、アステカ、マキシコード |
| 世代 | ||
| バーコード生成 | なし | はい |
| プラットフォーム | ||
| iOS MAUI | はい | はい |
| アンドロイド MAUI | はい | はい |
| Windows MAUI | なし | はい |
| macOS MAUI | なし | はい |
| UWP / WinUI 3 (カメラあり) | Yes (別途Windowsパッケージ) | はい |
| コンソールアプリケーション | なし | はい |
| .NET Core | なし | はい |
| Blazorサーバー | なし | はい |
| WPFアプリケーション | なし | はい |
| WinFormsアプリケーション | なし | はい |
| Azure Functions | なし | はい |
| AWSラムダ | なし | はい |
| Docker / Linux | なし | はい |
| Windowsサービス | なし | はい |
| .NET Framework 4.6.2以降 | なし | はい |
| ライセンスについて | ||
| ライセンスモデル | 年間定額料金 | 一度限りの永久 |
| 公開価格 | 営業担当 | はい(749ドル~5,999ドル) |
| ボリュームディスカウント | 該当なし(定額料金) | 該当なし(永続的なティア) |
アーキテクチャ:カメラパイプラインとファイル処理の比較
Scanbot SDKとIronBarcodeの最も大きな違いは、機能の差ではなく、それぞれのライブラリが入力データをどのように概念化するかという根本的なアーキテクチャの違いにある。
Scanbot SDKのアプローチ
Scanbotのアーキテクチャは、ネイティブカメラパイプラインを中心に構築されています。ScanbotSDKMain.Barcode.StartScannerAsync(configuration)が呼び出されると、ライブラリは、iOS、Android、またはWindowsのデバイスのネイティブカメラAPIによって駆動されるフルスクリーンのカメラ体験を提供します。 このライブラリは、ライブビデオフレームを継続的に処理し、各フレームにバーコード検出を適用し、バーコードが確認されるか、ユーザーがスキャナーを閉じたときに、呼び出し元のアプリケーションに制御を戻します。 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 Functions、WPFフォーム、またはMAUIページで実行されます。 IronBarcodeは、PDFからバーコードをネイティブに読み取ります。PDFから抽出した画像としてではなく、PDFの構造を直接解析して各ページ上のバーコードを見つけ出すことで読み取ります。
プラットフォームと導入に関するカバレッジ
Scanbot SDKのプラットフォーム範囲は、そのNuGetパッケージがサポートするターゲットによって固定されます。 IronBarcodeのスコープは、 .NETランタイム自体と一致します。
Scanbot SDKのアプローチ
Scanbot MAUIパッケージは、net9.0-iosを対象としています。 これら2つのターゲットのみを宣言する.NET MAUI Applicationプロジェクトは正常にビルドされます。 しかし、net9.0-maccatalystまたはWindows MAUIターゲットがTargetFrameworksに追加されると、Scanbot MAUIパッケージ参照がこれらのターゲットで解決されません。 これは設定の問題ではありません—MAUIパッケージはWindowsまたはmacOS MAUI用のアセンブリを提供しません。 Windowsデスクトップは、オートフォーカスカメラ付きのUWP/WinUI 3アプリ用の別パッケージScanbot.BarcodeSDK.Windowsでカバーされています。
結果として、Scanbot for .NETパッケージセットは、サーバーや非カメラデスクトッププロジェクトタイプではなく、MAUIモバイルおよびUWP/WinUI 3デスクトップをターゲットにしています。
IronBarcodeのアプローチ
IronBarcodeは、すべて for .NETプロジェクトタイプとターゲットフレームワークで正しく解決される単一のNuGetパッケージとして配布されます。
# 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はプラットフォーム依存の設定なしに、単一のパッケージ参照から4つのMAUIターゲットすべてをサポートします。 iOS、Android、およびWindowsをターゲットとするMAUIプロジェクトを構築するチームは、一度IronBarcodeを追加すれば3つのプラットフォームすべてで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 Functions、または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バーコードスキャナーのチュートリアルでは、権限処理やプロジェクト構成を含め、 iOSおよびAndroidをターゲットとしたMAUI統合パターン全体を網羅的に解説します。
ライセンスモデル
Scanbot SDKとIronBarcodeは、根本的に異なる商用ライセンス構造を採用しています。
スキャンボットアプローチ
Scanbotは年間定額料金制で運営されています。 年間ライセンスコストはスキャンボリュームで測定されません。 これにより、モバイル端末のみを安定的に展開しているチームにとって、予測可能な年間予算編成が可能になります。 正確な価格については、Scanbotの営業チームにお問い合わせください。 公表されている数値は入手できません。 年間更新義務があるということは、ライセンスが継続的な運営コストとなることを意味する。
IronBarcodeのアプローチ
IronBarcodeは、 Lite (749ドル)、 Plus (1,499ドル)、 Professional (2,999ドル)、Unlimited(5,999ドル)の4つのプランで、買い切り型の永久ライセンスとして販売されています。購入したバージョンを継続して使用するための年間更新料は不要です。 ライセンス期間内のソフトウェアアップデートは含まれています。 価格はIron Softwareのウェブサイトに掲載されており、営業担当者とのやり取りは不要です。
APIマッピングリファレンス
2つのライブラリのアーキテクチャ上の違いを評価するチームは、このマッピングが概念の等価性を理解する上で役立つでしょう。
| スキャンボット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およびUWP/WinUI 3 | すべて for .NETプラットフォーム |
チームがScanbot SDKからIronBarcodeへの移行を検討する場合
開発チームがIronBarcodeをScanbot SDKの代替または補完として評価する一般的な状況はいくつかあります。
サーバーサイドおよびバックエンド処理
Scanbotで構築されたモバイルアプリは、多くの場合、ドキュメントのアップロード、バッチ処理、またはAPIエンドポイントを処理するサーバーサイドコンポーネントと連携して動作します。 サーバー側のコンポーネントがバーコード処理を必要とする場合(アップロードされたPDFからバーコードを抽出したり、受信ドキュメントのバーコード値を検証したり、画像添付ファイルからバーコードデータを処理したりする場合)、Scanbotは利用できません。 このパッケージは、 ASP.NET Core、Azure Functions、コンソールアプリケーション、またはMAUI以外のプロジェクトではコンパイルできません。 このような状況にあるチームは、モバイルバーコードへの依存を維持すると同時に、別のサーバーサイドバーコードソリューションも維持するか、 IronBarcodeが単一のパッケージで両方の役割をカバーできるかどうかを検討する必要に迫られます。
デスクトップアプリケーションの要件
MAUIの強みは、多くの場合、クロスプラットフォーム対応にあります。つまり、iOS、Android、Windowsをターゲットとする単一のコードベースです。 Windows MAUIターゲットがロードマップに登場する場合 - 初期要件からか、後の追加としてか - そのターゲットでScanbotBarcodeSDK.MAUIパッケージが解決されません。ScanbotはMAUI Windowsではなく、別のUWP/WinUI 3パッケージScanbot.BarcodeSDK.WindowsでWindowsをカバーしているためです。 マルチターゲットMAUIプロジェクト内でシングルWindowsビルドパスが必要なチーム、またはヘッドレスWindowsコンポーネント(例: Windowsサービス)が必要なチームは、Scanbotのパッケージセットからそれを得ることはできません。 IronBarcodeは、Windows MAUIターゲット上で解決する単一のパッケージを提供し、ヘッドレスデスクトップとサーバーコンテキストでも実行します。
PDFおよびドキュメントワークフロー
ライブスキャンから文書自動化へと移行するアプリケーションは、Scanbotの機能的な限界に直面する。 PDF請求書からバーコードを読み取る、スキャンされた発送ラベル画像から追跡コードを抽出する、またはアーカイブされたドキュメントからバーコードデータを処理することは、ライブカメラフィードに基づいて構築されたScanbotの入力モデルの範囲外にあります。 IronBarcodeは、これらのファイルベースの入力をすべてネイティブに処理します。 MAUIモバイルアプリで動作する同じパッケージは、追加の依存関係なしに、バックグラウンド処理ジョブでPDFドキュメントからバーコードを抽出できます。
予測可能なライセンス費用
年間更新費用は、更新サイクルごとに再評価する必要がある。 Scanbotを小規模なモバイル展開で開始し、その後、ユーザー数やプラットフォーム数を増やしてより大規模な展開へと拡大したチームは、規模が大きくなるにつれて年間料金が割高になると感じるかもしれません。 IronBarcodeの1回限りの永久ライセンスモデルは、更新義務をなくします。 ライセンス更新の評価を行うチームは、特にプロジェクトの範囲が拡大し、Scanbotの対象外となるサーバーサイドやデスクトッププラットフォームが含まれる場合、一括購入が長期的なコスト計画に合致するかどうかを検討することが多い。
一般的な移行の考慮事項
Scanbot SDKからIronBarcodeに移行するチームは、移行中に発生するいくつかの技術的な違いに備えておく必要があります。
ライブビューファインダー相当機能なし
Scanbotのリアルタイムカメラビューファインダー(スキャン領域のオーバーレイ、連続検出、触覚フィードバック機能付き)は、 IronBarcodeには直接対応する機能がない。 置換パターンは、MAUIのMediaPicker.CapturePhotoAsync()を使用してシステムカメラを開き、写真を撮り、その画像を処理のために返します。 ユーザー体験は、連続的なスキャンフローではなく、写真撮影フローとなる。 ビジネスアプリケーション(在庫管理、物流、文書処理など)においては、この区別はほとんど重要ではありません。 ライブオーバーレイが製品体験の中心となる消費者向けアプリの場合、これは真のUXの違いであり、移行を決定する前に評価すべきである。
イベントコールバックパターンを直接リターンする
ScanbotのValue.Itemsコレクションを伴って結果を返します。 IronBarcodeのBarcodeReader.Read()は、直接的にコレクションを返します - ステータスフィールドを持つラッパーオブジェクトはありません。 成功確認がresults.FirstOrDefault()でのnullチェックに変更されます。
フォーマット列挙型名前空間の変更
ScanbotのBarcodeFormat列挙型(例: BarcodeEncoding列挙型(例: BarcodeEncoding.Code128)は類似したメンバーを含みますが、異なる名前空間内の異なる型です。 列挙型に基づいてフォーマット値を格納または比較するコードでは、型参照を更新する必要があります。 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年後半にリリース予定 for .NET 10および将来のリリースとの互換性が確保されます。 IronBarcodeはプラットフォーム固有のカメラSDKではなくファイル処理ライブラリであるため、モバイルオペレーティングシステムのAPIやハードウェア機能に依存しません。つまり、モバイルプラットフォームのサポートサイクルに制約されることなく、 .NETエコシステムとともに互換性の範囲が拡大していくということです。
結論
Scanbot SDKとIronBarcodeは、異なる商品カテゴリを占有しつつも"バーコードSDK"というラベルを共有しています。ScanbotはiOSとAndroid(MAUI経由)およびWindows(UWP/WinUI3経由)のためのライブビューア体験を提供するカメラスキャンコンポーネントです。 IronBarcodeは、あらゆる種類 for .NETプロジェクトとデプロイメントターゲットに対応し、バーコードの読み取りと生成を行うファイルおよびドキュメント処理ライブラリです。 この比較は、各ライブラリが想定する領域内での品質ではなく、範囲とアーキテクチャに関するものです。
Scanbot SDKは、その定義された範囲内で強力です。 ユーザーがデバイスカメラを物理的なバーコードに直接向け、リアルタイムの視覚フィードバックを期待するアプリケーション — 小売、チケット販売、倉庫在庫など — では、Scanbotのカメラパイプラインおよびビューアコンポーネントはそのインタラクションモデルに特化して構築されています。 展開がカメラに関連するターゲット(iOS、Android、UWP/WinUI3 Windows)に限定され、ライブスキャン体験が製品の中心であり、固定年間料金が予算に合っている場合、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#アプリケーションでバーコードを生成して読み取るため for .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 はど for .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()でサポートされています。

