NetBarcode vs IronBarcode:C#バーコードライブラリの比較
Scandit SDKvs IronBarcode: カメラパイプラインスキャニング vs ファイルベースのドキュメント処理
Scanditでバーコードの読み取りを開始するには、BarcodeCaptureSettingsを作成し、シンボロジを明示的に有効化し、カメラを取得し、フレームソースとして設定し、カメラをオン状態に切り替え、キャプチャを有効にします。 価格設定はコンタクト・セールスのみで、公開された価格表はありません。
その組み合わせ — カメラベースのパイプラインとコンタクト・セールスの価格設定モデル — は、Scanditがど for .NETシナリオに適合し、どのように適合しないかを形作ります。 サーバーサイドのドキュメント処理、アップロードされたファイルからバーコードを読み取るASP.NET Core API、または発送PDFを処理するAzure Functionでは、カメラパイプラインの仮定が能力ではなく摩擦を生むことになります。 この比較では、Scanditのアーキテクチャの由来、IronBarcodeと比較してどの部分が適合するか、そしてこれら2つのライブラリが実際にどのように異なるかを検討します。
Scandit SDKについて理解する
Scandit SDKは、モバイルおよびエッジコンピューティング環境向けに構築された、商用Enterpriseバーコードスキャンプラットフォームです。 ライブラリは、iOS、Android、およびMAUIデバイス上でのリアルタイムカメラスキャンをサポートするよう設計され、ARオーバーレイ、複数バーコード同時検出、IDドキュメントスキャンをカバーする専門製品ラインを備えています。 Scanditの主なデプロイメントコンテキストは、物理的なカメラとライブユーザーが共に存在するモバイルフィールドワーカー、倉庫作業、および小売店でのインタラクションシナリ오です。
ライブラリのアーキテクチャは、DataCaptureContextパイプラインを中心に組織されており、カメラセッション、フレーム分析設定、およびバーコードキャプチャ構成を統一されたステートフルなシステムとして調整します。 Scanditプラットフォームの各製品ライン(SparkScan、MatrixScan、IDスキャン、ARオーバーレイ、Parser)はそれぞれ個別にライセンス供与され、販売契約モデルに基づいて価格設定されているため、Scandit統合にかかる総コストは、営業担当者との打ち合わせが完了するまで確定できません。
Scandit SDKの主なアーキテクチャ特性は以下のとおりです。
-カメラ優先設計: SDKは、物理的なカメラと実行中のフレームソースを前提としています。 バーコードの読み取りはすべて、静止ファイルやストリームではなく、ライブビデオフレーム上で行われます。
- 必須のDataCaptureContext初期化:すべての統合は、
DataCaptureContextを構築し、バーコード作業が開始される前にカメラインスタンスに接続することから始まります。 - シンボロジの明示的な宣言:バーコードのフォーマットは、キャプチャセッションが始まる前に
EnableSymbologiesを使用して個別に有効化する必要があります。 自動検出機能は利用できません。 - イベント駆動の結果配信:バーコードの結果は、メソッドコールから同期的に返されるのではなく、イベントコールバック(
BarcodeScanned)を通じて非同期で配信されます。 -モジュール式製品アーキテクチャ: SparkScan、MatrixScan、IDスキャン、ARオーバーレイ、およびパーサーは、それぞれ価格が異なる機能であり、個別の契約項目が必要です。 - 引用ベースの料金設定: Scanditの価格設定ページによれば、有料のエディションはエディション、デバイス、スキャンボリューム、契約期間に基づいて引用されます; 無料トライアルとコミュニティエディションが利用可能です。 -モバイルファーストのプラットフォームターゲティング:主なサポート対象はiOSとAndroidです。 サーバーサイド、Docker、およびサーバーレスのデプロイメントは、SDKの設計範囲外です。
DataCaptureContextパイプライン
Scanditとの連携はすべて、バーコードを読み取る前に、まずこのカメラ初期化シーケンスから始まります。
// Scandit SDK: full camera pipeline setup
// NuGet: Scandit.DataCapture.Core.Maui, Scandit.DataCapture.Barcode.Maui
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.DataCapture.Core.Maui, Scandit.DataCapture.Barcode.Maui
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.Maui
Imports Scandit.DataCapture.Barcode.Maui
' Scandit SDK: full camera pipeline setup
' NuGet: Scandit.DataCapture.Core.Maui, Scandit.DataCapture.Barcode.Maui
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
このブロックの各行がカメラインフラストラクチャを設定します。 APIはこのエントリポイントでファイルパス、PDF、またはストリーム引数を公開せず、バーコード処理開始前に稼働中のカメラを想定しています。
IronBarcodeを理解する
IronBarcodeは、バーコードの読み取りと生成を行うための商用.NETライブラリです。 このライブラリは、バーコードデータがファイル、ストリーム、バイト配列、またはPDFドキュメント内の埋め込みコンテンツとして受信される、サーバー側、デスクトップ、およびクラウド環境向けに設計されています。 そのAPIはステートレスです。セッションオブジェクトも、初期化するカメラパイプラインも、読み取り間で管理する永続的なコンテキストもありません。 BarcodeReader.Readへの単一の静的呼び出しは、ファイルパス、ストリーム、バイト配列、またはPDFを受け取り、結果のコレクションを返します。
IronBarcodeは、50以上の1Dおよび2Dバーコードフォーマットのすべての読み取りおよび生成機能を含む単一のNuGetパッケージとして提供されます。 このライブラリは自動フォーマット検出をサポートしているため、呼び出し元はどのシンボル体系を探すかを指定する必要がありません。 価格は商品ページに掲載されており、販売担当者とのやり取りは不要です。
IronBarcodeの主な特徴は以下のとおりです。
-ステートレスなファイルベースAPI:読み取りは、ファイルパス、ストリーム、バイト配列、またはPDFドキュメントを受け入れる単一のメソッド呼び出しから始まります。 -自動フォーマット検出:サポートされているすべてのバーコードフォーマットが自動的に検出されます。 明示的なシンボル設定は、オプションのパフォーマンス最適化であり、必須条件ではありません。 -ネイティブPDFサポート:複数ページのPDF文書を直接読み込み、ページ番号順に結果をインデックス化します。 外部のPDFレンダリングライブラリは不要です。 -サーバーおよびクラウド対応: ASP.NET Core、Azure Functions、Linux 上の Docker、およびアーキテクチャ上の回避策なしでのコンテナ化されたデプロイメントをサポートします。
- 並行処理:ステートレスAPIは本質的にスレッドセーフであり、高スループットのバッチシナリオのための
Parallel.ForEachと非同期パターンを可能にします。 -バーコード生成:サポートされているすべてのシンボル体系で、画像形式とPDF形式のバーコードを生成します。 生成機能と読み込み機能は同一パッケージに含まれています。 -公開されている永久ライセンス:価格は、スキャンごとまたはデバイスごとの料金なしで、一度限りの永久購入として公開されています。
機能比較
以下の表は、Scandit SDKとIronBarcodeの基本的な違いをまとめたものです。
| フィーチャー | Scandit SDK | IronBarcode |
|---|---|---|
| 主なユースケース | モバイル端末でのリアルタイムカメラスキャン | サーバー上でのファイル、ストリーム、およびPDFバーコードの読み取り |
| カメラが必要です | はい | なし |
| PDFバーコード抽出 | サポートされていません | ネイティブサポート |
| 価格設定モデル | 製品ごとに販売担当者にお問い合わせください | 公開された永続的なティア |
| サーバーサイド処理 | ドキュメントされたターゲットではありません | 主要配備目標 |
| シンボル構成 | スキャン前に必須 | オプション。 auto-detection is default |
| バーコード生成 | サポートされていません | 1つのパッケージに含まれています |
詳細な機能比較
| フィーチャー | Scandit SDK | IronBarcode |
|---|---|---|
| 読む | ||
| 画像ファイルの読み込み | ドキュメントされたターゲットではありません | 主な焦点 |
| PDFバーコード抽出 | サポートされていません | ネイティブマルチページ |
| ストリーム/バイト配列入力 | サポートされていません | はい |
| 自動フォーマット検出 | いいえ(必ず明記してください) | はい |
| 1次元フォーマット(Code 128、EAN、UPCなど) | 包括的(Scanditシンボロジードキュメントによる) | 50歳以上 |
| 2Dフォーマット(QRコード、DataMatrix、Aztec、PDF417) | はい | はい |
| 文書ごとに複数のバーコードを検出 | MatrixScan(別製品) | はい(シングルパッケージ) |
| 破損したバーコードの復旧 | ドキュメントされたファイル処理機能ではありません | はい(機械学習搭載) |
| 世代 | ||
| バーコード生成 | サポートされていません | はい |
| 画像ファイルに出力 | サポートされていません | はい |
| PDFに出力 | サポートされていません | はい |
| アーキテクチャ | ||
| 初期化モデル | ステートフルカメラパイプライン | ステートレスメソッド呼び出し |
| 結果の提供 | イベントコールバック(非同期) | 同期戻り値 |
| カメラ依存 | 必須 | 該当なし |
| シンボル表示の事前宣言 | 必須 | オプション |
| プラットフォーム | ||
| iOS / Android (MAUI) | 主要標的 | プログラムによる利用 |
| .NET Core | ドキュメントされたターゲットではありません | フルサポート |
| Azure Functions/ サーバーレス | 実用的ではない | フルサポート |
| Docker / Linuxサーバー | サポートされていません | フルサポート |
| コンソール/バックグラウンドサービス | ドキュメントされたターゲットではありません | フルサポート |
| ライセンスについて | ||
| 価格の透明性 | 営業担当者への連絡が必要です | ウェブサイトに掲載 |
| ライセンスの種類 | 年間(製品ごと) | 永久一回限り |
| スキャンごとまたはデバイスごとの料金 | 可能(価格設定変数として記載されている) | なし |
| 全ての機能にアクセスできる単一パッケージ | いいえ(モジュール製品) | はい |
バーコード読み取りアーキテクチャ
これら2つのライブラリの最も大きな構造上の違いは、入力と出力の関係をどのようにモデル化しているかという点にある。
Scandit SDKのアプローチ
Scanditはリアルタイムでカメラフレームを処理します。BarcodeCaptureは各受信フレーム内のバーコードを監視します。 バーコードの結果は、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は、すべての入力を個別の文書として扱い、決定論的な結果を生成します。 BarcodeReader.Readメソッドは、ファイルパス、ストリーム、またはバイト配列を受け入れ、すべての検出を同期的に実行し、結果のコレクションを返します。 開くべきセッションも、設定すべきフレームソースも、購読すべきイベントもありません。
// IronBarcode: direct file reading
// NuGet: dotnet add package IronBarcode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-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-LICENSE-KEY";
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
Console.WriteLine($"{result.Value} ({result.Format})");
Imports IronBarCode
' IronBarcode: direct file reading
' NuGet: dotnet add package IronBarcode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-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のカメラパイプラインは、単一のユーザーまたはデバイスにサービスを提供するための単一のカメラセッション用に設計されています。FrameSourceStateモデルは、スループットで処理されている書類のキューではなく、持続的かつ連続的なカメラセッションを前提としています。 ライブラリをファイルのバッチ処理に対応させるには、ドキュメントごとにカメラセッションをシミュレートするか、共有パイプラインを通してドキュメント処理をシリアル化する必要があるが、どちらもサポートされている効率的なパターンではない。
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へのファイルパスは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 Scanning、AR Overlays、Parser — が一覧されており、価格問合せは営業との会話を通じて行われます。 通常、見積りプロセスには使用事例の説明、スキャンボリュームの見積り、デバイスの指定、サポート層の議論、契約期間の選択が含まれ、価格が提供されます。 Scanditの各製品ラインは別々に価格付けされ、別々に契約されているため、機能アクセスの拡大には追加の営業サイクルが必要になることがあります。
IronBarcodeのアプローチ
IronBarcodeは、フォーム送信や販売に関する問い合わせを必要とせずに、製品ページにライセンスプランを公開しています。
| ライセンス | 価格 | 開発者 | プロジェクト |
|---|---|---|---|
| Lite | 749ドル | 1 | 1 |
| Plus | 1,499ドル(一括払い) | 3 | 3 |
| プロフェッショナル | 2,999ドル(一括払い) | 10 | 10 |
| 無制限 | $5,999 一度限り | 無制限 | 無制限 |
ライセンスは永続的です。 スキャンごとの料金、デバイスごとの料金、および料金プラン変更のトリガーとなるボリュームのしきい値は一切ありません。 年間更新は任意で、料金は当初の半額となりますが、購入したライセンスは更新しなくても有効です。 IronBarcodeの単一パッケージに含まれるすべての機能(読み取り、生成、PDFサポート、複数バーコード検出)は、どのプランにも含まれています。
APIマッピングリファレンス
以下の表は、移行に伴う翻訳コストを評価するチーム向けに、Scandit SDKの概念とIronBarcodeの対応する概念をマッピングしたものです。
| Scandit SDK | IronBarcode | ノート |
|---|---|---|
DataCaptureContext.ForLicenseKey("key") |
IronBarCode.License.LicenseKey = "key" |
任務は1つ。 コンテキストオブジェクト不要 |
BarcodeCaptureSettings.Create() |
new BarcodeReaderOptions() |
IronBarcodeではオプションです |
settings.EnableSymbologies(Symbology.Code128, ...) |
(not needed) | 自動検出がデフォルトです |
Camera.GetDefaultCamera() |
(not applicable) | ファイル処理にカメラの概念はありません |
dataCaptureContext.SetFrameSourceAsync(camera) |
(not applicable) | IronBarcodeにはフレームソースがありません |
camera.SwitchToDesiredStateAsync(FrameSourceState.On) |
(not applicable) | カメラ状態マシンなし |
barcodeCapture.IsEnabled = true |
BarcodeReader.Read(path) |
1回の呼び出しで読書が開始されます |
BarcodeScanned += イベントハンドラー |
BarcodeReader.Read() 戻り値の反復 |
同期収集; イベントシステムなし |
args.Session.NewlyRecognizedBarcodes |
BarcodeReader.Read() の戻り値 |
直接コレクションにアクセス |
barcode.Data |
result.Value |
同じ意味内容 |
barcode.Symbology |
result.Format |
同等のフォーマット列挙 |
| SparkScan、MatrixScan、IDスキャン(別製品) | 単一のIronBarcodeパッケージ |
別途アドオンはありません |
チームがScandit SDKからIronBarcodeへの移行を検討する場合
サーバー側処理要件
ASP.NET Core API、バックグラウンド処理サービス、およびAzure Functionsを構築するチームは、Scanditのアーキテクチャがサーバー環境で保持されない前提に基づいていることに気付くでしょう。 DataCaptureContextとカメラパイプラインは、カメラハードウェアとライブフレームソースを前提としています。 プロジェクトのバーコード要件が完全にサーバーサイドである場合 — アップロードされたファイルから読み取る、ドキュメントキューを処理する、着信PDFからバーコードデータを抽出する — カメラパイプラインはワークロードに関連しない初期化ステップとプラットフォーム制約を追加します。
バッチ文書処理
バーコードを搭載した書類を大量に処理する組織—出荷指示書、請求書、在庫記録、医療フォーム—は、Scanditのフレームソースモデルが、決定的な始点と終点を持つ個々の書類ではなく、継続的なカメラセッション向けであることに気づく。 書類の量が増え、並列処理が必要になると、カメラパイプラインのステートフルな設計は適応するため追加のエンジニアリングを必要とします。
価格の透明性
開発チームが予算案、ベンダー比較、または新規プロジェクトの費用便益分析に取り組む際、Scanditライセンスコストを決定するために営業との会話が必要です。プロジェクトに明確な予算とタイムラインがある場合、価格見積もりを得るために営業との会話が必要になると評価と計画にステップが追加されます。 複数のライブラリオプションを同時に評価するチームは、公開された価格設定の欠如が構造的な並列比較を難しくする場合があります。
パイプラインの複雑さを軽減する
Scanditがすでにモバイルカメラスキャンに展開されている場合でも、同じアプリケーション内のサーバー側のバーコード要件が異なるツールを必要とすることがあります。 リアルタイムのモバイルスキャンに適したカメラパイプラインは、静的な書類処理に適用されると複雑さを増す。 この段階に達したチームは、既存のScandit展開と共にサーバー側処理のためにIronBarcodeを採用することが多く、書類のワークフローをカバーするためにカメラパイプラインを拡張するよりも、そうすることが多いです。
一般的な移行の考慮事項
カメラパイプラインにはファイル相当のものはありません
コンテキストの作成、設定の構成、シンボロジの有効化、カメラの取得、フレームソースの割り当て、および状態遷移を含むDataCaptureContext初期化ブロック全体は、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で同等の最適化はBarcodeReaderOptions.ExpectBarcodeTypesを通じて利用可能ですが、開始するのに必須ではありません。
IronBarcodeの追加機能
上記の比較で取り上げた分野以外にも、 IronBarcodeは文書およびデータ処理シナリオにおける有用性を高める機能を提供します。
-バーコード生成: QRコード、Code 128、Data Matrix、PDF417など、サポートされているすべてのシンボル体系で、バーコードを画像ファイルとして生成したり、PDFに埋め込んだりできます。
- GS1および構造化データ解析: GS1-128アプリケーション識別子を含む構造化バーコードデータ形式をバーコード結果から直接デコードします。 -画像補正と前処理:歪んだり、コントラストが低かったり、破損したバーコードを自動的に画像補正することで、手動での前処理を必要とせずにスキャンされた文書の読み取り率が向上します。
- 複数のバーコード検出:単一の
ExpectMultipleBarcodesオプションを使用して、同じページの異なるフォーマットを含む文書内のすべてのバーコードを検出します。 - MAUIバーコード読み取り:キャプチャとプロセスモデルを使用するMAUIアプリケーションでは、IronBarcodeは
MediaPickerを使用して写真のキャプチャ後に処理ステップを処理します。 - ストリームとバイト配列入力:ファイルパスに加えて、
byte[]入力を受け付け、アップロードハンドラー、メモリバッファ、ネットワークストリームとの統合を一時ファイル作成なしに可能にします。
.NETの互換性と将来の準備
IronBarcode は .NET Framework 4.6.2 以降、.NET Standard 2.0、および .NET 6、.NET 8、.NET 9、.NET 10 を含む最新の .NET バージョンをサポートしています。ライブラリは現在の .NET リリースとの互換性を保つために定期的に更新されます。 ステートレス API デザインは、最新の .NET 全体で使用されている非同期優先のプログラミングモデルに適合し、Linux とコンテナ化されたデプロイメントのサポートは、クラウドネイティブなワークロードに適しています。 このライブラリは、 .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#アプリケーションでバーコードを生成して読み取るため for .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 はど 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インストーラーやランタイムファイルは必要ありません。
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()でサポートされています。

