IRONSOFTWAREHOME
他のコンポーネントと比較する

Barkoder SDKとIronBarcodeの比較:C#バーコードライブラリの比較

Curtis Chau
Curtis Chau
Updated: 2026年4月26日

Dynamsoft Barcode Readerは、その設計目的である、毎秒30フレームのライブカメラ映像からバーコードを読み取るという点において、実に優れた性能を発揮します。 アルゴリズムは高速で、シンボル体系のサポートも幅広く、iOSとAndroid向けにそれをラップするモバイルSDKは、この分野で最も優れた選択肢の一つです。 もしあなたの製品が、作業員がスマートフォンをパレットラベルにかざして100ミリ秒未満の認識速度を求める倉庫スキャンアプリであれば、Dynamsoftは信頼できる選択肢となるでしょう。

バーコードがインターネットに接続できないサーバー上のPDFファイル内にある場合、そのライブラリは使用方法に適していません — 初めてデプロイするときにライセンスアクティベーションが思い出させます。 LicenseManager.InitLicense は初回のアクティベーション時にDynamsoftのライセンスサーバーとオンラインハンドシェイクを行い、定期的に再検証を行います。 エアギャップされたデータセンター、隔離されたVPC、または外向きのインターネットアクセスが制限されている環境では、最初のアクティベーションに代替手段が必要です。オフラインパス、すなわちDynamsoftからライセンスコンテンツのブロブを取得し、InitLicenseFromLicenseContent を介して再現する方法は機能しますが、大多数のドキュメント処理ワークフローが予定していなかった運用上の負担が追加されます。

この比較は、ライブラリの品質ではなく、ユースケースへの適合性に関するものです。 Dynamsoftはカメラファーストのライブラリを開発し、それを非常にうまく作り上げた。 問題は、カメラ優先の前提がサーバー側の文書処理ワークフローにも適用できるかどうかである。

Dynamsoftバーコードリーダーについて

Dynamsoftのアーキテクチャは、そのカメラ事業の起源を反映している。 起動シーケンスはオンラインライセンスアクティベーションが必要で、設定モデルにはリアルタイムフレーム処理に適したタイムアウト値が含まれており、APIは手持ちのカメラの可変焦点と動きぼけ条件に合わせた設定を公開しています:

// Dynamsoft: license activation required at startup
using Dynamsoft.CVR;
using Dynamsoft.DBR;
using Dynamsoft.License;
using Dynamsoft.Core;

// LicenseManager.InitLicense performs an online activation on first run
int errorCode = LicenseManager.InitLicense("YOUR-DYNAMSOFT-LICENSE-KEY", out string errorMsg);
if (errorCode != (int)EnumErrorCode.EC_OK)
    throw new InvalidOperationException($"License activation failed: {errorMsg}");

using var router = new CaptureVisionRouter();

// Settings tuned for camera frame processing
SimplifiedCaptureVisionSettings settings = router.GetSimplifiedSettings(
    PresetTemplate.PT_READ_BARCODES);
settings.BarcodeSettings.ExpectedBarcodesCount = 1; // single barcode per frame
settings.Timeout = 100;                              // 100ms suits a 30fps pipeline
router.UpdateSettings(PresetTemplate.PT_READ_BARCODES, settings);

これは、その目的に適した、よく設計されたAPIです。 カメラから1秒あたり30フレームを処理し、1フレームに500msを費やす余裕がない場合、Timeout = 100 設定は意味があります。 アップロードされたPDFを処理するサーバーに対して、100msのタイムアウトは何も役に立ちませんし、高密度のバーコードで読み取りを失敗させる可能性があります。

ルーターとセッションのデザイン — new CaptureVisionRouter(), router.Dispose() — はカメラセッションのセマンティクスに従い、ルーターを開き、フレームを処理し、廃棄します。 ファイル処理に関しては、このライフサイクルはメリットのない定型コードを追加するだけです。

PDFの問題

Dynamsoft Barcode Reader はWindowsビルドでいくつかのPDF入力を直接受け入れ可能ですが、クロスプラットフォーム展開のために多くのチームはPDFの各ページを画像にプリレンダーし、それをCaptureVisionRouter.Capture に渡す前に行います。 通常、これは別々のPDFレンダリングライブラリを引き込みます — よく使用されるのはPdfiumViewerです — これにより、NuGet依存関係、ネイティブバイナリ依存関係(Windows上ではpdfium.dllまたはLinux上ではlibpdfium)、およびすべてのPDF操作にレンダーループが追加されます。

