C#でバーコードSDKを構築:1つのライブラリでバーコードを生成、読み取り、スキャン
ほとんどのバーコードSDKのC#プロジェクトは、同じような悩みから始まります。それは、生成、読み取り、エクスポートのための別々のライブラリをつなぎ合わせ、その後、バーコードの種類やプラットフォーム間の互換性の問題に取り組むことです。 IronBarcodeは、そうした摩擦を完全に解消します。 これは単一の.NETライブラリで、リニアバーコードやQRコードの作成から、不完全な画像やPDFファイルからの複数のバーコードのスキャンまで、開発者が専用のバーコードスキャナSDKに通常求めるすべてのバーコード操作を処理します。
この記事では、 IronBarcodeをバーコードSDKプロジェクト向けのオールインワンソリューションたらしめている主要な機能、すなわちバーコード画像の生成、ファイルからのバーコードデータの読み取り、そして本番環境での精度を実現するための高度なスキャン設定の構成について解説します。 以下のコード例はすべて、 .NETコンソールアプリケーションでそのまま実行できます。
.NETプロジェクトにおいて、バーコードSDKはどのような機能を持つべきでしょうか?
高性能なバーコードスキャナーSDKは、バーコードの生成、画像や文書からのバーコードデータの読み取り、そして実際のスキャン品質の問題への対処という、3つの重要な操作を網羅する必要があります。 最適なバーコードリーダーSDKは、それぞれに個別のライブラリを必要とせずに、幅広いシンボル体系をサポートしています。
IronBarcodeは、リニアバーコード(Code 128、Code 39、UPC-A、UPC-E、EAN-8、EAN-13、GS1 DataBar)と2Dバーコード(QRコード、Data Matrix、PDF417、Aztec、MaxiCode)の両方をサポートしています。 この対応範囲により、 .NET開発者は、小売店のUPC-Aラベルから倉庫のQRコードまで、あらゆるものを単一のバーコードDLLを使用して処理でき、追加の依存関係やプラットフォーム固有のネイティブバイナリは不要になります。 無料トライアルライセンスでは、 30日間すべての機能にフルアクセスできます。
このライブラリは、Windows、macOS、Linuxの各オペレーティングシステムで動作し、 .NET MAUIおよびAndroidアプリの展開をサポートしています。 また、ビジネス文書内にバーコードを埋め込む必要があるシナリオに対応するため、Crystal Reportsなどのレポート作成ツールとの連携も可能です。 プロジェクトがコンソールアプリであろうと、 .NET MAUIモバイルスキャナーであろうと、数千枚の画像を処理するサーバーサイドバーコードリーダーであろうと、同じバーコードスキャナーSDK APIですべてに対応できます。
How Can Developers Generate Barcode Images in C#?
BarcodeWriter.CreateBarcode メソッドは、文字列値と指定されたシンボル体系から、単一の呼び出しでバーコード画像を生成します。 返された GeneratedBarcode オブジェクトは、PNG、BMP、JPEG、PDF、HTML ファイルとして保存したり、SVG などのベクター形式でエクスポートしたりできます。
using IronBarCode;
// Generate a Code 128 barcode image from string data
var barcode = BarcodeWriter.CreateBarcode("PKG-2025-88421", BarcodeEncoding.Code128);
barcode.AddAnnotationTextAboveBarcode("Shipping Label");
barcode.AddBarcodeValueTextBelowBarcode();
barcode.ResizeTo(500, 150);
barcode.SaveAsPng("shipping-label.png");
// Create a styled QR code with a logo
var qrCode = QRCodeWriter.CreateQrCode("https://example.com/track/88421", 300);
qrCode.ChangeBarCodeColor(IronSoftware.Drawing.Color.DarkSlateGray);
qrCode.SaveAsPng("tracking-qr.png");
using IronBarCode;
// Generate a Code 128 barcode image from string data
var barcode = BarcodeWriter.CreateBarcode("PKG-2025-88421", BarcodeEncoding.Code128);
barcode.AddAnnotationTextAboveBarcode("Shipping Label");
barcode.AddBarcodeValueTextBelowBarcode();
barcode.ResizeTo(500, 150);
barcode.SaveAsPng("shipping-label.png");
// Create a styled QR code with a logo
var qrCode = QRCodeWriter.CreateQrCode("https://example.com/track/88421", 300);
qrCode.ChangeBarCodeColor(IronSoftware.Drawing.Color.DarkSlateGray);
qrCode.SaveAsPng("tracking-qr.png");
Imports IronBarCode
' Generate a Code 128 barcode image from string data
Dim barcode = BarcodeWriter.CreateBarcode("PKG-2025-88421", BarcodeEncoding.Code128)
barcode.AddAnnotationTextAboveBarcode("Shipping Label")
barcode.AddBarcodeValueTextBelowBarcode()
barcode.ResizeTo(500, 150)
barcode.SaveAsPng("shipping-label.png")
' Create a styled QR code with a logo
Dim qrCode = QRCodeWriter.CreateQrCode("https://example.com/track/88421", 300)
qrCode.ChangeBarCodeColor(IronSoftware.Drawing.Color.DarkSlateGray)
qrCode.SaveAsPng("tracking-qr.png")
生成されたバーコード画像

