Dynamsoft Barcode ReaderとIronBarcodeの比較:C#バーコードライブラリの比較
Dynamsoft Barcode Readerは、その設計目的である、毎秒30フレームのライブカメラ映像からバーコードを読み取るという点において、実に優れた性能を発揮します。 アルゴリズムは高速で、シンボル体系のサポートも幅広く、iOSとAndroid向けにそれをラップするモバイルSDKは、この分野で最も優れた選択肢の一つです。 もしあなたの製品が、作業員がスマートフォンをパレットラベルにかざして100ミリ秒未満の認識速度を求める倉庫スキャンアプリであれば、Dynamsoftは信頼できる選択肢となるでしょう。
BarCodeがインターネットに接続できないサーバー上のPDFファイルにある場合、ライブラリはユースケースとミスマッチです。Dynamsoftのライセンスサーバにネットワークコールを行います。 エアギャップされたデータセンター、隔離されたVPC、またはインターネットへのアウトバウンドアクセスが制限されている環境では、その呼び出しはバーコードが1つもデコードされる前に失敗します。 オフラインでの代替手段、つまりDynamsoftのサポートからUUIDに紐づけられたデバイス固有のライセンスファイルを取得する方法は有効だが、ほとんどの文書処理ワークフローでは想定されていない運用上のオーバーヘッドが発生する。
この比較は、ライブラリの品質ではなく、ユースケースへの適合性に関するものです。 Dynamsoftはカメラファーストのライブラリを開発し、それを非常にうまく作り上げた。 問題は、カメラ優先の前提がサーバー側の文書処理ワークフローにも適用できるかどうかである。
Dynamsoftバーコードリーダーについて
Dynamsoftのアーキテクチャは、そのカメラ事業の起源を反映している。 スタートアップシーケンスにはオンラインライセンス認証が必要であり、設定モデルにはリアルタイムフレーム処理に最適化されたタイムアウト値が含まれ、APIにはDeblurLevelのような、ハンドヘルドカメラの可変フォーカスとモーションブラーの条件に特化して存在する概念が公開されています:
// Dynamsoft: license server call required at startup
using Dynamsoft.DBR;
// This call contacts Dynamsoft's license server — fails in air-gapped environments
int errorCode = BarcodeReader.InitLicense("YOUR-LICENSE-KEY", out string errorMsg);
if (errorCode != (int)EnumErrorCode.DBR_OK)
throw new InvalidOperationException($"License validation failed: {errorMsg}");
var reader = new BarcodeReader();
// Settings tuned for camera frame processing
var settings = reader.GetRuntimeSettings();
settings.DeblurLevel = 5; // compensates for camera motion blur
settings.ExpectedBarcodesCount = 1; // camera focus: one barcode at a time
settings.Timeout = 100; // 100ms — optimized for 30fps video pipeline
reader.UpdateRuntimeSettings(settings);
// Dynamsoft: license server call required at startup
using Dynamsoft.DBR;
// This call contacts Dynamsoft's license server — fails in air-gapped environments
int errorCode = BarcodeReader.InitLicense("YOUR-LICENSE-KEY", out string errorMsg);
if (errorCode != (int)EnumErrorCode.DBR_OK)
throw new InvalidOperationException($"License validation failed: {errorMsg}");
var reader = new BarcodeReader();
// Settings tuned for camera frame processing
var settings = reader.GetRuntimeSettings();
settings.DeblurLevel = 5; // compensates for camera motion blur
settings.ExpectedBarcodesCount = 1; // camera focus: one barcode at a time
settings.Timeout = 100; // 100ms — optimized for 30fps video pipeline
reader.UpdateRuntimeSettings(settings);
Imports Dynamsoft.DBR
' Dynamsoft: license server call required at startup
' This call contacts Dynamsoft's license server — fails in air-gapped environments
Dim errorCode As Integer = BarcodeReader.InitLicense("YOUR-LICENSE-KEY", errorMsg:=Nothing)
If errorCode <> CType(EnumErrorCode.DBR_OK, Integer) Then
Throw New InvalidOperationException($"License validation failed: {errorMsg}")
End If
Dim reader As New BarcodeReader()
' Settings tuned for camera frame processing
Dim settings = reader.GetRuntimeSettings()
settings.DeblurLevel = 5 ' compensates for camera motion blur
settings.ExpectedBarcodesCount = 1 ' camera focus: one barcode at a time
settings.Timeout = 100 ' 100ms — optimized for 30fps video pipeline
reader.UpdateRuntimeSettings(settings)
これは、その目的に適した、よく設計されたAPIです。 CODE-38601--@@@設定は、カメラからの毎秒30フレームを処理していて、1つのフレームに500msを費やす余裕がない場合に意味を持ちます。 アップロードされたPDFを処理するサーバーにとって、100ミリ秒のタイムアウトは無意味な制約であり、高密度のバーコードの読み取りに失敗する原因となる可能性があります。
インスタンスベースの設計 - new BarcodeReader(),コード-38612- カメラセッションのセマンティクスに従います:セッションを開き、フレームを処理し、セッションを閉じます。 ファイル処理に関しては、このライフサイクルはメリットのない定型コードを追加するだけです。
PDFの問題
Dynamsoft Barcode Readerは、PDFをネイティブでサポートしていません。 入力がPDFファイルの場合、コードはまず各ページを画像としてレンダリングし、その画像をDynamsoftに渡す必要があります。 これには、別途PDFレンダリングライブラリ(一般的にはPdfiumViewerが使用される)が必要となり、 NuGet依存関係、ネイティブバイナリ依存関係(Windowsではpdfium.dll、Linuxではlibpdfium)、およびすべてのPDF操作を囲むレンダリングループが追加されます。
// Dynamsoft PDF processing — requires PdfiumViewer (external dependency)
// dotnet add package PdfiumViewer
// dotnet add package PdfiumViewer.Native.x86_64.v8-xfa (platform-specific)
using PdfiumViewer;
using System.Drawing.Imaging;
using Dynamsoft.DBR;
public List<string> ReadBarcodesFromPdf(string pdfPath)
{
var results = new List<string>();
using (var pdfDoc = PdfDocument.Load(pdfPath))
{
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 Dynamsoft
TextResult[] barcodes = reader.DecodeFileInMemory(imageBytes, "");
foreach (var b in barcodes)
results.Add(b.BarcodeText);
}
}
return results;
}
// Dynamsoft PDF processing — requires PdfiumViewer (external dependency)
// dotnet add package PdfiumViewer
// dotnet add package PdfiumViewer.Native.x86_64.v8-xfa (platform-specific)
using PdfiumViewer;
using System.Drawing.Imaging;
using Dynamsoft.DBR;
public List<string> ReadBarcodesFromPdf(string pdfPath)
{
var results = new List<string>();
using (var pdfDoc = PdfDocument.Load(pdfPath))
{
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 Dynamsoft
TextResult[] barcodes = reader.DecodeFileInMemory(imageBytes, "");
foreach (var b in barcodes)
results.Add(b.BarcodeText);
}
}
return results;
}
Imports PdfiumViewer
Imports System.Drawing.Imaging
Imports Dynamsoft.DBR
Public Function ReadBarcodesFromPdf(pdfPath As String) As List(Of String)
Dim results As New List(Of String)()
Using pdfDoc = PdfDocument.Load(pdfPath)
For page As Integer = 0 To pdfDoc.PageCount - 1
' Render each page at 300 DPI
Using image = pdfDoc.Render(page, 300, 300, True)
Using ms As New MemoryStream()
image.Save(ms, ImageFormat.Png)
Dim imageBytes As Byte() = ms.ToArray()
' Now pass rendered image bytes to Dynamsoft
Dim barcodes As TextResult() = reader.DecodeFileInMemory(imageBytes, "")
For Each b In barcodes
results.Add(b.BarcodeText)
Next
End Using
End Using
Next
End Using
Return results
End Function
これは、3つの依存関係(Dynamsoft、PdfiumViewer、およびプラットフォーム固有のネイティブバイナリ)、ページごとのレンダリングループ、およびページ数の多いドキュメントの場合の大きなメモリオーバーヘッドを伴います。
IronBarcodeはPDFファイルから直接読み取ります。
// IronBarcode: PDF is native — no extra library, no render loop
// NuGet: dotnet add package IronBarcode
var results = BarcodeReader.Read("invoice.pdf");
foreach (var result in results)
{
Console.WriteLine($"{result.Format}: {result.Value}");
}
// IronBarcode: PDF is native — no extra library, no render loop
// NuGet: dotnet add package IronBarcode
var results = BarcodeReader.Read("invoice.pdf");
foreach (var result in results)
{
Console.WriteLine($"{result.Format}: {result.Value}");
}
' IronBarcode: PDF is native — no extra library, no render loop
' NuGet: dotnet add package IronBarcode
Dim results = BarcodeReader.Read("invoice.pdf")
For Each result In results
Console.WriteLine($"{result.Format}: {result.Value}")
Next
電話一本。 PDFレンダリング機能はありません。 ページごとのループ処理はありません。PDFサポートのためのプラットフォーム固有のネイティブバイナリもありません。
ライセンスの複雑さ
サーバーがインターネットに接続されていれば、オンラインでのライセンス認証は簡単です。 そうでない場合、またはネットワークポリシーで送信ホストの明示的な許可リスト登録が要求される場合、検証失敗の対象となる領域が拡大します。
// Dynamsoft: error code pattern required
int errorCode = BarcodeReader.InitLicense("YOUR-LICENSE-KEY", out string errorMsg);
if (errorCode != (int)EnumErrorCode.DBR_OK)
{
// Handle: network timeout, license server unreachable, invalid key,
// expired key, device count exceeded, etc.
throw new InvalidOperationException($"Dynamsoft license failed [{errorCode}]: {errorMsg}");
}
// Dynamsoft: error code pattern required
int errorCode = BarcodeReader.InitLicense("YOUR-LICENSE-KEY", out string errorMsg);
if (errorCode != (int)EnumErrorCode.DBR_OK)
{
// Handle: network timeout, license server unreachable, invalid key,
// expired key, device count exceeded, etc.
throw new InvalidOperationException($"Dynamsoft license failed [{errorCode}]: {errorMsg}");
}
Imports System
' Dynamsoft: error code pattern required
Dim errorCode As Integer = BarcodeReader.InitLicense("YOUR-LICENSE-KEY", errorMsg:=Nothing)
If errorCode <> CType(EnumErrorCode.DBR_OK, Integer) Then
' Handle: network timeout, license server unreachable, invalid key,
' expired key, device count exceeded, etc.
Throw New InvalidOperationException($"Dynamsoft license failed [{errorCode}]: {errorMsg}")
End If
Dynamsoftのオフラインライセンス認証には、別途ワークフローが必要です。 デバイスのUUIDを取得するためにBarcodeReader.OutputLicenseToString()@に電話し、そのUUIDをDynamsoftサポートに送信してデバイス固有のライセンスファイルを受け取り、次にInitLicenseFromLicenseContent@を使用してアクティベートします:
// Dynamsoft offline license — device UUID required
string uuid = BarcodeReader.OutputLicenseToString();
// Send uuid to Dynamsoft support → receive licenseContent string
int errorCode = BarcodeReader.InitLicenseFromLicenseContent("YOUR-LICENSE-KEY", licenseContent, uuid, out string errorMsg);
// Dynamsoft offline license — device UUID required
string uuid = BarcodeReader.OutputLicenseToString();
// Send uuid to Dynamsoft support → receive licenseContent string
int errorCode = BarcodeReader.InitLicenseFromLicenseContent("YOUR-LICENSE-KEY", licenseContent, uuid, out string errorMsg);
' Dynamsoft offline license — device UUID required
Dim uuid As String = BarcodeReader.OutputLicenseToString()
' Send uuid to Dynamsoft support → receive licenseContent string
Dim errorCode As Integer = BarcodeReader.InitLicenseFromLicenseContent("YOUR-LICENSE-KEY", licenseContent, uuid, errorMsg)
コンテナが一時的なものであり、デプロイのたびにUUIDが変わるDocker環境では、これは継続的な運用作業を生み出す。 コンテナを起動するたびに、Dynamsoftサポートに登録された新しいUUIDが必要になる可能性があります。
IronBarcodeライセンスのアクティベーションは、ローカルで評価される単一の割り当てです。
// IronBarCode: local validation, no network required
IronBarCode.License.LicenseKey = "YOUR-KEY";
// IronBarCode: local validation, no network required
IronBarCode.License.LicenseKey = "YOUR-KEY";
' IronBarCode: local validation, no network required
IronBarCode.License.LicenseKey = "YOUR-KEY"
確認すべきエラーコードはありません。 ネットワーク接続に依存しません。 デバイスごとの登録は不要です。 同じコード行は、開発マシン、CI/CDパイプライン、Dockerコンテナ、およびエアギャップサーバーで動作します。
カメラとファイルのユースケース
率直に言って、DynamsoftとIronBarcodeはそれぞれ異なる主要なシナリオに最適化されている。 以下の表は、特定のライブラリが普遍的に優れていると断言するのではなく、この点を明確に説明しています。
| シナリオ | Dynamsoft バーコードリーダー | IronBarcode |
|---|---|---|
| ライブカメラ映像(30fps) | 素晴らしい - リアルタイム向けに最適化されています | 主な使用例ではない |
| モバイルSDK(iOS/Android) | フルSDKが利用可能です | .NETのみ |
| サーバー側ファイル処理 | 機能はするが、回避策が必要 | 主な使用例 |
| PDFバーコード読み取り | 外部PDFレンダラーが必要です | ネイティブサポート |
| エアギャップ展開 | デバイスのUUIDとDynamsoftのサポートが必要です | すぐに使える |
| Docker / エフェメラルコンテナ | コンテナごとのUUID管理 | 単一環境変数 |
| オフラインライセンス | Dynamsoftサポートからのデバイス固有ファイル | 標準ライセンスキー |
| .NETコアAPI。 | 作品(追加ライセンス定型文) | きれいに動作します |
| Azureファンクション | license.dynamsoft.com のネットワークポリシーが必要です | ネットワーク接続は不要です。 |
| バーコード生成 | いいえ、閲覧専用です | はい、世代と読書 |
| QRコード生成 | なし | はい — QRコードライター |
IronBarcodeを理解する
IronBarcodeは、バーコードの生成と読み取りの両方を行うための.NETライブラリです。 APIは静的であり、インスタンスも、破棄呼び出しも、セッションライフサイクルもありません。 ライセンスの有効化はローカルで行われます。 PDFサポートは以下に組み込まれています。
// NuGet: dotnet add package IronBarcode
using IronBarCode;
// License — local validation, no network call
IronBarCode.License.LicenseKey = "YOUR-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);
// NuGet: dotnet add package IronBarcode
using IronBarCode;
// License — local validation, no network call
IronBarCode.License.LicenseKey = "YOUR-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);
Imports IronBarCode
' License — local validation, no network call
IronBarCode.License.LicenseKey = "YOUR-KEY"
' Read from an image file
Dim results = BarcodeReader.Read("label.png")
For Each result In results
Console.WriteLine($"{result.Format}: {result.Value}")
Next
' Read from a PDF — native, no extra library
Dim pdfResults = BarcodeReader.Read("manifest.pdf")
' Read with options for high-accuracy or high-throughput scenarios
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.Balanced,
.ExpectMultipleBarcodes = True,
.最大並列スレッド数 = 4
}
Dim multiResults = BarcodeReader.Read("multi-barcode-sheet.png", options)
生成も同様に簡単です。
// 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();
// 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();
Imports System
' 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
Dim bytes As Byte() = BarcodeWriter.CreateBarcode("ITEM-001", BarcodeEncoding.Code128) _
.ResizeTo(400, 100) _
.ToPngBinaryData()
機能比較
| フィーチャー | Dynamsoft バーコードリーダー | IronBarcode |
|---|---|---|
| バーコード読み取り | はい、カメラ最適化済み | はい、ファイルとドキュメントが最適化されています |
| バーコード生成 | なし | はい |
| QRコード生成 | なし | はい — QRコードライター |
| ネイティブPDFサポート | いいえ — 外部レンダラーが必要です | はい — BarcodeReader.Read(pdf) |
| ライセンス認証 | オンライン(ライセンスサーバー) | ローカル |
| エアギャップ/オフライン | デバイスUUIDとDynmsoftのサポートが必要です | 標準キー、オフラインでも動作します |
| ドッカー/コンテナ | コンテナインスタンスごとのUUID管理 | 単一の環境変数 |
| Azureファンクション | 発信ネットワークポリシーが必要です | ネットワーク接続は不要です。 |
| AWSラムダ | 発信ネットワークポリシーが必要です | ネットワーク接続は不要です。 |
| モバイルSDK | iOSとAndroidで利用可能 | .NETのみ |
| リアルタイムカメラ(30fps) | 主要設計目標 | この用途には設計されていません |
| コード128 | はい | はい |
| QRコード | はい(読書) | はい(読み取りと生成) |
| データマトリックス | はい | はい |
| PDF417 | はい | はい |
| アステカ | はい | はい |
| EAN / UPC | はい | はい |
| インスタンス管理 | 新しい BarcodeReader() + Dispose() | 静的 - インスタンスなし |
| 複数バーコード読み取り | 期待されるバーコード数 | ExpectMultipleBarcodes = true です。 |
| 読書速度制御 | タイムアウト + デブラーレベル | 読書速度列挙型 |
| 並行読解 | 手動糸通し | 最大並列スレッド数 |
| 価格設定モデル | サブスクリプション | 永久翻訳 $749より |
| .NETサポート | .NET Standard、 .NET 5+ | .NET 4.6.2 から.NET 9 |
| プラットフォーム | Windows、Linux、macOS | Windows、Linux、macOS、Docker、Azure、AWS Lambda |
APIマッピングリファレンス
Dynamsoftのコードを使用しているチームで、その概念がどのように翻訳されるかを理解する必要がある場合:
| Dynamsoft バーコードリーダー | IronBarcode |
|---|---|
| コード-38606 | コード-38607 |
| コード-38608--チェック | 不要 |
| --コード-38609--@@ (uuid) | 不要 |
| コード-38610 | 不要 |
| コード-38611 | 静的 - インスタンスなし |
| コード-38612 | 不要 |
| コード-38613 | コード-38614 |
| コード-38615 | コード-38616 |
| コード-38617 | コード-38618 |
| コード-38619 | コード-38620 |
| CODE-38621--@@@経由--CODE-38622--@@@経由 | new BarcodeReaderOptions { ... } |
| コード-38623 | コード-38624 |
| コード-38625 | コード-38626(デフォルト) |
| コード-38627 | CODE-38628のパラメータとして渡されます。 |
| 外部PDFライブラリ+ページレンダリングループ | コード-38629 |
チームが切り替わるとき
カメラによるスキャンではなく、サーバー側でのドキュメント処理が重要です。最も一般的な移行シナリオは、評判に基づいてDynamsoftを選択し、導入したものの、カメラ中心のAPIとPDFのギャップによってドキュメント処理のワークフローが使いづらくなることに気づいたチームです。 WebアプリケーションでアップロードされたPDFからバーコードを読み取ることは、Dynamsoftでは回避策が必要となるコアユースケースですが、 IronBarcodeでは単一の呼び出しで済みます。
エアギャップまたは制限されたネットワーク環境。金融機関、医療システム、政府機関などは、アプリケーションサーバーからのインターネットへの外部接続を禁止している場合が多い。 Dynamsoftのオンラインライセンス認証は、これらの環境では失敗します。 オフラインデバイスのUUIDワークフローは機能的には問題ありませんが、サポート依存関係によるオーバーヘッドが発生します。 こうした環境にあるチームがIronBarcodeに移行する理由は、ライセンス認証にネットワーク要素が一切含まれていないためであることが多い。
DockerとKubernetesの一時的なコンテナ。インスタンスが頻繁にスケールアップ/スケールダウンするコンテナ化されたデプロイメントでは、デバイスベースのオフラインライセンスは管理が困難になる。 インフラストラクチャによっては、新しいコンテナごとに異なるUUIDが割り当てられる可能性があります。 IronBarcodeのライセンスキーは、インスタンスごとの登録を必要とせず、標準的な環境変数として機能します。
生成機能と読み取り機能の両方が必要です。Dynamsoftは読み取り専用です。 バーコードラベルの生成、製品用QRコードの印刷、またはバーコードが埋め込まれた出荷明細書の作成が必要なアプリケーションには、別のライブラリが必要です。 このような状況にあるチームは、2つの異なるバーコード依存関係を管理することを避けるために、 IronBarcodeに統合することが多い。
運用上の負担が軽減されます。アクセス可能な外部依存関係のリストから Dynamsoft ライセンスサーバーを削除し、PDF レンダリングライブラリを削除し、インスタンス管理を静的呼び出しに置き換えることで、本番環境で発生する可能性のある問題の数を減らすことができます。
結論
Dynamsoft Barcode Readerは、特にモバイルアプリケーションにおけるリアルタイムのカメラベースのバーコードスキャンという、想定される用途にまさに最適な高品質ライブラリです。 これらのアルゴリズムは、手持ちスキャン時の状況(照明の変化、モーションブラー、部分的な遮蔽など)に合わせて最適化されている。 もしそれがあなたのユースケースであれば、Dynamsoftは十分に競争力があります。
サーバーサイドでのドキュメント処理(PDFからのバーコード読み取り、バーコードラベルの生成、エアギャップ環境での実行、一時的なDockerコンテナへのデプロイなど)においては、ライブラリのアーキテクチャがあらゆる段階で問題を引き起こします。オンラインライセンス認証、PDFサポートの欠如、カメラに最適化されたタイムアウト設定、デバイスUUIDのオフラインワークフローはすべて、モバイルカメラでの使用を想定して構築した結果です。 それらはバグではありません。 それらは、異なる状況を想定した意図的なデザイン選択である。
IronBarcodeは、ドキュメント側とサーバー側の両方のコンテキスト向けに構築されています。 ローカルライセンスの検証、ネイティブなPDF読み取り、静的API、および生成サポートは、いずれも回避策ではなく、第一級の機能です。 移行の決定は、バーコードが実際にどの環境で使用されているかによって決まります。
よくある質問
Dynamsoft BarCode Readerとは何ですか?
Dynamsoft BarCode Readerは、C#アプリケーションでバーコードを生成して読み取るための.NETバーコードライブラリです。これは、開発者が.NETプロジェクトのバーコードソリューションを選択するときに評価するいくつかの選択肢の1つです。
Dynamsoft BarCode ReaderとIronBarcodeの主な違いは何ですか?
IronBarcodeはインスタンス管理を必要としない静的なステートレスAPIを使用していますが、Dynamsoft BarCode Readerは通常、使用前にインスタンスの作成と設定が必要です。IronBarcodeはまた、ネイティブPDFサポート、自動フォーマット検出、およびすべての環境でのシングルキーライセンスを提供します。
IronBarcodeはDynamsoft Barcode Readerよりライセンスが簡単ですか?
IronBarcodeは単一のライセンスキーで開発環境と本番環境の両方をカバーします。これは、SDKキーとランタイムキーを分離するライセンスシステムと比較して、CI/CDパイプラインとDocker構成を簡素化します。
IronBarcode はDynamsoft Barcode Readerがサポートしているすべてのバーコードフォーマットをサポートしていますか?
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 はDynamsoft BarCode Readerと比べてどのようにバッチ処理を行いますか?
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インストーラーやランタイムファイルは必要ありません。
Dynamsoftとは異なり、購入前にIronBarcodeを評価することはできますか?
IronBarcodeのトライアルモードでは、完全なデコードされたバーコード値を返します。購入を決定する前に、ご自身のドキュメントで読み取り精度をベンチマークすることができます。
Dynamsoft BarCode ReaderとIronBarcodeの価格の違いは何ですか?
IronBarcodeは、開発および量産をカバーする永続的なシングルデベロッパーライセンスで749ドルからご利用いただけます。価格の詳細とボリュームオプションはIronBarcodeのライセンスページでご覧いただけます。別途ランタイムライセンスは必要ありません。
Dynamsoft BarCode ReaderからIronBarcodeへの移行は簡単ですか?
Dynamsoft BarCode ReaderからIronBarcodeへの移行は、主にインスタンスベースのAPIコールをIronBarcodeの静的メソッドに置き換え、ライセンスの定型文を削除し、結果のプロパティ名を更新します。ほとんどの移行はコードを追加するのではなく、コードを削減します。
IronBarcodeはロゴ入りQRコードを生成できますか?
はい。QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png")は、設定可能なエラー修正機能付きで、ブランド画像をネイティブにQRコードに埋め込みます。カラーQRコードもChangeBarCodeColor()でサポートされています。