// Dynamsoft PDF processing — typical cross-platform pattern with PdfiumViewer
// dotnet add package PdfiumViewer
using PdfiumViewer;
using System.Drawing.Imaging;
using Dynamsoft.CVR;
using Dynamsoft.DBR;

public List<string> ReadBarcodesFromPdf(string pdfPath)
{
    var results = new List<string>();

    using (var pdfDoc = PdfDocument.Load(pdfPath))
    using (var router = new CaptureVisionRouter())
    {
        for (int page = 0; page < pdfDoc.PageCount; page++)
        {
            // Render each page at 300 DPI
            using var image = pdfDoc.Render(page, 300, 300, true);
            using var ms = new MemoryStream();
            image.Save(ms, ImageFormat.Png);
            byte[] imageBytes = ms.ToArray();

            // Now pass rendered image bytes to the Capture Vision Router
            CapturedResult result = router.Capture(imageBytes,
                PresetTemplate.PT_READ_BARCODES);
            foreach (var item in result.GetDecodedBarcodesResult().GetItems())
                results.Add(item.GetText());
        }
    }

    return results;
}

それは、(Dynamsoft、PdfiumViewer、プラットフォーム特有のネイティブバイナリという)3つの依存関係、ページごとに行われるレンダーループ、ページ数に比例するメモリオーバーヘッドです。

IronBarcodeはPDFファイルから直接読み取ります。

// IronBarcode: PDF is native — no extra library, no render loop
// NuGet: dotnet add package BarCode
var results = BarcodeReader.Read("invoice.pdf");
foreach (var result in results)
{
    Console.WriteLine($"{result.Format}: {result.Value}");
}

電話一本。 PDFレンダリング機能はありません。 ページごとのループ処理はありません。PDFサポートのためのプラットフォーム固有のネイティブバイナリもありません。

ライセンスの複雑さ

サーバーがインターネットアクセスを持っている場合、オンラインライセンスアクティベーションは簡単です。 そうでない場合、またはネットワークポリシーで送信ホストの明示的な許可リスト登録が要求される場合、検証失敗の対象となる領域が拡大します。

// Dynamsoft: error code pattern required
int errorCode = LicenseManager.InitLicense("YOUR-DYNAMSOFT-LICENSE-KEY", out string errorMsg);
if (errorCode != (int)EnumErrorCode.EC_OK)
{
    // Possible causes: network timeout, license server unreachable,
    // invalid key, expired key, activation quota exceeded, etc.
    throw new InvalidOperationException($"Dynamsoft license failed [{errorCode}]: {errorMsg}");
}

Dynamsoftを使用したオフラインライセンスは別のワークフローです。 接続されたマシンで初回のオンラインアクティベーションを行い、ライセンスバンドルを取得して保持し、そのバンドルをInitLicenseFromLicenseContent を介して再現することでオフラインマシンをアクティブ化します。

// Dynamsoft offline license — replay a pre-fetched license bundle
int errorCode = LicenseManager.InitLicenseFromLicenseContent(
    licenseContent, out string errorMsg);
if (errorCode != (int)EnumErrorCode.EC_OK)
    throw new InvalidOperationException($"Offline activation failed: {errorMsg}");

このようにして取得されたライセンスバンドルには有効期限のウィンドウがあります(通常は数日から1年)で、期限が切れる前に更新が必要です。これにより、接続された機械が定期的にワークフローに参加する必要があります。

IronBarcodeライセンスのアクティベーションは、ローカルで評価される単一の割り当てです。

// IronBarCode: local validation, no network required
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

確認すべきエラーコードはありません。 ネットワーク接続に依存しません。 ライセンスバンドルの更新サイクルはありません。 同じ行は、開発機、CI/CDパイプライン、Dockerコンテナ、エアギャップサーバーで動作します。

カメラとファイルのユースケース

DynamsoftとIronBarcodeは、異なる主要なシナリオに最適化されています。 以下の表はこれを説明しています。どのライブラリが一概に優れていると宣言するのではありません:

シナリオDynamsoft バーコードリーダーIronBarcode
ライブカメラ映像(30fps)リアルタイム用に最適化されている主な使用例ではない
モバイルSDK(iOS/Android)フルSDKが利用可能です.NETのみ
サーバー側ファイル処理CaptureVisionRouter経由でサポートされています主な使用例
PDFバーコード読み取りWindowsで直接; render loop common cross-platformネイティブサポート
エアギャップ展開オフラインライセンスバンドルワークフローが必要すぐに使える
Docker / エフェメラルコンテナ環境ごとのライセンスバンドル更新単一環境変数
オフラインライセンス以前のオンラインアクティベーションからライセンスコンテンツのブロブ標準ライセンスキー
.NETコアAPIサポートされている(追加ライセンスボイラープレート)サポート対象
Azureファンクション初めてのアクティベーションのためのアウトバウンドネットワークネットワーク接続は不要です。
バーコード生成Barcode Readerバンドル内でのみ読み取りはい、世代と読書
QRコード生成Barcode Readerバンドルには含まれていませんはい — QRコードライター

IronBarcodeを理解する

IronBarcodeは、バーコードの生成と読み取りの両方を行うため for .NETライブラリです。 APIは静的であり、インスタンスも、破棄呼び出しも、セッションライフサイクルもありません。 ライセンスの有効化はローカルで行われます。 PDFサポートは以下に組み込まれています。

// NuGet: dotnet add package BarCode
using IronBarCode;

// License — local validation, no network call
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

// Read from an image file
var results = BarcodeReader.Read("label.png");
foreach (var result in results)
    Console.WriteLine($"{result.Format}: {result.Value}");

// Read from a PDF — native, no extra library
var pdfResults = BarcodeReader.Read("manifest.pdf");

// Read with options for high-accuracy or high-throughput scenarios
var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
    最大並列スレッド数 = 4
};
var multiResults = BarcodeReader.Read("multi-barcode-sheet.png", options);
C#

生成も同様に簡単です。

// Generate Code 128
BarcodeWriter.CreateBarcode("SHIP-7734-X", BarcodeEncoding.Code128)
    .ResizeTo(400, 100)
    .SaveAsPng("shipping-label.png");