BarcodeWriterクラスは、文字列、バイト配列、またはストリームとしてデータを受け入れるため、さまざまなデータソースに対応できる柔軟性を備えています。 BarcodeEncoding 列挙型はシンボルを制御します。QR コードの場合は BarcodeEncoding.QRCode を、UPC-A 小売ラベルの場合は BarcodeEncoding.UPCA を渡します。または、サポートされているバーコード形式のいずれかを指定します。 スタイル付きQRコードの場合、専用のQRCodeWriterクラスはエラー訂正レベルとロゴの埋め込みをサポートしており、ブランドコードを簡単に作成できます。
GeneratedBarcodeオブジェクトは、余白、色、注釈テキストなどのバーコードプロパティをカスタマイズするためのメソッドも提供します。 バーコード画像は、ラスター画像形式(PNG、BMP、JPEG)およびベクター形式でエクスポートできるほか、Webアプリケーション向けにHTMLに直接レンダリングすることも可能です。 その他の出力オプションについては、バーコード作成例を参照してください。
バーコードリーダーは画像ファイルとPDFファイルでどのように動作するのですか?
BarcodeReader.Read メソッドは、画像ファイルのパス、バイト配列、ビットマップ、またはストリームを受け取り、入力に含まれるすべてのバーコードを含む BarcodeResults コレクションを返します。 各 BarcodeResult には、バーコード値、エンコードタイプ、ページ番号、バイナリデータ、およびバーコード画像領域が含まれます。
using IronBarCode;
// Use the barcode reader to decode all barcodes from an image file
var results = BarcodeReader.Read("multiple-barcodes.png");
foreach (var result in results)
{
Console.WriteLine($"Type: {result.BarcodeType} | Value: {result.Value}");
}
// The barcode reader also scans multi-page PDF documents
var pdfResults = BarcodeReader.ReadPdf("invoice-batch.pdf");
foreach (var item in pdfResults)
{
Console.WriteLine($"Page {item.PageNumber}: {item.Value}");
}
using IronBarCode;
// Use the barcode reader to decode all barcodes from an image file
var results = BarcodeReader.Read("multiple-barcodes.png");
foreach (var result in results)
{
Console.WriteLine($"Type: {result.BarcodeType} | Value: {result.Value}");
}
// The barcode reader also scans multi-page PDF documents
var pdfResults = BarcodeReader.ReadPdf("invoice-batch.pdf");
foreach (var item in pdfResults)
{
Console.WriteLine($"Page {item.PageNumber}: {item.Value}");
}
Imports IronBarCode
' Use the barcode reader to decode all barcodes from an image file
Dim results = BarcodeReader.Read("multiple-barcodes.png")
For Each result In results
Console.WriteLine($"Type: {result.BarcodeType} | Value: {result.Value}")
Next
' The barcode reader also scans multi-page PDF documents
Dim pdfResults = BarcodeReader.ReadPdf("invoice-batch.pdf")
For Each item In pdfResults
Console.WriteLine($"Page {item.PageNumber}: {item.Value}")
Next
バーコード読み取り出力

