完全開示:当社は、この比較に含まれるライブラリの1つであるIronQRの開発元であるIron Softwareの開発者リレーションズチームです。とはいえ、正直な評価は、マーケティングの誇張よりも、すべての人にとってより良いものになると信じています。私たちは、私たちの方法論を示し、私たちの偏見を認め、コード自身に語らせます。 当社は、各C# QRコードライブラリに、簡単なQR生成、画像からのQR読み取り、カスタマイズの深さ、クロスプラットフォームサポート、ライセンスコストという同一の評価基準を適用しました。以下は、.NETエコシステムにおける11の注目すべきQRコードライブラリの比較結果であり、プロジェクトに最適なものを最初から選択するのに役立ちます。 私たちが取り上げるライブラリの1つである を使用した場合、Visual Studioでの3行のQR生成は以下のようになります。 IronQR using IronQr; using IronSoftware.Drawing; QrCode qr = QrWriter.Write("https://example.com"); AnyBitmap bitmap = qr.Save(); bitmap.SaveAs("myqr.png"); IronQRのQRコード出力例 そのシンプルさは基本です。本当の問題は、倉庫スキャナーから破損したQRコードを る必要がある場合、ブランドロゴを埋め込む必要がある場合、Linuxコンテナをターゲットにする必要がある場合、またはバッチジョブで何千ものコードを処理する必要がある場合に何が起こるかということです。そこでライブラリは分岐し、この比較がその価値を発揮します。 読み取 TL;DR: マスター比較表 詳細に入る前に、全体像を見てみましょう。この表は、.NETプロジェクト用のQRライブラリを選択する際に最も重要な次元を捉えています。 ライブラリ 生成 読み取り ロゴ/スタイリング マイクロQR クロスプラットフォーム ライセンス NuGetダウンロード数 IronQR ✅ ✅ ML駆動 ✅ フル ✅ + RMQR ✅ Win/Mac/Linux/Mobile 商用(749ドル〜) 約56K QRCoder ✅ ❌ ✅ 中程度 ✅ ⚠️ 部分的(System.Drawing) MIT(無料) 約68M ZXing.Net ✅ ✅ ❌ 最小限 ❌ ⚠️ バインディング経由 Apache 2.0(無料) 約32M Net.Codecrete.QrCodeGenerator ✅ ❌ ❌ ❌ ✅ MIT(無料) 約4.1M SkiaSharp.QrCode ✅ ❌ ✅ カスタム形状 ❌ ✅ MIT(無料) 約1.2M Aspose.BarCode ✅ ✅ ✅ ✅ ✅ 商用(999ドル〜) 約5.4M Syncfusion Barcode ✅ ❌ ✅ 中程度 ❌ ✅ (UIコントロール) 商用(コミュニティ版無料) 約2M+ Spire.Barcode ✅ ✅ ✅ ロゴ埋め込み ❌ ⚠️ (System.Drawing) 商用(599ドル〜) 約450K IronBarcode ✅ ✅ ✅ ✅ マイクロQR ✅ Win/Mac/Linux 商用(749ドル〜) 約1.2M Dynamsoft Barcode Reader ❌ ✅ 高速 N/A ✅ ✅ 商用(1,249ドル〜/年) 約250K BarcodeLib ✅ ❌ ❌ ❌ ⚠️ (System.Drawing) Apache 2.0(無料) 約4.5M 表1:主要な選択基準における11の.NET QRコードライブラリのマスター比較。ダウンロード数は2026年初頭のおおよその値です。 この記事の残りは、コード、トレードオフ、および正直な評価とともに、各行を詳しく説明します。 これらのライブラリをどのように評価しましたか? 当社は、各ライブラリを7つの基準で評価しました。これらの基準は、実際の選択決定でどの程度頻繁に影響するかで重み付けされました。 — 文字列、URL、構造化データ(vCard、Wi-Fi認証情報)からQRコードを作成できますか? QR生成 — 画像、スキャン、またはPDFからQRコードをデコードできますか?破損または回転したコードをどのように処理しますか? QR読み取り — ロゴ埋め込み、色制御、モジュール形状のスタイリング、エラー訂正設定 カスタマイズ — 標準QR、マイクロQR、RMQR(長方形マイクロQR) QRフォーマットサポート — Windows、Linux、macOS、およびDockerコンテナ内でSystem.Drawingのハックなしでクリーンに実行されますか? クロスプラットフォーム — オープンソース対商用、開発者ごとの価格設定、スイート割引 ライセンスとコスト — APIリファレンスの質、チュートリアルの有無、コミュニティの規模、アクティブなメンテナンス ドキュメントとエコシステム すべてのコード例は をターゲットとし、トップレベルステートメントを使用しています。.NET 10で関連する改善が導入された場合は、それらを注記します。 .NET 8 (LTS) どのQRライブラリを選ぶべきか?決定フレームワーク 下の11のライブラリプロファイルはスキップしてください。もし、あなたがすでに制約を知っているのであれば。ここでは、迅速な方法を示します。 → または 。どちらもMITライセンスです。QRCoderはより多くのレンダラーとペイロードヘルパーを備えています。Net.Codecreteは軽量で、System.Drawingを完全に回避します。 「無料で、依存関係なしでQRコードを生成する必要があります。」 QRCoder Net.Codecrete.QrCodeGenerator → (ML駆動の読み取り、破損コードに対する最高の精度)、 (無料、実績があり、最も広範なフォーマットサポート)、または (エンタープライズスイート、高価)。 「QRコードを生成して読み取る必要があります。」 IronQR ZXing.Net Aspose.BarCode → 、 、または 。これら3つは、クロスプラットフォームのデプロイメントを妨げるSystem.Drawingの依存関係を回避します。 「Linux/Dockerにデプロイしており、System.Drawingを使用できません。」 IronQR SkiaSharp.QrCode Net.Codecrete.QrCodeGenerator → は、生の生成ベンチマークでリードしています。読み取りパフォーマンスについては、 は高スループットスキャン用に特別に設計されています。 「パフォーマンスとメモリフットプリントが重要です。」 SkiaSharp.QrCode Dynamsoft Barcode Reader → 持っているものを使用してください。ライセンスまたはメンテナンスの観点からは、スイートにすでに含まれている場合に、別のベンダーのQRライブラリを追加することはめったに意味がありません。 「すでにAspose/Syncfusion/Iron Softwareスイートを使用しています。」 → には、MAUIおよびBlazorの統合ガイドが明示されています。Microsoft MVPのJeff Fritzは、IronQRとBlazorを使用してQRベースのデジタル名刺アプリを 。これは、この正確なパターンの実際の例です。 「Blazor/MAUIモバイルアプリでQRスキャンを構築しています。」 IronQR 構築しました 比較される11の.NET QRコードライブラリ 1. IronQR — ML駆動のQR読み取りおよび生成、クロスプラットフォームサポート付き IronQRは、Iron Softwareの専用QRコードライブラリであり、より広範なIronBarcode製品とは別個のものです。その際立った特徴は、機械学習モデル( ベース)であり、不完全な画像、回転した、部分的に隠された、または奇妙な角度で撮影されたQRコードを、多くの場合わずか数行のコードで検出および読み取ることができます。 ONNX また、QRコードオブジェクトを簡単に作成することもでき、QRコードを画像でスタイリングし、カスタム色を追加し、QR画像をさまざまな出力形式に保存することをサポートしています。 生成: using IronQr; using IronSoftware.Drawing; // ロゴ付きのスタイリングされたQRコードを生成 var options = new QrOptions(QrErrorCorrectionLevel.High, 20); QrCode qr = QrWriter.Write("https://example.com", options); var style = new QrStyleOptions { Dimensions = 300, Margins = 10, Color = new Color("#2E75B6"), Logo = new QrLogo { Bitmap = AnyBitmap.FromFile("logo.png"), Width = 80, Height = 80 } }; AnyBitmap styledQr = qr.Save(style); styledQr.SaveAs("branded-qr.png"); IronQR生成QR出力 読み取り: using IronQr; using IronSoftware.Drawing; var reader = new QrReader(); var input = new QrImageInput(AnyBitmap.FromFile("scanned-qr.jpg")); IEnumerable<QrResult> results = reader.Read(input); foreach (var result in results) Console.WriteLine($"Value: {result.Value}"); IronQR読み取り出力 MLモデルは、IronQRをこのリストの他のすべてのライブラリから区別するものです。当社のテストでは、ZXing.Netや基本的な画像処理リーダーが何も返さなかった会議バッジの写真や傾いたスマートフォンスクリーンショットからQRコードを正常にデコードしました。トレードオフはパッケージサイズであり、ONNXモデルは重量を追加します。読み取り機能が不要な場合は、IronQR.SlimがMLモデルなしで出荷され、大幅に軽量です。 強み: ML駆動の読み取りにより、破損、回転、部分的に隠されたQRコードを処理し、精度を優先します。 QRコード、マイクロQR、RMQR(長方形マイクロQR)フォーマットをサポートします。 フルスタイリングAPI:色、ロゴ、丸いモジュール、マージン。 クロスプラットフォーム:Windows、macOS、Linux、iOS、Android、Docker、Azure、AWS。 非同期読み取りサポート(ReadAsync)はサーバーワークロード向けです。 PNG画像、JPG、マルチページTIFFなどの複数の形式に保存できます。 ユーザーフレンドリーなAPIにより、使用が簡単です。 制限: 商用ライセンスが必要です(デプロイメントごとに開発者あたり749ドル〜)。 MLモデルのため、フルパッケージはオープンソースの代替品よりも重いです。 は、成熟したオープンソースオプションよりも低く、新しい製品です(約2023年発売)。 NuGetダウンロード数 生成専用プロジェクトでは、MLのオーバーヘッドは必要ない場合があります。 生成と読み取りの両方が必要なプロジェクト。特にスキャン条件が完璧でない場合(モバイルアプリ、倉庫スキャン、会議/イベントシナリオ)。 は、IronQRとBlazorを使用したリアルタイムQR生成とカスタムブランド設定の例を示しています。 最適: Jeff Fritz QR名刺ケーススタディ 2. — 最も人気のあるオープンソースQRジェネレーター QRCoder QRCoderライブラリはNuGetで最もダウンロードされているQRコードパッケージであり、 を誇ります。元々は2013年にRaffael Herrmannによって作成され、現在は されており、QRコードの (読み取りではない)に特化した純粋なC#実装です。 6,800万ダウンロード以上 Shane32によって保守 生成 using QRCoder; // QRコードを生成し、PNGバイトとして保存 using var qrGenerator = new QRCodeGenerator(); using var qrCodeData = qrGenerator.CreateQrCode("https://example.com", QRCodeGenerator.ECCLevel.H); using var pngQrCode = new PngByteQRCode(qrCodeData); byte[] qrCodeImage = pngQrCode.GetGraphic(20); File.WriteAllBytes("qrcoder-output.png", qrCodeImage); QRCoder出力画像 QRCoderは複数のレンダラーを提供しています:PngByteQRCode(クロスプラットフォーム、System.Drawing依存なし)、QRCode(System.Drawingベース、Windowsのみ)、SvgQRCode、AsciiQRCodeなど。また、Wi-Fi認証情報、vCard、ブックマークなどの構造化データ用のペイロードジェネレーターも含まれており、これらの文字列を手動でフォーマットする手間が省けます。 強み: MITライセンス、商用利用は完全に無料 6,800万以上のNuGetダウンロード、大規模なコミュニティ採用と実績のある安定性 System.Drawingを回避するPngByteQRCodeを含む複数のレンダラーオプション 組み込みペイロードジェネレーター(Wi-Fi、vCard、ジオロケーション、カレンダーイベント) マイクロQRコードサポート .NET Standardターゲットへの依存関係はゼロ 制限: 、QRコード画像ファイルを読み取ったりデコードしたりすることはできません 生成のみ 一部のレンダラー(QRCodeなど)はSystem.Drawing.Commonに依存しており、.NET 6以降はWindowsのみです ロゴ埋め込みは組み込まれていません(自分で画像を合成する必要があります) 高度なスタイリングはありません(モジュール形状、グラデーション) QRコード生成のみが必要なプロジェクト、特に予算がゼロの場合。Wi-Fi QRコードやvCardを生成する必要があり、コードをまったく読み取る必要がない場合、QRCoderはほとんどの.NET開発者にとって実用的なデフォルトの選択肢です。 最適: 3. — バーコードライブラリの「スイスアーミーナイフ」 ZXing.Net (「Zebra Crossing」)は、元のJava ZXingライブラリの です。QRコード、DataMatrix、Aztec、PDF417、UPC、EAN、Code128など、15以上のバーコードフォーマットをサポートする汎用バーコードライブラリです。QRサポートは、その広範な機能の一部です。 ZXing.Net .NETポート using ZXing; using ZXing.Common; using ZXing.QrCode; // QRコードを生成 var writer = new BarcodeWriterPixelData { Format = BarcodeFormat.QR_CODE, Options = new QrCodeEncodingOptions { Height = 250, Width = 250, Margin = 1 } }; var pixelData = writer.Write("https://example.com"); // QRコードの読み取りにはバインディングパッケージが必要です(例:ZXing.Net.Bindings.SkiaSharp) ZXing.Net出力 ZXing.Netは、レンダリングと読み取りのためにプラットフォーム固有のバインディングパッケージを必要とします。コアパッケージはエンコード/デコードロジックを提供します。ターゲットプラットフォームに応じて、ZXing.Net.Bindings.Windows.Compatibility、ZXing.Net.Bindings.SkiaSharp、またはZXing.Net.Bindings.ImageSharpを追加します。このモジュール式のアプローチは柔軟ですが、統合の複雑さを増します。 強み: Apache 2.0ライセンス、商用利用は無料 単一のライブラリで生成と読み取りの両方が可能 QRコード以外の15以上のバーコードフォーマットをサポート 、実績があり、広範なコミュニティ知識 3,200万以上のNuGetダウンロード SkiaSharp、ImageSharp、OpenCVなどのバインディングが利用可能 制限: QR固有の機能は基本的で、ロゴ埋め込みや高度なスタイリングはありません 破損/回転したQRコードに対する読み取り精度は、ML駆動のソリューションと比較して中程度です バインディングパッケージは依存関係管理の複雑さを増します APIデザインは古く、最新の.NETライブラリよりも流暢ではありません アクティブなメンテナンスペースは鈍化しました(コミュニティによって維持されています) QRコードと従来のバーコードの両方のサポートが必要なプロジェクト(小売、物流)で、無料の実績のあるオプションを求めている場合。QR固有の機能(スタイリングやML駆動の読み取りなど)が、広範なバーコードフォーマットカバレッジよりも優先される場合は、専用のQRライブラリの方が適しています。 最適: 4. Net.Codecrete.QrCodeGenerator — 軽量で標準に焦点を当てた Net.Codecrete.QrCodeGeneratorは、Manuel BleichenbacherによるクリーンでミニマルなQRコード生成ライブラリです。これは、Project NayukiのJava QRコードジェネレーターの であり、正確性と標準準拠( )に焦点を当てています。 .NET翻訳 ISO/IEC 18004 using Net.Codecrete.QrCodeGenerator; var qr = QrCode.EncodeText("https://example.com", QrCode.Ecc.Medium); string svg = qr.ToSvgString(4); File.WriteAllText("output.svg", svg); Net.Codecrete.QrCodeGeneratorを使用した例の出力 ( )は、焦点を絞ったライブラリとしてはよく採用されています。その際立った品質は、System.Drawingへの依存関係がゼロであることです。SVG、XAMLパスデータ、PNG、BMPをネイティブに生成します。これは、クロスプラットフォームの.NETプロジェクトや、Dockerで実行されるASP.NET Coreサービスに最適です。 約410万NuGetダウンロード 強み: MITライセンス、完全に無料 System.Drawing依存なし、真にクロスプラットフォーム フットプリントが小さく、生成が速い SVGおよびXAML出力が組み込まれています(WPF、WinUI、Webシナリオに便利) すべての40のQRバージョンとすべての4つのエラー訂正レベルの正確な実装 広範なサンプルプロジェクト(WinForms、WPF、ASP.NET Core、SkiaSharp、ImageSharp) 制限: 、QR読み取り機能はありません 生成のみ ロゴ埋め込みや高度なスタイリング機能はありません QRCoderのペイロードジェネレーターと比較してカスタマイズが限られています QRCoderまたはZXing.Netと比較して、コミュニティコンテンツとチュートリアルが少ない SVG出力とSystem.Drawingの負担なしで、小さく正確なクロスプラットフォームQRジェネレーターを必要とする開発者。デプロイターゲットがLinuxまたはDockerで、生成のみが必要な場合は、このライブラリは真剣に検討する価値があります。 最適: 5. SkiaSharp.QrCode — 高速なクロスプラットフォーム生成 SkiaSharp.QrCode by は、SkiaSharpをベースにしたパフォーマンス重視のQR生成ライブラリです。System.DrawingのGDI+の制限を回避し、SkiaSharpのハードウェアアクセラレーションを通じてネイティブレベルのパフォーマンスを提供するように特別に作成されました。 guitarrapc using SkiaSharp.QrCode.Image; // ワンライナー:生成して保存 QRCodeImageBuilder.SavePng("https://example.com", "qrcode.png"); // またはカスタム設定で var pngBytes = new QRCodeImageBuilder("https://example.com") .WithSize(512, 512) .WithErrorCorrection(ECCLevel.H) .ToByteArray(); SkiaSharp.QrCodeワンライナー出力 プロジェクトリポジトリからのベンチマーク結果は、生成タスクにおいてSkiaSharp.QrCodeがQRCoderや他の.NET QRライブラリよりも速度とメモリ割り当ての両方で優れていることを示しています。中間バッファ割り当てを回避し、SkiaSharpキャンバスへのゼロコピーレンダリングを実現します。 強み: MITライセンス、商用利用は無料 最高クラスの生成パフォーマンス(ベンチマーク済み) 最小限のメモリ割り当て、高スループットシナリオでのGC負荷が低い NativeAOT対応(Ahead-of-Timeコンパイルサポート) カスタムモジュール形状(円、角丸長方形)によるスタイリングされたQRコード Windows、Linux、macOS、iOS、Android、WebAssemblyで動作 制限: 、QR読み取り機能はありません 生成のみ SkiaSharpネイティブ依存関係が必要です(プラットフォーム固有のNuGetパッケージ) QRCoderまたはZXing.Netよりもコミュニティが小さい ペイロードジェネレーター(Wi-Fi、vCard)はありません。それらの文字列は自分でフォーマットする必要があります。 UTF-8のみ、ISO-8859-2またはShift JISエンコーディングはありません パフォーマンスとメモリ効率が最も重要な、大規模なQRコード生成(例:チケットシステム、一括ラベル生成)を行うサーバーアプリケーション。プロジェクトで既にSkiaSharpを使用している場合にも最適です。 最適: 6. Aspose.BarCode — QRコード生成のためのエンタープライズグレードのバーコードスイート は、QRコード、マイクロQR、DataMatrix、PDF417、およびすべての一般的な1Dフォーマットを含む80以上のバーコードシンボルをサポートする包括的な商用ライブラリです。これは、ドキュメント処理に使用されるエンタープライズで利用される、より広範なAsposeエコシステムの一部です。 Aspose.BarCode for .NET using Aspose.BarCode.Generation; using Aspose.BarCode.BarCodeRecognition; // 生成 var generator = new BarcodeGenerator(EncodeTypes.QR, "https://example.com"); generator.Parameters.Barcode.XDimension.Pixels = 4; generator.Save("aspose-qr.png", BarCodeImageFormat.Png); // 読み取り using var reader = new BarCodeReader("aspose-qr.png", DecodeType.QR); foreach (var result in reader.ReadBarCodes()) Console.WriteLine($"Type: {result.CodeTypeName}, Text: {result.CodeText}"); Aspose.BarCode QR出力 Aspose.BarCode読み取り出力 Aspose.BarCodeは、破損コードに対する