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

Google ML Kitのバーコードスキャン対IronBarcode: .NET開発者が知っておくべきこと

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

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 Services が必要です。カメラフレーム、ファイルURI、またはビットマップから構築されたInputImageオブジェクトを処理します。
  • iOS: CocoaPods を通じて GoogleMLKit/BarcodeScanning として配布されます。 SwiftまたはObjective-Cを使用します。

dotnet add package google-mlkit-barcode はありません。 using Google.MLKit.BarcodeScanning; はありません。 GoogleはML Kit用 for .NETバインディングを公開していません。

コミュニティが維持する Xamarin および MAUI バインディング (例: BarcodeScanning.Native.MauiXamarin.GooglePlayServices.MLKit.BarcodeScanning) は様々な時点で存在してきましたが、共通の課題を抱えています: ML Kit は Android および iOS SDK を頻繁に更新し、個人や小規模チームが管理するバインディングプロジェクトは、基礎となるAPIが変更されると遅れたり、壊れたりする可能性があります。 ML Kitのバーコードスキャナー用のGoogle for .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の実際のパスは次のようになります。

非同期/待機 C# APIはありません。 ML Kit は Android の Task API を addOnSuccessListener および addOnFailureListener コールバックと共に使用します。 これらは.NETの Task<t> および await に対応していません。 バインディングレイヤーは、コールバックベースのAndroidの非同期処理と.NETのTPL(テーブルトップレベルライブラリ)の間で適応する必要があるが、これは容易ではない変換であり、コミュニティのバインディングでは一貫性のない処理となっている。

.NET 依存関係注入の統合はありません。 BarcodeScanning.getClient(options) は 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はアーキテクチャ的に互換性がありません。

カメラまたはフレーム入力のみ — ファイルなし、PDFなし。 ML Kit の InputImageByteBuffer、または Android ファイルシステム上のファイルURIから構築できます。 PDF文書の処理、ページの反復処理、複数ページのTIFFファイルの処理といった概念は存在しません。 サーバー側のドキュメント処理は、本製品の範囲外です。

Google Play Services 依存 (バンドルされていないモデル)。 バンドルされていない ML モデル バリアント (com.google.android.gms:play-services-mlkit-barcode-scanning) は Google Play Services を通じて実行されます。 Playサービスがないデバイス — カスタムAndroidビルド、特定の企業デバイス、Amazon Fireタブレット — はそのバリアントを使用できません。 バンドルされたモデルオプション (com.google.mlkit:barcode-scanning) は Play Services なしで動作しますが、APK サイズが約2.4 MB 増加します。

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 ?: "") }
Text
// .NET C#: IronBarcode
// NuGet: dotnet add package BarCode
using IronBarCode;

var results = BarcodeReader.Read("captured-image.jpg");
foreach (var barcode in results)
{
    Console.WriteLine($"{barcode.Format}: {barcode.Value}");
}

構造的な違いは、構文だけにとどまらない。 ML Kit バージョンはスキャナーオブジェクトを設定し、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,
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128
};

var results = BarcodeReader.Read("image.jpg", options);
foreach (var barcode in results)
{
    Console.WriteLine($"Format: {barcode.Format}, Value: {barcode.Value}");
}

ExpectBarcodeTypes フラグは、ML Kit の setBarcodeFormats() に相当します。 これを設定すると検索範囲が絞り込まれ、パフォーマンスが向上しますが、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/5ITF経由はい
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-7834", BarcodeEncoding.Code128)
    .SaveAsPng("shipping-label.png");
C#

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");

PDF処理。 BarcodeReader.Read("document.pdf") は、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}");
}

サーバーサイドとクラウドに対応。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();

機能比較

フィーチャーGoogle ML Kit バーコードIronBarcode
.NET / C# APIなし( NuGetパッケージなし)はい — using IronBarCode;
NuGetパッケージNoneBarCode
バーコード読み取りはい(Android/iOSのみ)はい(全プラットフォーム対応)
バーコード生成なしはい(50種類以上のフォーマットに対応)
QRコード生成なしはい
QRロゴ埋め込みなしはい
PDF入力サポートなしはい(ネイティブ)
ファイル入力(PNG/JPEG)はい(InputImage URI経由)はい
カメラ/フレーム入力はい(主な使用例)画像ファイル経由
サーバーサイド処理なしはい
ASP.NET Core のサポートなしはい
Azure Functionsなしはい
Docker / Linuxなしはい
Windowsアプリのサポートいいえ(Android/iOSのみ)はい
Google Play サービス部門はい(バンドルされていないモデル)なし
Firebase依存いいえ (2020年以降単独で)なし
非同期/待機 C# APIなし同期
1枚の画像に複数のバーコードを表示はいはい
コミュニティ.NETバインディングコミュニティが保守しており、一方ではファーストパーティではありません該当なし(ネイティブ.NET)
価格無料(オンデバイスAPI)749ドルから(永久)

APIコンセプトマッピング

公式 for .NET ML Kit APIが存在しないため、このマッピングは概念的なものであり、各ML Kit操作の意図とIronBarcodeにおけるそれに相当するものを示しています。

MLキット(Kotlin/Javaコンセプト)IronBarcode (.NET C#)
BarcodeScannerOptions.Builder()new BarcodeReaderOptions { }
.setBarcodeFormats(FORMAT_QR_CODE)ExpectBarcodeTypes = BarcodeEncoding.QRCode
BarcodeScanning.getClient(options)静止状態 - スキャナーオブジェクトは不要
InputImage.fromFilePath(context, uri)ファイルパス文字列を BarcodeReader.Read() に渡します。
InputImage.fromBitmap(bitmap, rotation)BarcodeReader.Read(stream) またはバイト配列オーバーロード
scanner.process(inputImage)BarcodeReader.Read(path, options)
.addOnSuccessListener { barcodes -> }Read() の戻り値 — 直接反復します。
.addOnFailureListener { e -> }標準的なtry/catch
barcode.rawValuebarcode.Value
barcode.formatbarcode.Format
barcode.boundingBox結果オブジェクトにおけるリージョンデータ
Barcode.FORMAT_QR_CODEBarcodeEncoding.QRCode
Barcode.FORMAT_CODE_128BarcodeEncoding.Code128
生成APIなしBarcodeWriter.CreateBarcode()
生成APIなしQRCodeWriter.CreateQrCode()
Speed / モデル選択ReadingSpeed.Balanced / .Faster / .Detailed

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 Servicesがない環境。 あなたのAndroid展開にGoogle Play Servicesを持たないデバイスが含まれている場合 — 企業ハードウェア、カスタム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 Barcode ScanningのオンデバイスAPIは、AndroidおよびiOSアプリ向けに無料です。スキャンごとの料金はなく、商用ライセンスも必要ありません。 その価格モデルはその意図されたコンテキストに適合しています — MavenおよびCocoaPodsを通じて配布されたネイティブモバイルライブラリです。

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ライブラリです。

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日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。