バーコードリーダーは、デフォルトで主要なシンボル体系すべてに対応したバーコード認識機能を備えており、開発者がスキャンするバーコードの種類を指定する必要なく、直線型バーコード、2次元バーコード、QRコードを自動的に検出します。 PDFをスキャンする際、ReadPdfはすべてのページを処理し、ページ番号を付加した結果を返します。これは、文書のインデックス作成やアーカイブ作業に最適です。
コレクション内の各 BarcodeResult は、デコードされたバーコードデータを文字列とバイト配列の両方として提供します。 これは、データマトリックスコードやバイナリデータをエンコードするその他のシンボル体系を処理する際に特に役立ちます。 バーコードリーダーの読み取り結果には、バーコードの位置座標も含まれるため、アプリケーションは各コードがソース画像ファイル内のどこに表示されていたかをマッピングできます。フォルダ全体の画像をバッチ処理する場合は、マルチスレッドを有効にして並列実行できるように、ファイルパスの文字列(IEnumerable<string>)をバーコードリーダーに渡します。
バーコードスキャナーSDKは、実際の画像品質をどのように処理できるのか?
倉庫のカメラ、モバイル端末で撮影した画像、スキャンした文書など、現実世界のバーコード画像は、ピクセル単位で完璧であることは稀である。 BarcodeReaderOptions クラスは、スキャン速度、想定されるシンボル体系、画像補正フィルター、マルチスレッドバッチ処理などを細かく制御できるため、破損したり歪んだりした入力に対しても非常に正確なバーコード認識を実現できます。
using IronBarCode;
// Configure the barcode reader for challenging, real-world image quality
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Detailed,
ExpectMultipleBarcodes = true,
ExpectBarcodeTypes = BarcodeEncoding.AllOneDimensional | BarcodeEncoding.QRCode,
Multithreaded = true,
MaxParallelThreads = 4,
ImageFilters = new ImageFilterCollection
{
new SharpenFilter(),
new ContrastFilter()
}
};
// Scan multiple barcodes from a noisy image with high accuracy
var results = BarcodeReader.Read("camera-capture.jpg", options);
foreach (var barcode in results)
{
Console.WriteLine($"Detected: {barcode.BarcodeType} — {barcode.Value}");
}
using IronBarCode;
// Configure the barcode reader for challenging, real-world image quality
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Detailed,
ExpectMultipleBarcodes = true,
ExpectBarcodeTypes = BarcodeEncoding.AllOneDimensional | BarcodeEncoding.QRCode,
Multithreaded = true,
MaxParallelThreads = 4,
ImageFilters = new ImageFilterCollection
{
new SharpenFilter(),
new ContrastFilter()
}
};
// Scan multiple barcodes from a noisy image with high accuracy
var results = BarcodeReader.Read("camera-capture.jpg", options);
foreach (var barcode in results)
{
Console.WriteLine($"Detected: {barcode.BarcodeType} — {barcode.Value}");
}
Imports IronBarCode
' Configure the barcode reader for challenging, real-world image quality
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.Detailed,
.ExpectMultipleBarcodes = True,
.ExpectBarcodeTypes = BarcodeEncoding.AllOneDimensional Or BarcodeEncoding.QRCode,
.Multithreaded = True,
.MaxParallelThreads = 4,
.ImageFilters = New ImageFilterCollection From {
New SharpenFilter(),
New ContrastFilter()
}
}
' Scan multiple barcodes from a noisy image with high accuracy
Dim results = BarcodeReader.Read("camera-capture.jpg", options)
For Each barcode In results
Console.WriteLine($"Detected: {barcode.BarcodeType} — {barcode.Value}")
Next
ノイズの多いバーコード画像スキャンの出力

