Google ML Kit Barcode Scanning vs IronBarcode:C#バーコードライブラリの比較
Google ML Kitのバーコードスキャン機能は、Android上では本当に素晴らしい。 Google Lensの基盤となっており、破損したコードや部分的に判読不能なコードも処理でき、ネットワーク呼び出しなしでデバイス上で動作し、幅広い1Dおよび2Dフォーマットをサポートしています。 .NET開発者がバーコードライブラリの比較でこれに遭遇した場合、それらの事実は正確です。 比較記事でよく見落とされているのは、ML Kitには.NET SDKもNuGetパッケージもC# APIもないという点だ。 この記事は、ML Kitをリストで見つけ、" .NETプロジェクトでML Kitを使用する"とは実際にはどういうことなのか、そしてマネージドコードではどのようなものになるのかを理解する必要がある開発者向けです。
Google ML Kitのバーコードスキャンとは
Google ML Kit バーコードスキャンは、ネイティブのモバイルライブラリです。 それは回避すべき制約ではない。 それは製品のデザインです。 MLキットは2種類のフレーバーで出荷されます。
- Android: Google Maven経由で
com.google.mlkit:barcode-scanning(Kotlin/Java)として配布されています。 ターゲットデバイスのGoogle Playサービスが必要です。カメラフレーム、ファイルURI、またはビットマップから構築されたオブジェクトを処理します。 - iOS:CocoaPods経由で@--CODE-38632--@@として配布され、Firebaseに依存しています。 SwiftまたはObjective-Cを使用します。
CODE-38633はありません。 CODE-38634はありません。 GoogleはML Kit用の.NETバインディングを公開していません。
コミュニティによって維持されているXamarinバインディングはこれまで様々な時期に存在してきましたが、常に同じ問題を抱えています。ML KitはAndroidとiOSのSDKを頻繁に更新するため、個人や小規模チームによって維持されているバインディングプロジェクトは、基盤となるAPIが変更されると更新が遅れたり、完全に動作しなくなったりする傾向があります。 2026年現在、ML Kitのバーコードスキャナをラップする、積極的にメンテナンスされ、本番環境で使用可能な.NET NuGetパッケージは存在しません。
ML Kitが得意とすること
ML Kitがバーコード比較に表示される理由を理解することは、有益な背景知識となる。 ネイティブAndroidの場合:
-デバイス上での推論:サーバーとの往復通信は不要です。ML KitのモデルはGoogle Play開発者サービスを使用してローカルで実行されるため、低遅延で、スキャン時のネットワーク依存性もありません。 -損傷耐性: MLモデルは、多くの閾値ベースのデコーダーよりも、損傷したバーコード、部分的に隠れたバーコード、または低解像度のバーコードをより適切に処理します。 これは、現実世界のコードをスキャンする消費者向けアプリにとって、真の差別化要因となる。
- Google Lensとの連携: ML Kitのスキャナーは、Google Lensのバーコード検出を支えるものと同じ技術スタックを使用しています。 それは品質を示す強力な指標です。 -モバイルでのフォーマット対応範囲: QRコード、EAN-13、EAN-8、Code 128、Code 39、Code 93、Codabar、ITF、PDF417、Data Matrix、Aztec、およびUPC-A/UPC-Eはすべてネイティブでサポートされています。 -設定不要: 3行のKotlinコードで、しきい値の調整やデコーダ戦略の選択なしに、動作するスキャナを生成できます。
これらは正当な強みである。 .NET開発者にとっての問題は、ML Kit自体が悪いということではなく、ML Kitをかなりの労力をかけずに利用できないということだ。
.NET開発の現実
.NET開発者がバーコードをスキャンする必要がある場合、ML Kitの実際のパスは次のようになります。
No async/await C# API. ML KitはAndroidの@--CODE-38635--@@APIと@--CODE-38636--@@および@--CODE-38637--@@コールバックを使用します。 これらは、.NETのTask<t>およびawaitには対応していません。 バインディングレイヤーは、コールバックベースのAndroidの非同期処理と.NETのTPL(テーブルトップレベルライブラリ)の間で適応する必要があるが、これは容易ではない変換であり、コミュニティのバインディングでは一貫性のない処理となっている。
.NET依存性注入の統合はありません。@--CODE-38640--@@は、Android BarcodeScannerオブジェクトを返す静的ファクトリー呼び出しです。 登録する.NETインターフェース、IServiceCollection.AddBarcodeScanner()、ASP.NET CoreミドルウェアやAzure Functionsに注入する方法はありません。
ASP.NET CoreおよびAzure Functionsはサポートされていません。ML KitにはAndroidまたはiOSのランタイムコンテキストが必要です。 Linux 上の Web API プロセス、Azure Functions、Windows Server、または Docker コンテナでは実行できません。 ユースケースがサーバーサイドのバーコード処理(画像を受け取ってバーコードデータを返すRESTエンドポイント、ドキュメント処理パイプライン、バッチジョブなど)である場合、バインディングの利用可能性に関わらず、ML Kitはアーキテクチャ的に互換性がありません。
Camera or frame input only - no file, no PDF. ML KitのInputImageは、@@--CODE-38644--@、@@@--CODE-38645--@、またはAndroidファイルシステム上のファイルURIから構築できます。 PDF文書の処理、ページの反復処理、複数ページのTIFFファイルの処理といった概念は存在しません。 サーバー側のドキュメント処理は、本製品の範囲外です。
Google Play開発者サービスへの依存。デバイス上の機械学習モデルは、Google Play開発者サービスを介して実行されます。 Google Play開発者サービスが搭載されていないデバイス(カスタムAndroidビルド、一部のEnterpriseデバイス、Amazon Fireタブレットなど)では、デフォルトのML Kit構成を使用できません。 バンドル "モデルオプション(com.google.mlkit:barcode-scanning-bundled)はこれを回避しますが、APKサイズが大幅に増加します。
Android ML Kit コードを.NETに移植する
ML Kitのバーコードスキャン機能を備えた既存のAndroidアプリがあり、それを.NET MAUIまたは.NET 9に移植する場合、以下の翻訳を参照してください。 KotlinコードはML Kitのコールバックパターンを使用しています。 C#コードはIronBarcodeの同期APIを使用しています。
// Android Kotlin: ML Kit
val options = BarcodeScannerOptions.Builder()
.setBarcodeFormats(Barcode.FORMAT_QR_CODE, Barcode.FORMAT_CODE_128)
.build()
val scanner = BarcodeScanning.getClient(options)
val inputImage = InputImage.fromFilePath(context, uri)
scanner.process(inputImage)
.addOnSuccessListener { barcodes ->
for (barcode in barcodes) {
val rawValue = barcode.rawValue
val format = barcode.format
}
}
.addOnFailureListener { e -> Log.e("MLKit", e.message ?: "") }
// .NET C#: IronBarcode
// NuGet: dotnet add package IronBarcode
using IronBarCode;
var results = BarcodeReader.Read("captured-image.jpg");
foreach (var barcode in results)
{
Console.WriteLine($"{barcode.Format}: {barcode.Value}");
}
// .NET C#: IronBarcode
// NuGet: dotnet add package IronBarcode
using IronBarCode;
var results = BarcodeReader.Read("captured-image.jpg");
foreach (var barcode in results)
{
Console.WriteLine($"{barcode.Format}: {barcode.Value}");
}
Imports IronBarCode
Dim results = BarcodeReader.Read("captured-image.jpg")
For Each barcode In results
Console.WriteLine($"{barcode.Format}: {barcode.Value}")
Next
構造的な違いは、構文だけにとどまらない。 MLキットバージョンは、スキャナオブジェクトをセットアップし、InputImageを構築し、scanner.process()を呼び出し、成功と失敗のコールバックを登録します。 先に進む前に結果が必要な場合は、コールバックの実行をロジックの残りの部分と調整する必要があります。JavaではCountDownLatch、Kotlinではコルーチンを使うのが一般的です。
IronBarcodeのBarcodeReader.Read()は同期的に結果コレクションを返します。 すぐに反復処理を行います。 コールバックの登録も、スレッドの同期も、管理すべき個別のスキャナオブジェクトもありません。
Androidコードを移植するチームの場合、複数バーコードのシナリオにおけるパターン変換は次のようになります。
// .NET C#: IronBarcode — reading multiple barcodes with options
using IronBarCode;
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Balanced,
ExpectMultipleBarcodes = true,
ExpectedBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128
};
var results = BarcodeReader.Read("image.jpg", options);
foreach (var barcode in results)
{
Console.WriteLine($"Format: {barcode.Format}, Value: {barcode.Value}");
}
// .NET C#: IronBarcode — reading multiple barcodes with options
using IronBarCode;
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Balanced,
ExpectMultipleBarcodes = true,
ExpectedBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128
};
var results = BarcodeReader.Read("image.jpg", options);
foreach (var barcode in results)
{
Console.WriteLine($"Format: {barcode.Format}, Value: {barcode.Value}");
}
Imports IronBarCode
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.Balanced,
.ExpectMultipleBarcodes = True,
.ExpectedBarcodeTypes = BarcodeEncoding.QRCode Or BarcodeEncoding.Code128
}
Dim results = BarcodeReader.Read("image.jpg", options)
For Each barcode In results
Console.WriteLine($"Format: {barcode.Format}, Value: {barcode.Value}")
Next
CODE-38651--@@フラグは、ML Kitの@@--CODE-38652--@に相当します。 これを設定すると検索範囲が絞り込まれ、パフォーマンスが向上しますが、ML Kitとは異なり、設定しなくても読み取りが中断されることはありません。IronBarcodeはサポートされているすべてのフォーマットを試行します。
フォーマットのカバー範囲比較
どちらのツールも、主流の2Dおよび1Dフォーマットに対応しています。 重複する部分はかなり多い。
| 形式 | MLキット(Android版) | IronBarcode |
|---|---|---|
| QRコード | はい | はい |
| EAN-13 | はい | はい |
| EAN-8 | はい | はい |
| UPC-A | はい | はい |
| UPC-E | はい | はい |
| コード128 | はい | はい |
| コード39 | はい | はい |
| コード93 | はい | はい |
| コダバー | はい | はい |
| ITF | はい | はい |
| PDF417 | はい | はい |
| データマトリックス | はい | はい |
| アステカ | はい | はい |
| コード11 | なし | はい |
| MSIプレッシー | なし | はい |
| ファーマコード | なし | はい |
| インターリーブ 2/5 | ITF経由 | はい |
| RSS-14 / GS1データバー | なし | はい |
| マイクロQR | なし | はい |
| マキシコード | なし | はい |
IronBarcodeは、読み取りと生成の両方において、50種類以上のエンコード方式をサポートしています。 ML Kitのフォーマットリストは、Googleがモデルに同梱しているものに固定されており、独自のシンボル体系を追加することはできません。
IronBarcodeが追加する機能
IronBarcodeは、読み書きだけでなく、バーコードワークフロー全体を網羅しています。
生成機能。ML Kitには生成APIは一切ありません。バーコードを読み取るだけで、生成はしません。 IronBarcodeは、サポートされているあらゆる形式のデータをPNG、JPEG、SVG、HTML、またはバイナリデータとして生成します。
// Generate a コード128 barcode to file
BarcodeWriter.CreateBarcode("SHIP-20240312-7834", BarcodeEncoding.Code128)
.SaveAsPng("shipping-label.png");
// Generate a コード128 barcode to file
BarcodeWriter.CreateBarcode("SHIP-20240312-7834", BarcodeEncoding.Code128)
.SaveAsPng("shipping-label.png");
' Generate a コード128 barcode to file
BarcodeWriter.CreateBarcode("SHIP-20240312-7834", BarcodeEncoding.Code128) _
.SaveAsPng("shipping-label.png")
QRコードのカスタマイズ。QRCodeWriterは、ロゴの埋め込み、色の変更、エラー訂正レベルをサポートしています。これらの機能は、ML Kitには同等の機能がありません。なぜなら、ML Kitは何も生成しないからです。
// QR code with embedded logo and custom color
QRCodeWriter.CreateQrCode("https://example.com/product/4821", 500)
.AddBrandLogo("company-logo.png")
.ChangeBarCodeColor(System.Drawing.Color.DarkBlue)
.SaveAsPng("product-qr.png");
// QR code with embedded logo and custom color
QRCodeWriter.CreateQrCode("https://example.com/product/4821", 500)
.AddBrandLogo("company-logo.png")
.ChangeBarCodeColor(System.Drawing.Color.DarkBlue)
.SaveAsPng("product-qr.png");
' QR code with embedded logo and custom color
QRCodeWriter.CreateQrCode("https://example.com/product/4821", 500) _
.AddBrandLogo("company-logo.png") _
.ChangeBarCodeColor(System.Drawing.Color.DarkBlue) _
.SaveAsPng("product-qr.png")
PDF処理--Code-38653--@PDFの各ページからネイティブでバーコードを読み取ります。 画像抽出の手順も、別のPDFライブラリを使ったページごとのループ処理も不要です。PDFを直接処理します。
// Read all barcodes from every page of a PDF
var results = BarcodeReader.Read("invoice-batch.pdf");
foreach (var barcode in results)
{
Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Value}");
}
// Read all barcodes from every page of a PDF
var results = BarcodeReader.Read("invoice-batch.pdf");
foreach (var barcode in results)
{
Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Value}");
}
Imports System
' Read all barcodes from every page of a PDF
Dim results = BarcodeReader.Read("invoice-batch.pdf")
For Each barcode In results
Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Value}")
Next
サーバーサイドとクラウドに対応。IronBarcodeは、Windows、Linux、macOS、Docker、Azure Functions、およびAWS Lambda上で動作します。 Google Play開発者サービス、カメラ、モバイルランタイムは不要です。
バイナリ出力 .ToPngBinaryData() は byte[] を直接返します - ディスクに書き込まずにHTTPレスポンスとしてバーコード画像を返すAPIに便利です。
// Generate barcode and return as byte array (e.g., in a web API)
byte[] barcodeBytes = BarcodeWriter.CreateBarcode("ORDER-8821", BarcodeEncoding.QRCode)
.ToPngBinaryData();
// Generate barcode and return as byte array (e.g., in a web API)
byte[] barcodeBytes = BarcodeWriter.CreateBarcode("ORDER-8821", BarcodeEncoding.QRCode)
.ToPngBinaryData();
' Generate barcode and return as byte array (e.g., in a web API)
Dim barcodeBytes As Byte() = BarcodeWriter.CreateBarcode("ORDER-8821", BarcodeEncoding.QRCode) _
.ToPngBinaryData()
機能比較
| フィーチャー | Google ML Kit バーコード | IronBarcode |
|---|---|---|
| .NET / C# API | なし( NuGetパッケージなし) | はい - --CODE-38656--@@@ |
| NuGetパッケージ | なし | コード-38657 |
| バーコード読み取り | はい(Android/iOSのみ) | はい(全プラットフォーム対応) |
| バーコード生成 | なし | はい(50種類以上のフォーマットに対応) |
| QRコード生成 | なし | はい |
| QRロゴ埋め込み | なし | はい |
| PDF入力サポート | なし | はい(ネイティブ) |
| ファイル入力(PNG/JPEG) | はい(InputImage URI経由) | はい |
| カメラ/フレーム入力 | はい(主な使用例) | 画像ファイル経由 |
| サーバーサイド処理 | なし | はい |
| ASP.NET Core のサポート | なし | はい |
| Azure Functions | なし | はい |
| Docker / Linux | なし | はい |
| Windowsアプリのサポート | いいえ(Android/iOSのみ) | はい |
| Google Play サービス部門 | はい(標準モデル) | なし |
| Firebaseへの依存関係(iOS) | はい | なし |
| 非同期/待機 C# API | なし | 同期型( .NETモデルに適合) |
| 1枚の画像に複数のバーコードを表示 | はい | はい |
| コミュニティ.NETバインディング | 非公式、不安定 | 該当なし(ネイティブ.NET) |
| 価格 | 無料(Google Playの一部として提供) | 749ドルから(永久) |
APIコンセプトマッピング
公式の.NET ML Kit APIが存在しないため、このマッピングは概念的なものであり、各ML Kit操作の意図とIronBarcodeにおけるそれに相当するものを示しています。
| MLキット(Kotlin/Javaコンセプト) | IronBarcode (.NET C#) |
|---|---|
| コード-38658 | コード-38659 |
| コード-38660 | コード-38661 |
| コード-38662 | 静止状態 - スキャナーオブジェクトは不要 |
| コード-38663 | CODE-38664に渡されるファイルパスの文字列。 |
| コード-38665 | またはバイト配列のオーバーロード |
| コード-38667 | コード-38668 |
| コード-38669 | CODE-38670の戻り値 - 直接イテレートする。 |
| コード-38671 | 標準的なtry/catch |
| コード-38672 | コード-38673 |
| コード-38674 | コード-38675 |
| コード-38676 | コード-38677(地域データ) |
| コード-38678 | コード-38679 |
| コード-38680 | コード-38681 |
| 生成APIなし | コード-38682 |
| 生成APIなし | コード-38683 |
| CODE-38684--@@ / モデルの選択 | コード-38685--@ / コード-38686--@ / コード-38687--@ |
IronBarcodeを検討すべきタイミング
Android アプリを.NET MAUIまたは.NET 9 に移植する場合。Androidアプリでバーコード スキャンに ML Kit を使用しており、 .NET版を構築している場合は、 IronBarcode が最適なターゲットとなります。 概念的な翻訳は単純明快だ。ファイルを読み込み、結果を取得し、値を反復処理する。
サーバーサイドでのバーコード処理。HTTPエンドポイントを使用してバーコードをスキャンするシナリオ、アップロードされた画像を処理するバックグラウンドジョブ、またはPDFからコードを抽出するドキュメントワークフローなど、あらゆるシナリオが含まれます。 ML Kitはこれらのいずれにも参加できません。
Windowsデスクトップアプリケーション。Windows上で動作するWinForms、WPF、または.NET MAUI 。 ML KitはWindows上では全く動作しません。
Google Play サービスのない環境。Android展開に、Google Play サービスのないデバイス (Enterpriseハードウェア、カスタム AOSP ビルド、Amazon Fire デバイスなど) が含まれている場合、標準の ML Kit モデルは利用できません。 IronBarcodeにはそのような依存関係はありません。
生成と読み取りの同時実行。例えば、配送ラベルの印刷とスキャンの検証など、バーコードの生成と読み取りの両方が必要な場合、 IronBarcodeは同じライブラリ内で両方を処理します。 ML Kitは、生成処理もサーバー側での読み込み処理も行いません。
AzureまたはAWSへのデプロイ。Azure Functions、Linux上のAzure App Service、AWS Lambdaなど、これらのいずれもML Kitをホストすることはできません。 IronBarcodeはそれらすべてをターゲットにしている。
ライセンスと価格
Google ML Kitのバーコードスキャン機能は、AndroidおよびiOSアプリで無料で利用できます。スキャンごとの料金や商用ライセンスは不要です。 その価格設定モデルは、Google Play開発者サービスとバンドルされたネイティブモバイルライブラリという想定された状況においては理にかなっている。
IronBarcodeは、永久ライセンス付きの商用.NETライブラリです。
- Lite: 749ドル — 開発者1名、プロジェクト拠点1箇所 -Plus: 1,499ドル - 最大3名の開発者 -Professional: 2,999ドル(最大10名の開発者まで) -無制限プラン: 5,999ドル — 開発者数無制限
無料トライアルは期間制限なしでご利用いただけます。 試験的に作成された透かしによってバーコードが生成された。 既に文書処理用のサーバーインフラストラクチャに費用を支払っているチームにとって、ライセンス費用は通常、非公式のML Kitバインディングを維持するために必要なエンジニアリング作業のごく一部に過ぎません。
結論
Google ML Kitのバーコードスキャン機能は、AndroidおよびiOSデバイス上でバーコードを高速かつ正確にスキャンするという、設計通りの機能を果たす、優れたライブラリです。 IronBarcodeとの比較は、どちらのライブラリが優れているかというよりも、必要な状況においてどちらのライブラリが存在するかという点に重点が置かれています。
Android向けにKotlinでコードを書き、カメラからスキャンを行う場合は、ML Kitは最適な選択肢です。しかし、Web API、ドキュメント処理サービス、Windowsアプリケーション、クラウド関数、クロスプラットフォームのMAUIアプリなど、 .NET向けにC#でコードを書く場合は、Google ML Kitには対応する機能がありません。 NuGetパッケージも、C# APIも、Googleがサポートするマネージドコードでの使用方法もありません。 IronBarcodeは、 .NETがサポートするすべてのプラットフォームにおいて、読み取りと生成の両方に対応するネイティブ.NETライブラリです。
よくある質問
Google ML Kit BarCode Scanningとは何ですか?
Google ML Kit BarCode Scanningは、C#アプリケーションでバーコードを生成して読み取るための.NETバーコードライブラリです。これは、開発者が.NETプロジェクト用のバーコードソリューションを選択する際に評価するいくつかの選択肢の1つです。
Google ML Kit Barcode ScanningとIronBarcodeの主な違いは何ですか?
IronBarcode は静的でステートレスなAPIを使用しており、インスタンス管理は不要です。IronBarcodeはまた、ネイティブPDFサポート、自動フォーマット検出、およびすべての環境でのシングルキーライセンスを提供します。
IronBarcodeはGoogle ML Kit Barcode Scanningよりライセンスが簡単ですか?
IronBarcodeは単一のライセンスキーで開発環境と本番環境の両方をカバーします。これは、SDKキーとランタイムキーを分離するライセンスシステムと比較して、CI/CDパイプラインとDocker構成を簡素化します。
IronBarcode はGoogle ML Kit Barcode Scanningがサポートしている全てのバーコードフォーマットをサポートしていますか?
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 はGoogle ML Kit Barcode Scanningと比べてどのようにバッチ処理を行いますか?
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インストーラーやランタイムファイルは必要ありません。
Google ML Kitとは異なり、購入前にIronBarcodeを評価することはできますか?
IronBarcodeのトライアルモードでは、完全なデコードされたバーコード値を返します。購入を決定する前に、ご自身のドキュメントで読み取り精度をベンチマークすることができます。
Google ML Kit Barcode ScanningとIronBarcodeの価格の違いは何ですか?
IronBarcodeは、開発および量産をカバーする永続的なシングルデベロッパーライセンスで749ドルからご利用いただけます。価格の詳細とボリュームオプションはIronBarcodeのライセンスページでご覧いただけます。別途ランタイムライセンスは必要ありません。
Google ML Kit BarCode ScanningからIronBarcodeへの移行は簡単ですか?
Google ML Kit BarCode ScanningからIronBarcodeへの移行は、主にインスタンスベースのAPIコールをIronBarcodeの静的メソッドに置き換え、ライセンスの定型文を削除し、結果のプロパティ名を更新します。ほとんどの移行はコードを追加するのではなく、コードを削減します。
IronBarcodeはロゴ入りQRコードを生成できますか?
はい。QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png")は、設定可能なエラー修正機能付きで、ブランド画像をネイティブにQRコードに埋め込みます。カラーQRコードもChangeBarCodeColor()でサポートされています。