// Generate QR with error correction and embedded logo
QRCodeWriter.CreateQrCode("https://track.example.com/7734", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .AddBrandLogo("company-logo.png")
    .SaveAsPng("tracking-qr.png");

// Get bytes for HTTP response
byte[] bytes = BarcodeWriter.CreateBarcode("ITEM-001", BarcodeEncoding.Code128)
    .ResizeTo(400, 100)
    .ToPngBinaryData();

機能比較

フィーチャーDynamsoft バーコードリーダーIronBarcode
バーコード読み取りはい、カメラ最適化済みはい、ファイルとドキュメントが最適化されています
バーコード生成なしはい
QRコード生成なしはい — QRコードライター
ネイティブPDFサポートWindowsで直接; render loop common cross-platformはい — BarcodeReader.Read(pdf)
ライセンス認証オンラインアクティベーション + 定期的な再チェックローカル
エアギャップ/オフラインライセンスコンテンツのブロブワークフロー標準キー、オフラインでも動作します
Docker/コンテナ環境ごとのライセンスバンドルワークフロー単一の環境変数
Azureファンクション初めてのアクティベーションのためのアウトバウンドネットワークネットワーク接続は不要です。
AWSラムダ初めてのアクティベーションのためのアウトバウンドネットワークネットワーク接続は不要です。
モバイルSDKiOSとAndroidで利用可能.NETのみ
リアルタイムカメラ(30fps)主要設計目標この用途には設計されていません
コード128はいはい
QRコードはい(読書)はい(読み取りと生成)
データマトリックスはいはい
PDF417はいはい
アステカはいはい
EAN / UPCはいはい
インスタンス管理new CaptureVisionRouter() + Dispose()静的 - インスタンスなし
複数バーコード読み取りBarcodeSettingsのExpectedBarcodesCountExpectMultipleBarcodes = true です。
読書速度制御タイムアウト + テンプレートの調整読書速度列挙型
並行読解手動糸通し最大並列スレッド数
価格設定モデル年間サブスクリプション / ネゴシエートされた永続ライセンス永久翻訳 $999より
.NETサポート.NET 6.0+ および .NET Framework 3.5+.NET 4.6.2 から.NET 9
プラットフォームWindows (x86/x64), Linux (x64)Windows、Linux、macOS、Docker、Azure、AWS Lambda

APIマッピングリファレンス

Dynamsoftのコードを使用しているチームで、その概念がどのように翻訳されるかを理解する必要がある場合:

Dynamsoft バーコードリーダーIronBarcode
LicenseManager.InitLicense(key, out errorMsg)IronBarCode.License.LicenseKey = "key"
errorCode != (int)EnumErrorCode.EC_OK チェック不要
LicenseManager.InitLicenseFromLicenseContent(content, out msg)不要
new CaptureVisionRouter()静的 - インスタンスなし
router.Dispose()不要
router.Capture(imagePath, PresetTemplate.PT_READ_BARCODES)BarcodeReader.Read(imagePath)
router.Capture(imageBytes, PresetTemplate.PT_READ_BARCODES)BarcodeReader.Read(imageBytes)
BarcodeResultItem.GetText()result.Value
BarcodeResultItem.GetFormatString()result.Format
SimplifiedCaptureVisionSettings を介して GetSimplifiedSettings()new BarcodeReaderOptions { ... }
settings.Timeout = 100Speed = ReadingSpeed.Balanced
settings.BarcodeSettings.ExpectedBarcodesCount = 1ExpectMultipleBarcodes = false (デフォルト)
router.UpdateSettings(template, settings)パラメータとして Read() に渡されました
外部PDFライブラリ+ページレンダリングループBarcodeReader.Read("doc.pdf")

チームが切り替わるとき

サーバー側ドキュメント処理、カメラスキャンではありません。 最も一般的な移行シナリオは、評判に基づいてDynamsoftを選び、統合し、カメラ中心のAPIとPDFレンダーステップがドキュメント処理ワークフローを不便にすることを発見したチームです。 ウェブアプリケーションでアップロードされたPDFからバーコードを読み取ることは、Dynamsoftでは追加の手間が必要ですが、IronBarcodeでは単一の呼出しです。

**エアギャップまたは制限されたネットワーク環境。**金融機関、医療システム、政府機関などは、アプリケーションサーバーからのインターネットへの外部接続を禁止している場合が多い。 Dynamsoftのオンラインアクティベーションは、オフラインライセンスバンドルワークフローなしでそれらの環境では実行されません。これにより運用ステップが必要になります。 こうした環境にあるチームがIronBarcodeに移行する理由は、ライセンス認証にネットワーク要素が一切含まれていないためであることが多い。

DockerおよびKubernetesエフェメラルコンテナ。 インスタンスが頻繁にスケールアップおよびスケールダウンするコンテナ化されたデプロイメントでは、ライセンスバンドルの更新が頻繁に行われるため、管理が面倒です。 IronBarcodeのライセンスキーは、インスタンスごとの登録を必要とせず、標準的な環境変数として機能します。

読み取りだけでなく生成も必要。 Dynamsoft Barcode Readerバンドルは読み取り専用です。 バーコードラベルの生成、製品用QRコードの印刷、またはバーコードが埋め込まれた出荷明細書の作成が必要なアプリケーションには、別のライブラリが必要です。 このような状況にあるチームは、2つの異なるバーコード依存関係を管理することを避けるために、 IronBarcodeに統合することが多い。

運用の負荷を簡略化。 到達可能でなければならない外部依存関係としてDynamsoftライセンスサーバーをリストから削除し、PDFレンダリングライブラリを削除し、ルーターライフサイクル管理をスタティックコールに置き換えることで、本番環境で問題が発生する可能性のある事項を減少させます。

結論

Dynamsoft Barcode Readerはその意図した使用ケースに良く適合している高品質のライブラリです:モバイルアプリケーションでのリアルタイムのカメラベースのバーコードスキャンに特に適しています。 これらのアルゴリズムは、手持ちスキャン時の状況(照明の変化、モーションブラー、部分的な遮蔽など)に合わせて最適化されている。 もしそれがあなたのユースケースであれば、Dynamsoftは十分に競争力があります。

サーバーサイドドキュメント処理 — PDFからバーコードを読み取り、バーコードラベルを生成し、エアギャップ環境で実行し、エフェメラルなDockerコンテナにデプロイする — については、ライブラリのアーキテクチャは各ステップでの設定を求めています。オンラインライセンスアクティベーション、クロスプラットフォームPDFレンダーパターン、カメラ最適化タイムアウト設定、およびオフラインライセンスバンドルワークフローは、モバイルカメラ使用のために構築された結果です。 それらはバグではありません。 それらは、異なる状況を想定した意図的なデザイン選択である。

IronBarcodeは、ドキュメント側とサーバー側の両方のコンテキスト向けに構築されています。 ローカルライセンスの検証、ネイティブなPDF読み取り、静的API、および生成サポートは、いずれも回避策ではなく、第一級の機能です。 決定は、バーコードの実際の環境に基づきます。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

...
詳しく読む

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。