ExpectBarcodeTypesを特定のシンボル体系のサブセットに設定する(すべての種類をスキャンするのではなく)ことで、速度と精度の両方が劇的に向上します。 ReadingSpeed列挙型には、Faster、Balanced、Detailed、ExtremeDetailの4つのレベルがあり、開発者は処理時間とバーコード認識の精度とのトレードオフを調整できます。 ImageFilterCollectionは、スキャンエンジンがバーコード画像を処理する前に、シャープ化、コントラスト調整、適応型閾値処理などの前処理フィルタを適用します。
ExpectMultipleBarcodesフラグは、最初の一致が見つかった後もスキャンを継続するようにエンジンに指示するもので、1枚のラベルや文書ページ上の複数のバーコードをスキャンする必要がある場合に不可欠です。 Multithreaded = true と組み合わせることで、このライブラリはバッチ処理をCPUコア全体に分散させ、高スループットのスキャンシナリオを実現します。 これらの設定についてさらに詳しく知りたい場合は、バーコード読み取りチュートリアルで、すべての設定オプションとサンプルコードが解説されています。
どのようなバーコードの種類とプラットフォームがサポートされていますか?
IronBarcodeは、小売、物流、医療、およびEnterpriseアプリケーションにおいて最も広く使用されているバーコードシンボル体系を網羅しています。 以下の表は、サポートされているバーコードの種類と対象プラットフォームをまとめたものです。
| カテゴリ | 対応フォーマット |
|---|---|
| リニアバーコード | コード 128、コード 39、コード 93、UPC-A、UPC-E、EAN-8、EAN-13、GS1 データバー、ITF、MSI、Codabar |
| 2次元バーコード | QRコード、データマトリックス、PDF417、アステカ、マキシコード |
| 画像フォーマット | PNG、JPEG、BMP、GIF、TIFF、SVG |
| 文書フォーマット | PDF(複数ページ)、HTML |
| .NETプラットフォーム | .NET 8/7/6、 .NET Core、 .NET Framework 4.6.2以降、 .NET Standard 2.0以降 |
| アプリの種類 | コンソール、Windows Forms、WPF、 ASP.NET、 .NET MAUI、 Blazor |
| オペレーティングシステム | Windows、macOS、Linux、Android( .NET MAUI経由) |
このライブラリは、単一のNuGetパッケージ(BarCode)としてインストールすることも、直接ダウンロードしてスタンドアロンのバーコードDLLとしてインストールすることもできます。 ネイティブSDKへの依存関係は一切不要で、バーコードスキャナSDK全体がマネージド.NETコードとして提供されます。 Visual Studio にNuGetパッケージ マネージャーを使用してインストールするか、コマンドラインインターフェースから dotnet add package BarCode コマンドを実行してください。 DLLレベルの制御が必要な導入シナリオの場合、 IronBarcode DLLのダウンロードには、手動での統合が可能なZIPパッケージが提供されます。
IronBarcodeは、Crystal Reportsとの連携や、組み込みバーコード生成が必要なその他のレポート作成ツールもサポートしています。 .NET MAUIおよびAndroidアプリ開発の場合、バーコードスキャナSDKはプラットフォーム固有のカメラSDKを必要とせずにクロスプラットフォームのバーコード読み取り機能を提供します。デバイスのカメラで撮影した画像ファイルをバーコードリーダーに渡すだけで済みます。 .NET MAUIバーコードスキャナのチュートリアルでは、Android の権限設定やモバイルスキャン用のサンプルコードなど、 .NET MAUI のワークフローについて詳しく解説しています。
ここからどこへ行くべきか
IronBarcodeは、 .NET開発者向けに、SDKレベルのプロジェクトに必要なバーコード生成、読み取り、バッチスキャン、エクスポート機能をすべて備えた完全なバーコードライブラリを提供します。複数のパッケージを管理する複雑さから解放されます。 最新バージョンでは、機械学習を活用した画像前処理機能と、PDFのバッチ処理のためのReadPdfsメソッドが追加され、単一のライブラリでできることの限界をさらに押し広げています。
無料トライアルを開始して、ウォーターマークや制限なしで、ご自身のプロジェクトで全ての機能をテストしてください。 本番環境への移行準備が整ったら、個人開発者向けのIronBarcodeライセンスオプション($799から)をご検討ください。Iron Softwareのエンジニアリングチームによる無料サポートも含まれています。
よくある質問
C#プロジェクトでIronBarcodeは何に使われますか?
IronBarcodeは、複数のライブラリを必要とせずに、C#プロジェクト内でさまざまなバーコードタイプを生成、読み取り、スキャンできるようにする.NETライブラリです。
IronBarcodeは複数のバーコードタイプを扱えますか?
はい、IronBarcodeは線形バーコードとQRコードを含む幅広いバーコードタイプをサポートし、異なるアプリケーション間の互換性を確保します。
IronBarcodeはC#でのバーコードスキャンをどのように改善しますか?
IronBarcodeは、完璧でない画像やPDFファイルから複数のバーコードをスキャンするための強力な機能を提供し、正確性と効率を向上させます。
IronBarcodeを使用するためのサンプルコードはありますか?
はい、IronBarcodeを使用してC#プロジェクトにバーコード生成とスキャン機能を迅速に統合するためのサンプルコードが含まれています。
なぜバーコード操作に複数のライブラリではなくIronBarcodeを選ぶべきですか?
IronBarcodeは、バーコードの生成、読み取り、スキャン操作を単一のライブラリに統合し、複数のライブラリを使用することに伴う複雑さと互換性の問題を減少させます。



