Scandit SDKとIronBarcodeの比較:C#バーコードライブラリの比較
Scanditでバーコードの読み取りを開始するには、DataCaptureContext@を設定し、BarcodeCaptureSettings@を作成し、シンボルを明示的に有効にし、カメラを取得し、フレームソースとして設定し、カメラをオン状態に切り替え、キャプチャを有効にします。 価格はまだウェブサイトに掲載されていません。
その組み合わせ――必須のカメラパイプラインと不透明なEnterprise価格設定――こそが、Scanditが.NETプロジェクトにとって不適切なツールとなる状況を明確に示している。 サーバーサイドのドキュメント処理ワークフロー、アップロードされたファイルからバーコードを読み取るASP.NET Core API、または配送用PDFを処理するAzure Functionsを構築する場合、Scanditのアーキテクチャはあらゆる段階で不利に働きます。この比較では、そのアーキテクチャの由来、 IronBarcodeが代わりにどのような役割を果たすのか、そしてどちらを選択するにしてもどれくらいのコストがかかるのかを検証します。
Scandit SDKについて理解する
Scandit SDKは、モバイルおよびエッジコンピューティング環境向けに構築された、商用Enterpriseバーコードスキャンプラットフォームです。 このライブラリは、iOS、Android、およびMAUIデバイスでのリアルタイムカメラスキャンをサポートするように設計されており、拡張現実オーバーレイ、複数バーコードの同時検出、および身分証明書のスキャンをカバーする専用製品ラインを備えています。 Scanditの主な導入環境は、物理的なカメラ、ライブユーザー、そして100ミリ秒未満の応答時間がすべて同時に存在する、モバイルフィールドワーカー、倉庫業務、および小売店の顧客接点シナリオです。
このライブラリのアーキテクチャは、カメラセッション、フレーム解析設定、バーコードキャプチャ設定を統一されたステートフルなシステムとして調整するパイプラインを中心に構成されています。 Scanditプラットフォームの各製品ライン(SparkScan、MatrixScan、IDスキャン、ARオーバーレイ、Parser)はそれぞれ個別にライセンス供与され、販売契約モデルに基づいて価格設定されているため、Scandit統合にかかる総コストは、営業担当者との打ち合わせが完了するまで確定できません。
Scandit SDKの主なアーキテクチャ特性は以下のとおりです。
-カメラ優先設計: SDKは、物理的なカメラと実行中のフレームソースを前提としています。 バーコードの読み取りはすべて、静止ファイルやストリームではなく、ライブビデオフレーム上で行われます。
- 必須DataCaptureContext初期化:すべての統合は、バーコード作業が発生する前に、
DataCaptureContextを構築し、カメラインスタンスに配線することから始まります。 - 明示的なシンボロジー宣言: BarCodeフォーマットは、キャプチャセッションを開始する前に、@--CODE-39310--@@を使用して個別に有効にする必要があります。 自動検出機能は利用できません。
- イベント駆動の結果配信: BarCodeの結果は、メソッド呼び出しから同期的に返されるのではなく、イベントコールバック(@--CODE-39311--@@)を通じて非同期に配信されます。 -モジュール式製品アーキテクチャ: SparkScan、MatrixScan、IDスキャン、ARオーバーレイ、およびパーサーは、それぞれ価格が異なる機能であり、個別の契約項目が必要です。 -販売価格:価格は公開されていません。 ライセンス費用が判明する前に、すべてのシステム統合には営業担当者への問い合わせが必要です。 -モバイルファーストのプラットフォームターゲティング:主なサポート対象はiOSとAndroidです。 サーバーサイド、Docker、およびサーバーレスのデプロイメントは、SDKの設計範囲外です。
DataCaptureContextパイプライン
Scanditとの連携はすべて、バーコードを読み取る前に、まずこのカメラ初期化シーケンスから始まります。
// Scandit SDK: full camera pipeline setup
// NuGet: Scandit.BarcodePicker
var dataCaptureContext = DataCaptureContext.ForLicenseKey("YOUR-SCANDIT-LICENSE");
var settings = BarcodeCaptureSettings.Create();
settings.EnableSymbologies(new HashSet<Symbology>
{
Symbology.Ean13Upca,
Symbology.Ean8,
Symbology.Code128,
Symbology.QrCode
});
var barcodeCapture = BarcodeCapture.Create(dataCaptureContext, settings);
var camera = Camera.GetDefaultCamera();
await dataCaptureContext.SetFrameSourceAsync(camera);
await camera.SwitchToDesiredStateAsync(FrameSourceState.On);
barcodeCapture.IsEnabled = true;
// Scandit SDK: full camera pipeline setup
// NuGet: Scandit.BarcodePicker
var dataCaptureContext = DataCaptureContext.ForLicenseKey("YOUR-SCANDIT-LICENSE");
var settings = BarcodeCaptureSettings.Create();
settings.EnableSymbologies(new HashSet<Symbology>
{
Symbology.Ean13Upca,
Symbology.Ean8,
Symbology.Code128,
Symbology.QrCode
});
var barcodeCapture = BarcodeCapture.Create(dataCaptureContext, settings);
var camera = Camera.GetDefaultCamera();
await dataCaptureContext.SetFrameSourceAsync(camera);
await camera.SwitchToDesiredStateAsync(FrameSourceState.On);
barcodeCapture.IsEnabled = true;
Imports Scandit.DataCapture.Core
Imports Scandit.DataCapture.Barcode
Imports Scandit.DataCapture.Barcode.Capture
Imports Scandit.DataCapture.Core.Source
Imports System.Collections.Generic
' Scandit SDK: full camera pipeline setup
' NuGet: Scandit.BarcodePicker
Dim dataCaptureContext = DataCaptureContext.ForLicenseKey("YOUR-SCANDIT-LICENSE")
Dim settings = BarcodeCaptureSettings.Create()
settings.EnableSymbologies(New HashSet(Of Symbology) From {
Symbology.Ean13Upca,
Symbology.Ean8,
Symbology.Code128,
Symbology.QrCode
})
Dim barcodeCapture = BarcodeCapture.Create(dataCaptureContext, settings)
Dim camera = Camera.GetDefaultCamera()
Await dataCaptureContext.SetFrameSourceAsync(camera)
Await camera.SwitchToDesiredStateAsync(FrameSourceState.On)
barcodeCapture.IsEnabled = True
このブロック内のすべての線は、カメラ関連のインフラ設備です。 ファイルパス引数はありません。 PDFファイルはありません。 川はありません。 図書館では、バーコード関連の作業を開始する前に、カメラが稼働していることを前提としています。
IronBarcodeを理解する
IronBarcodeは、バーコードの読み取りと生成を行うための商用.NETライブラリです。 このライブラリは、バーコードデータがファイル、ストリーム、バイト配列、またはPDFドキュメント内の埋め込みコンテンツとして受信される、サーバー側、デスクトップ、およびクラウド環境向けに設計されています。 そのAPIはステートレスです。セッションオブジェクトも、初期化するカメラパイプラインも、読み取り間で管理する永続的なコンテキストもありません。 CODE-39312--@@への単一の静的呼び出しは、ファイルパス、ストリーム、バイト配列、またはPDFを受け入れ、結果のコレクションを返します。
IronBarcodeは、30種類以上の1次元および2次元バーコード形式に対応したすべての読み取りおよび生成機能を備えた単一のNuGetパッケージとして提供されます。 このライブラリは自動フォーマット検出をサポートしているため、呼び出し元はどのシンボル体系を探すかを指定する必要がありません。 価格は商品ページに掲載されており、販売担当者とのやり取りは不要です。
IronBarcodeの主な特徴は以下のとおりです。
-ステートレスなファイルベースAPI:読み取りは、ファイルパス、ストリーム、バイト配列、またはPDFドキュメントを受け入れる単一のメソッド呼び出しから始まります。 -自動フォーマット検出:サポートされているすべてのバーコードフォーマットが自動的に検出されます。 明示的なシンボル設定は、オプションのパフォーマンス最適化であり、必須条件ではありません。 -ネイティブPDFサポート:複数ページのPDF文書を直接読み込み、ページ番号順に結果をインデックス化します。 外部のPDFレンダリングライブラリは不要です。 -サーバーおよびクラウド対応: ASP.NET Core、Azure Functions、Linux 上の Docker、およびアーキテクチャ上の回避策なしでのコンテナ化されたデプロイメントをサポートします。
- 同時処理 ステートレスAPIは本質的にスレッドセーフであり、高スループットのバッチシナリオのための非同期パターンを可能にします。 -バーコード生成:サポートされているすべてのシンボル体系で、画像形式とPDF形式のバーコードを生成します。 生成機能と読み込み機能は同一パッケージに含まれています。 -公開されている永久ライセンス:価格は、スキャンごとまたはデバイスごとの料金なしで、一度限りの永久購入として公開されています。
機能比較
以下の表は、Scandit SDKとIronBarcodeの基本的な違いをまとめたものです。
| フィーチャー | Scandit SDK | IronBarcode |
|---|---|---|
| 主なユースケース | モバイル端末でのリアルタイムカメラスキャン | サーバー上でのファイル、ストリーム、およびPDFバーコードの読み取り |
| カメラが必要です | はい | なし |
| PDFバーコード抽出 | サポートされていません | ネイティブサポート |
| 価格設定モデル | 製品ごとに販売担当者にお問い合わせください | 公開された永続的なティア |
| サーバーサイド処理 | 設計されていません | 主要配備目標 |
| シンボル構成 | スキャン前に必須 | オプション。 自動検出はデフォルトです |
| バーコード生成 | サポートされていません | 1つのパッケージに含まれています |
詳細な機能比較
| フィーチャー | Scandit SDK | IronBarcode |
|---|---|---|
| 読む | ||
| 画像ファイルの読み込み | 設計されていません | 主な焦点 |
| PDFバーコード抽出 | サポートされていません | ネイティブマルチページ |
| ストリーム/バイト配列入力 | サポートされていません | はい |
| 自動フォーマット検出 | いいえ(必ず明記してください) | はい |
| 1次元フォーマット(Code 128、EAN、UPCなど) | 30+ | 30+ |
| 2Dフォーマット(QRコード、DataMatrix、Aztec、PDF417) | はい | はい |
| 文書ごとに複数のバーコードを検出 | MatrixScan(別製品) | はい(シングルパッケージ) |
| 破損したバーコードの復旧 | 制限的 | はい(機械学習搭載) |
| 世代 | ||
| バーコード生成 | サポートされていません | はい |
| 画像ファイルに出力 | サポートされていません | はい |
| PDFに出力 | サポートされていません | はい |
| アーキテクチャ | ||
| 初期化モデル | ステートフルカメラパイプライン | ステートレスメソッド呼び出し |
| 結果の提供 | イベントコールバック(非同期) | 同期戻り値 |
| カメラ依存 | 必須 | 該当なし |
| シンボル表示の事前宣言 | 必須 | オプション |
| プラットフォーム | ||
| iOS / Android (MAUI) | 主要標的 | プログラムによる利用 |
| .NET Core | 設計されていません | フルサポート |
| Azure Functions/ サーバーレス | 実用的ではない | フルサポート |
| Docker / Linuxサーバー | サポートされていません | フルサポート |
| コンソール/バックグラウンドサービス | 設計されていません | フルサポート |
| ライセンスについて | ||
| 価格の透明性 | 営業担当者への連絡が必要です | ウェブサイトに掲載 |
| ライセンスの種類 | 年間(製品ごと) | 永久一回限り |
| スキャンごとまたはデバイスごとの料金 | はい | なし |
| 全ての機能にアクセスできる単一パッケージ | いいえ(モジュール製品) | はい |
バーコード読み取りアーキテクチャ
これら2つのライブラリの最も大きな構造上の違いは、入力と出力の関係をどのようにモデル化しているかという点にある。
Scandit SDKのアプローチ
Scanditはカメラフレームをリアルタイムで処理します。CODE-39314--@@はアクティブなカメラセッションを保持し、@--CODE-39315--@は各入力フレーム内のBarCodeをリッスンします。 BarCodeの結果は、BarcodeScannedイベントを通して非同期に配信されます。 Scanditで静止画像ファイルを読み込むには、カメラパイプラインを調整してファイルをフレームソースとして扱う必要があります。これはネイティブにサポートされていないワークフローであり、近似的に実現するにはエンジニアリングの労力が必要です。
// Scandit SDK: event-callback result delivery
barcodeCapture.BarcodeScanned += (sender, args) =>
{
foreach (var barcode in args.Session.NewlyRecognizedBarcodes)
{
string value = barcode.Data;
string symbology = barcode.Symbology.ToString();
ProcessBarcode(value, symbology);
}
};
// Scandit SDK: event-callback result delivery
barcodeCapture.BarcodeScanned += (sender, args) =>
{
foreach (var barcode in args.Session.NewlyRecognizedBarcodes)
{
string value = barcode.Data;
string symbology = barcode.Symbology.ToString();
ProcessBarcode(value, symbology);
}
};
Imports System
' Scandit SDK: event-callback result delivery
AddHandler barcodeCapture.BarcodeScanned, Sub(sender, args)
For Each barcode In args.Session.NewlyRecognizedBarcodes
Dim value As String = barcode.Data
Dim symbology As String = barcode.Symbology.ToString()
ProcessBarcode(value, symbology)
Next
End Sub
イベント駆動型モデルは、バーコードがビデオストリーム内で予測不能なタイミングで到着するような、継続的なライブスキャンに適しています。 ファイルベースの処理の場合、このモデルは不必要な複雑さをもたらします。入力には完了境界が既知であり、カメラセッションは自然に終了することがなく、非同期コールバックパターンはリクエスト/レスポンスサーバーアーキテクチャとうまく連携しません。
IronBarcodeのアプローチ
IronBarcodeは、すべての入力を個別の文書として扱い、決定論的な結果を生成します。 CODE-39317--@@ メソッドは、ファイルパス、ストリーム、またはバイト配列を受け入れ、すべての検出を同期的に実行し、結果のコレクションを返します。 開くべきセッションも、設定すべきフレームソースも、購読すべきイベントもありません。
// IronBarcode: direct file reading
// NuGet: dotnet add package IronBarcode
IronBarCode.License.LicenseKey = "YOUR-KEY";
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
Console.WriteLine($"{result.Value} ({result.Format})");
// IronBarcode: direct file reading
// NuGet: dotnet add package IronBarcode
IronBarCode.License.LicenseKey = "YOUR-KEY";
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
Console.WriteLine($"{result.Value} ({result.Format})");
' IronBarcode: direct file reading
' NuGet: dotnet add package IronBarcode
IronBarCode.License.LicenseKey = "YOUR-KEY"
Dim results = BarcodeReader.Read("barcode.png")
For Each result In results
Console.WriteLine($"{result.Value} ({result.Format})")
Next
画像からバーコードを読み取る場合、ステートレスAPIはライセンスキー以外の初期化を必要としません。 フォーマットの検出は自動で行われます。 上記のプログラムは、わずか3行の操作コードで、画像ファイルからサポートされているあらゆるバーコード形式を読み取ることができます。
プラットフォームおよび導入サポート
バーコードライブラリの展開コンテキストは、機能の有効性とは無関係に、ターゲット環境で実行できるかどうかを決定します。
Scandit SDKのアプローチ
Scanditのアーキテクチャは、カメラハードウェアと、ネイティブカメラAPIを通じてそれを公開できるモバイルプラットフォームを必要とする。 iOSとAndroidが主なサポート対象です。 Windowsデスクトップは二次的な標的である。 ASP.NET Core、Azure Functions、Dockerコンテナ、およびLinuxサーバーは、このライブラリの設計範囲外です。 このDataCaptureContext@は、実行中のカメラ・セッションを想定しており、サーバーレス・コンピューティング環境、コンテナ化されたデプロイメント、バックグラウンド処理サービスでは、これに相当するものはありません。
| プラットフォーム | Scandit SDK |
|---|---|
| iOS / Android (MAUI) | 主要標的 |
| Windowsデスクトップ | 二次的な支援 |
| .NET Core | 設計されていません |
| Azure Functions | 実用的ではない |
| Docker / Linuxサーバー | サポートされていません |
| コンソール/バックグラウンドサービス | 設計されていません |
IronBarcodeのアプローチ
IronBarcodeは、サーバー、クラウド、コンテナ環境向けに構築されています。 ステートレスAPIは、ハードウェアへの依存性やプラットフォーム固有の初期化要件がありません。 バーコード処理のためにAzure Functionsにデプロイすることは、サポートされており、ドキュメントにも記載されています。 Linux上のDockerは、標準的なデプロイメントターゲットです。 アップロードされたファイルからバーコードを読み取るASP.NET Coreエンドポイントは、アーキテクチャ上の回避策を必要としない、コア機能としてサポートされているシナリオです。
| プラットフォーム | IronBarcode |
|---|---|
| iOS / Android (MAUI) | プログラムによるファイル処理 |
| .NET Core | フルサポート |
| Azure Functions / Lambda | フルサポート |
| Docker / Linuxサーバー | フルサポート |
| コンソール/バックグラウンドサービス | フルサポート |
| Blazorサーバー | フルサポート |
同時バッチ処理
大量のバーコード付き文書を処理することは、サーバー側でよく求められる要件だが、この2つのライブラリは根本的に異なるアプローチでこれに取り組んでいる。
Scandit SDKのアプローチ
Scanditのカメラパイプラインは、単一のユーザーまたはデバイスに対応する単一のカメラセッション用に設計されています。このモデルは、スループットで処理されるドキュメントのキューではなく、永続的で継続的なカメラセッションを想定しています。 ライブラリをファイルのバッチ処理に対応させるには、ドキュメントごとにカメラセッションをシミュレートするか、共有パイプラインを通してドキュメント処理をシリアル化する必要があるが、どちらもサポートされている効率的なパターンではない。
IronBarcodeのアプローチ
IronBarcodeのBarcodeReader.Read@メソッドはステートレスなので、複数のスレッドから同時に呼び出しても本質的に安全です。 同時バッチ処理では、BarcodeReaderOptionsを定義する以外に特別な設定は必要ありません:
// IronBarcode: concurrent batch processing
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Balanced,
ExpectMultipleBarcodes = true,
MaxParallelThreads = 4
};
var files = Directory.GetFiles("./incoming/", "*.pdf");
var allResults = new ConcurrentBag<BarcodeResult>();
Parallel.ForEach(files, file =>
{
var results = BarcodeReader.Read(file, options);
foreach (var r in results)
allResults.Add(r);
});
// IronBarcode: concurrent batch processing
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Balanced,
ExpectMultipleBarcodes = true,
MaxParallelThreads = 4
};
var files = Directory.GetFiles("./incoming/", "*.pdf");
var allResults = new ConcurrentBag<BarcodeResult>();
Parallel.ForEach(files, file =>
{
var results = BarcodeReader.Read(file, options);
foreach (var r in results)
allResults.Add(r);
});
Imports System.IO
Imports System.Collections.Concurrent
Imports System.Threading.Tasks
' IronBarcode: concurrent batch processing
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.Balanced,
.ExpectMultipleBarcodes = True,
.MaxParallelThreads = 4
}
Dim files = Directory.GetFiles("./incoming/", "*.pdf")
Dim allResults As New ConcurrentBag(Of BarcodeResult)()
Parallel.ForEach(files, Sub(file)
Dim results = BarcodeReader.Read(file, options)
For Each r In results
allResults.Add(r)
Next
End Sub)
非同期およびマルチスレッドによるバーコード読み取りに関する詳細なパターンについては、 IronBarcodeのドキュメントにスレッドセーフなパターンとスループット調整オプションが記載されています。
PDF文書処理
PDFバーコード抽出は、画像ベースの読み取りとは異なる機能であり、両ライブラリ間の大きな相違点を示している。
Scandit SDKのアプローチ
Scandit にはネイティブ PDF サポートがありません。 Scanditを使用してPDFからバーコードを抽出するには、各PDFページを別のPDFレンダリングライブラリを使用してラスター画像にレンダリングし、それらの画像をカメラシミュレーションパイプラインに通す必要があります。このアプローチでは、ドキュメント処理ワークフローにおいて日常的に行われるタスクに、追加の依存関係、追加のライセンス費用、および多大なエンジニアリング作業が発生します。 複数ページの文書では、ページを繰り返し処理し、レンダリングされた画像のメモリを管理し、ページ間で結果を手動で調整する必要があります。
IronBarcodeのアプローチ
IronBarcodeは、PDF文書からバーコードをネイティブに読み取ります。 PDFへのファイルパスは、BarcodeReader.Readへの有効な引数であり、結果には、各バーコードが文書のどのページで見つかったかを示すPageNumberプロパティが含まれます:
// IronBarcode: extract barcodes from every page of a PDF
var results = BarcodeReader.Read("shipping-manifest.pdf");
foreach (var barcode in results)
{
Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Value} ({barcode.Format})");
}
// IronBarcode: extract barcodes from every page of a PDF
var results = BarcodeReader.Read("shipping-manifest.pdf");
foreach (var barcode in results)
{
Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Value} ({barcode.Format})");
}
Imports IronBarcode
' IronBarcode: extract barcodes from every page of a PDF
Dim results = BarcodeReader.Read("shipping-manifest.pdf")
For Each barcode In results
Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Value} ({barcode.Format})")
Next
PDFファイルからバーコードを読み取るための詳細な手順(ページ範囲の選択や複数バーコードの抽出オプションを含む)については、 IronBarcodeのドキュメントにPDF処理のあらゆるシナリオが網羅されています。
価格とライセンス
ライセンス体系は、ライブラリのコストだけでなく、評価と導入に必要な期間にも影響を与える。
スカンディット・アプローチ
Scanditは価格を公開していません。 製品ページには、SparkScan、MatrixScan、IDスキャン、ARオーバーレイ、パーサーといった製品名と機能が記載されており、すべてのお問い合わせは営業担当者とのやり取りを通じて処理されます。 見積もりプロセスでは、費用が提示される前に、使用事例の説明、スキャン量の見積もり、デバイスの指定、サポートレベルの検討、契約期間の交渉などを行います。 G2やDiscoverSDKといったプラットフォーム上のレビューでは、中小企業にとってコストが予測しにくいことや、予算予測の難しさが一貫して指摘されている。 Scanditの各製品ラインは価格設定も契約内容もそれぞれ異なるため、機能拡張には追加の販売サイクルが必要となります。
IronBarcodeのアプローチ
IronBarcodeは、フォーム送信や販売に関する問い合わせを必要とせずに、製品ページにライセンスプランを公開しています。
| ライセンス | 価格 | 開発者 | プロジェクト |
|---|---|---|---|
| Lite | 749ドル | 1 | 1 |
| プロフェッショナル | 1,499ドル(一括払い) | 10 | 10 |
| 無制限 | 2,999ドル(一括払い) | 無制限 | 無制限 |
ライセンスは永続的です。 スキャンごとの料金、デバイスごとの料金、および料金プラン変更のトリガーとなるボリュームのしきい値は一切ありません。 年間更新は任意で、料金は当初の半額となりますが、購入したライセンスは更新しなくても有効です。 IronBarcodeの単一パッケージに含まれるすべての機能(読み取り、生成、PDFサポート、複数バーコード検出)は、どのプランにも含まれています。
APIマッピングリファレンス
以下の表は、移行に伴う翻訳コストを評価するチーム向けに、Scandit SDKの概念とIronBarcodeの対応する概念をマッピングしたものです。
| Scandit SDK | IronBarcode | ノート |
|---|---|---|
| コード-39324 | コード-39325 | 任務は1つ。 コンテキストオブジェクト不要 |
| コード-39326 | コード-39327 | IronBarcodeではオプションです |
| コード-39328 | (not needed) | 自動検出がデフォルトです |
| コード-39329 | (not applicable) | ファイル処理にカメラの概念はありません |
| コード-39330 | (not applicable) | IronBarcodeにはフレームソースがありません |
| コード-39331 | (not applicable) | カメラ状態マシンなし |
| コード-39332 | コード-39333 | 1回の呼び出しで読書が開始されます |
| イベントハンドラ | CODE-39335--@@の戻り値に対する反復処理 | 同期収集; イベントシステムなし |
| コード-39336 | の戻り値--CODE-39337--@@@。 | 直接コレクションにアクセス |
| コード-39338 | コード-39339 | 同じ意味内容 |
| コード-39340 | コード-39341 | 同等のフォーマット列挙 |
| SparkScan、MatrixScan、IDスキャン(別製品) | 単一の@--CODE-39342--@@パッケージ | 別途アドオンはありません |
チームがScandit SDKからIronBarcodeへの移行を検討する場合
サーバー側処理要件
ASP.NET Core API、バックグラウンド処理サービス、またはAzure Functionsを構築するチームは、統合の最初の段階から、Scanditのアーキテクチャが根本的な不一致であることに気づきます。 CODE-39343--@@とカメラ・パイプラインは、サーバー環境には存在しないハードウェアを想定しています。 プロジェクトのバーコード要件がすべてサーバー側で処理される場合(アップロードされたファイルからの読み取り、ドキュメントキューの処理、受信したPDFからのバーコードデータの抽出など)、カメラパイプラインは初期化の複雑さ、非同期ステートマシンのオーバーヘッド、およびプラットフォームの制約を追加しますが、これらは実際のビジネス要件には何ら貢献しません。
バッチ文書処理
出荷明細書、請求書、在庫記録、医療フォームなど、バーコード付きの文書を大量に処理する組織は、Scanditのフレームソースモデルが文書キューと連携しないことに気づいています。 このライブラリは、開始点と終了点が明確な個別の文書ではなく、連続したカメラセッション用に設計されています。 文書量が増加し、並列処理が必要になると、カメラパイプラインの状態保持機能は、利点ではなく、技術的な障害となる。
価格の透明性
新規プロジェクトの予算案作成、ベンダー比較、費用対効果分析に取り組む開発チームは、まず販売サイクルに入らなければScanditとの作業を完了できません。プロジェクトに明確な予算とスケジュールがある場合、販売担当者との話し合いなしにライセンス費用を決定できないことは、遅延や不確実性を生み出し、プロジェクト計画に後々の影響を及ぼします。 複数の図書館オプションを同時に評価しているチームは、価格が公開されていないため、Scanditを体系的な比較に含めるのが難しいことに気づいている。
パイプラインの複雑さを軽減する
Scanditをモバイルカメラのスキャンに既に導入している場合でも、同じアプリケーション内でサーバー側のバーコード要件を満たすには別のツールが必要になることに気づくチームもある。 リアルタイムのモバイルスキャンに適したカメラパイプラインを静的文書処理に適用すると、不必要な複雑さが生じる。 この段階に達したチームは、カメラパイプラインを本来想定されていないユースケースに拡張しようとするのではなく、既存のScanditデプロイメントと並行して、サーバーサイド処理にIronBarcodeを採用することが多い。
一般的な移行の考慮事項
カメラパイプラインにはファイル相当のものはありません
初期化ブロック全体(コンテキスト作成、設定構成、シンボル有効化、カメラ取得、フレームソース割り当て、状態遷移)はIronBarcodeのファイルベースAPIにはありません。 サーバーサイドの統合コードを移行する際、このブロックは完全に削除されます。 翻訳されていません。 削除されました。 IronBarcodeの置き換えは、ライセンスキーの割り当ての後にBarcodeReader.Read呼び出しが続きます。
イベントコールバックから直接リターン
Scanditは、BarcodeScannedイベントを通してバーコードの結果を配信します。 IronBarcodeは、ファイルベースの読み取りには完了境界が既知であるため、結果を型付きコレクションとして同期的に返します。 移行には、イベントハンドラーロジックを標準的な反復処理に変換することが含まれます。
// Scandit callback pattern (removed during migration)
barcodeCapture.BarcodeScanned += (sender, args) =>
{
foreach (var barcode in args.Session.NewlyRecognizedBarcodes)
ProcessBarcode(barcode.Data, barcode.Symbology.ToString());
};
// IronBarcode direct return (replacement)
foreach (var result in BarcodeReader.Read("document.png"))
ProcessBarcode(result.Value, result.Format.ToString());
// Scandit callback pattern (removed during migration)
barcodeCapture.BarcodeScanned += (sender, args) =>
{
foreach (var barcode in args.Session.NewlyRecognizedBarcodes)
ProcessBarcode(barcode.Data, barcode.Symbology.ToString());
};
// IronBarcode direct return (replacement)
foreach (var result in BarcodeReader.Read("document.png"))
ProcessBarcode(result.Value, result.Format.ToString());
Imports System
' Scandit callback pattern (removed during migration)
AddHandler barcodeCapture.BarcodeScanned, Sub(sender, args)
For Each barcode In args.Session.NewlyRecognizedBarcodes
ProcessBarcode(barcode.Data, barcode.Symbology.ToString())
Next
End Sub
' IronBarcode direct return (replacement)
For Each result In BarcodeReader.Read("document.png")
ProcessBarcode(result.Value, result.Format.ToString())
Next
シンボル宣言の削除
Scanditでは、スキャンを開始する前に、明示的なEnableSymbologies呼び出しが必要です。 IronBarcodeシンボルの事前宣言は不要です。すべてのフォーマットが自動的に検出されます。 移行中、すべてのsettings.EnableSymbologies(...)呼び出しは削除されます。 元のScanditコードがパフォーマンス上の理由でシンボルを制限している場合、IronBarcodeで同等の最適化が可能です。
IronBarcodeの追加機能
上記の比較で取り上げた分野以外にも、 IronBarcodeは文書およびデータ処理シナリオにおける有用性を高める機能を提供します。
-バーコード生成: QRコード、Code 128、Data Matrix、PDF417など、サポートされているすべてのシンボル体系で、バーコードを画像ファイルとして生成したり、PDFに埋め込んだりできます。
- GS1および構造化データ解析: GS1-128アプリケーション識別子を含む構造化バーコードデータ形式をバーコード結果から直接デコードします。 -画像補正と前処理:歪んだり、コントラストが低かったり、破損したバーコードを自動的に画像補正することで、手動での前処理を必要とせずにスキャンされた文書の読み取り率が向上します。
- マルチバーコード検出:単一の@--CODE-39350--@@呼び出しは、
ExpectMultipleBarcodesオプションを使用して、同じページ上の混合フォーマットを含む、ドキュメントに存在するすべてのバーコードを検出します。 - MAUIバーコード読み取り:キャプチャ&プロセスモデルを使用するMAUIアプリケーションでは、IronBarcodeは
MediaPickerを使用して写真をキャプチャした後の処理ステップを処理します。 - ストリームおよびバイト配列入力:ファイル・パスに加えて、@--CODE-39353--@@は、@--CODE-39354--@@および@--CODE-39355--@@入力を受け入れ、一時ファイルを作成することなく、アップロード・ハンドラー、メモリ・バッファ、およびネットワーク・ストリームとの統合を可能にします。
.NETの互換性と将来の準備
IronBarcodeは、 .NET Framework 4.6.2以降、 .NET Standard 2.0、および.NET 6、 .NET 7、 .NET 8、 .NET 9を含むすべての最新の.NETバージョンをサポートしています。ライブラリは定期的に更新され、2026年後半にリリース予定の.NET 10を含む、現在および今後の.NETリリースとの互換性を維持しています。ステートレスなAPI設計は、最新の.NETで導入された非同期優先のプログラミングモデルと互換性があり、Linuxおよびコンテナ化されたデプロイメントをサポートしているため、 .NETの採用が拡大し続けているクラウドネイティブワークロードにも対応できます。 このライブラリは、 .NETランタイム自体以外のプラットフォーム固有のランタイム依存関係を持たない単一のNuGetパッケージとして提供されるため、 .NETバージョンのアップグレードには、ライブラリの個別更新や追加の設定は不要です。
結論
Scandit SDKとIronBarcodeは、バーコード処理に対する根本的に異なるアプローチであり、想定される導入環境の違いを反映している。 Scanditは、モバイルハードウェア上でのリアルタイムカメラスキャン向けに構築されており、ライブカメラセッション、フレームごとの分析設定、およびイベント駆動型の結果配信を調整するアーキテクチャを備えています。 IronBarcodeは、サーバー、デスクトップ、クラウドインフラストラクチャ上でのファイルベースおよびドキュメント中心の処理向けに構築されており、ファイル、ストリーム、PDFを受け入れ、同期的に結果を返すステートレスAPIを備えています。 これらは同じアイデアを競合的に実装したものではなく、異なるユースケースに対応する異なるアイデアである。
Scandit SDKは、ユーザーがデバイスのカメラを物理的なバーコードに向け、100ミリ秒未満の視覚的なフィードバックを必要とするモバイルアプリケーションに最適な選択肢です。 そのARオーバーレイ機能、MatrixScanによる複数バーコードの同時検出、およびID Scanningによる身分証明書のスキャン機能は、ファイルベースのバーコードライブラリでは再現できない、専用に設計された機能です。 モバイルフィールドワーカーを大規模に展開している組織、消費者向けスキャンサービスを提供している組織、またはEnterpriseモバイルスキャンのSLAを必要とする組織は、Scanditが対象とする顧客層に注目しています。
IronBarcodeは、バーコードデータが画像、PDF、バイト配列、アップロードストリームなどのファイルとして届き、カメラ、ユーザー、UIなしで処理が行われる場合に最適な選択肢です。 サーバーサイドのドキュメント処理、.NET CoreAPIエンドポイント、Azure Functions、スケジュールされたバッチジョブ、コンテナ化されたマイクロサービスなどは、 IronBarcodeが動作するように構築された環境を表しています。 公開されている価格設定、単一パッケージでの機能アクセス、および直接ファイル読み取りAPIにより、Scanditのカメラパイプラインモデルとコンタクトセールスモデルがこれらのシナリオで引き起こすアーキテクチャ上の摩擦と予算の不確実性が解消されます。
率直に言って、選択は個人の好みよりも、むしろ導入環境によって大きく左右される。 モバイルカメラによるリアルタイムスキャンを必要とするプロジェクトには、明確な解決策があります。 サーバー側でPDFバーコードを抽出する必要のあるプロジェクトについても、同様に明確な答えがあります。 2つのライブラリが混同されがちなのは、その中間層、つまりMAUIアプリケーション、ハイブリッドアーキテクチャ、そしてモバイルスキャンと文書処理の両方の要件を持つ組織などである。 そのような場合、2つのライブラリは共存できます。Scanditはカメラ操作を担当し、 IronBarcodeは文書処理を担当するため、どちらのライブラリも本来の設計目的とは異なる役割を強いられることはありません。
よくある質問
Scandit SDKとは何ですか?
Scandit SDKは、C#アプリケーションでバーコードを生成して読み取るための.NETバーコードライブラリです。これは、開発者が .NET プロジェクト用の BarCode ソリューションを選択する際に評価するいくつかの選択肢の 1 つです。
Scandit SDKとIronBarcodeの主な違いは何ですか?
IronBarcodeはインスタンス管理を必要としない静的なステートレスAPIを使用しますが、Scandit SDKは通常、使用前にインスタンスの作成と設定が必要です。IronBarcodeはまた、ネイティブPDFサポート、自動フォーマット検出、およびすべての環境にわたるシングルキーライセンスを提供します。
IronBarcode はScandit SDKよりもライセンスが簡単ですか?
IronBarcodeは単一のライセンスキーで開発環境と本番環境の両方をカバーします。これは、SDKキーとランタイムキーを分離するライセンスシステムと比較して、CI/CDパイプラインとDocker構成を簡素化します。
IronBarcode はScandit 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 はScandit 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インストーラーやランタイムファイルは必要ありません。
Scanditとは異なり、購入前にIronBarcodeを評価することはできますか?
IronBarcodeのトライアルモードでは、完全なデコードされたバーコード値を返します。購入を決定する前に、ご自身のドキュメントで読み取り精度をベンチマークすることができます。
Scandit SDKとIronBarcodeの価格の違いは何ですか?
IronBarcodeは、開発および量産をカバーする永続的なシングルデベロッパーライセンスで749ドルからご利用いただけます。価格の詳細とボリュームオプションはIronBarcodeのライセンスページでご覧いただけます。別途ランタイムライセンスは必要ありません。
Scandit SDKからIronBarcodeへの移行は簡単ですか?
Scandit SDKからIronBarcodeへの移行は、主にインスタンスベースのAPIコールをIronBarcodeの静的メソッドに置き換え、ライセンスの定型文を削除し、結果のプロパティ名を更新します。ほとんどの移行はコードを追加するのではなく、コードを削減します。
IronBarcodeはロゴ入りQRコードを生成できますか?
はい。QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png")は、設定可能なエラー修正機能付きで、ブランド画像をネイティブにQRコードに埋め込みます。カラーQRコードもChangeBarCodeColor()でサポートされています。

