プログラムで画像からバーコードや QR コードを読み取る方法をお探しですか?あなたが開発者で、独自のバーコード リーダー アプリケーションを作成する必要がある場合は?あなたは正しい場所に来ました。バーコードは、製造から販売時点までの製品の在庫と配送を正確に追跡するために不可欠です。 .NET アプリケーションでは、さまざまな種類のバーコードや QR コードを簡単に検出、認識、読み取ることができます。この記事では、いくつかの簡単な手順に従って、C# で画像からバーコードを読み取る方法を紹介します。この記事は、バーコード リーダーまたはスキャナー アプリケーションを開発するための段階的なガイドとして使用できます。
まず、C# Barcode Reader API を見て、入力画像で使用可能なバーコードを読み取ります。次に、画像からバーコード データを検出、認識、抽出する手順を説明します。詳細な手順とコード スニペットが表示されます。最後に、さらなる機能強化のための便利なリンクを提供します。それでは始めましょう!
この記事では、次のトピックについて説明します。
- 画像からバーコードを読み取る C# API
- 画像からバーコードを読み取る手順
- ビットマップからバーコードを読み取る
- ストリームを使用して画像からバーコードを読み取る
- 特定種類のバーコードの読み方
- 画像から複数種類のバーコードを読み取る
- 事前定義されたシンボル体系のセットを検出して読み取る
- 画像から複数のバーコードを検出して読み取る
- バーコードの X 座標と Y 座標を取得
- 画像の特定の領域からバーコードを読み取る
- 画像の複数領域からバーコードを読み取る
画像からバーコードを読み取る C# API
画像からバーコードを読み取るには、Aspose.BarCode for .NET API を使用します。 API を使用すると、さまざまな バーコード記号 を生成、スキャン、および読み取ることができます。 JPEG、TIFF、PNG、BMP、GIF形式のバーコード画像をレンダリングできます。
API は、BarCodeReader クラスを提供します。これにより、特定の画像から 60 を超える異なるバーコード タイプを認識できます。バーコードを検出するための最初のステップは、バーコードで画像のソースを特定することです。ファイル、ビットマップ オブジェクト、またはストリームを指定できます。次に、DecodeType パラメータ内でターゲット シンボルを指定する必要があります。 DecodeType.AllSupportedTypes を指定することで、サポートされているさまざまな種類のシンボル体系をすべて調べることができます。このクラスの ReadBarCodes() メソッドは、認識されたバーコードの配列を返します。 API の BarCodeResult クラスには、認識されたバーコード データ (バーコード タイプ、コード テキスト、領域、その他のパラメーターなど) が格納されます。
この API では、バーコード リーダーが読み取る画像の領域を指定することもできます。これは、.NET Rectangle オブジェクトを使用して実現でき、デフォルトではバーコードを含まない画像領域でバーコードを検索する必要がなくなります。
APIのDLLをダウンロードするか、NuGetを使ってインストールしてください。
PM> Install-Package Aspose.BarCode
C# を使用して画像からバーコードを読み取る
以下の手順に従って、画像からバーコードを簡単に読み取ることができます。
- まず、BarCodeReader クラスを使用して画像を読み込みます。
- readBarCodes() メソッドを呼び出し、BarCodeResult クラス オブジェクトで認識結果を取得します。
- 最後に、結果をループして、バーコードのタイプとテキストを表示します。
次のコード サンプルは、C# で画像からバーコードを読み取る方法を示しています。
// このコード例は、画像ファイルからバーコードを読み取る方法を示しています。
// バーコードリーダーの初期化
BarCodeReader reader = new BarCodeReader("C:\\Files\\BarCode\\Sample.png");
// バーコードを読み取って結果を表示
foreach(BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
}
C# でビットマップからバーコードを読み取る
以下の手順に従って、画像からバーコードを簡単に読み取ることができます。
- まず、Bitmap クラスを使用して画像を読み込みます。
- 次に、Bitmap オブジェクトを使用して BarCodeReader クラスのインスタンスを作成します。
- ReadBarCodes() メソッドを呼び出し、BarCodeResult クラス オブジェクトで認識結果を取得します。
- 最後に、結果をループして、バーコードのタイプとテキストを表示します。
次のコード サンプルは、C# でビットマップからバーコードを読み取る方法を示しています。
// このコード例は、ビットマップからバーコードを読み取る方法を示しています。
// 画像をビットマップで読み込む
Bitmap bmp = new Bitmap("C:\\Files\\BarCode\\Code128.jpg");
// バーコードリーダーの初期化
BarCodeReader reader = new BarCodeReader(bmp);
// 提供されたエリア内のすべてのバーコードを読み取ります
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
}
C# で Stream を使用して画像からバーコードを読み取る
以下の手順に従って、ファイル ストリームを使用してバーコード イメージを読み込み、バーコードを読み取ることもできます。
- まず、FileStream クラスを使用して画像を読み込みます。
- 次に、ストリーム オブジェクトを使用して BarCodeReader クラスのインスタンスを作成します。
- ReadBarCodes() メソッドを呼び出し、BarCodeResult クラス オブジェクトで認識結果を取得します。
- 最後に、結果をループして、バーコードのタイプとテキストを表示します。
次のコード サンプルは、C# で Stream を使用して画像からバーコードを読み取る方法を示しています。
// このコード例は、ファイル ストリームを使用して画像からバーコードを読み取る方法を示しています。
// 画像を読み込む
Stream stream = new FileStream("C:\\Files\\BarCode\\MultipleBarcodes.jpeg", FileMode.Open, FileAccess.Read);
// バーコードリーダーの初期化
BarCodeReader reader = new BarCodeReader(stream);
// 提供されたエリア内のすべてのバーコードを読み取ります
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
}
C# で画像から特定の種類のバーコードを読み取る
認識の完了に必要な時間を最小限に抑え、古いバーコードを認識しようとするのを避けるために、認識のために考慮されるターゲット バーコード シンボル体系を選択することをお勧めします。
以下の手順に従って、対象のバーコード タイプを指定し、画像からバーコードを読み取ることができます。
- まず、BarCodeReader クラスを使用して画像を読み込みます。
- 次に、Code39Standard などのバーコード デコード タイプを設定します。
- その後、ReadBarCodes() メソッドを使用して BarCodeResult クラス オブジェクトで認識結果を取得します。
- 最後に、結果をループして、バーコードのタイプとテキストを表示します。
次のコード サンプルは、C# を使用して画像から特定の種類のバーコードを読み取る方法を示しています。
// このコード例は、画像から特定のデコード タイプのバーコードを読み取る方法を示しています。
// バーコードリーダーの初期化
BarCodeReader reader = new BarCodeReader("C:\\Files\\BarCode\\Code39Standard.jpg", DecodeType.Code39Standard);
// Code39Extended タイプのバーコードを読み取る
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
}
C# で画像から複数の種類のバーコードを読み取る
以下の手順に従って、複数のバーコード タイプを指定することもできます。
- まず、BarCodeReader クラスを使用して画像を読み込みます。
- 次に、SetBarCodeReadType() メソッドを使用してバーコード デコード タイプを設定します。
- その後、ReadBarCodes() メソッドを使用して BarCodeResult クラス オブジェクトで認識結果を取得します。
- 最後に、結果をループして、バーコードのタイプとテキストを表示します。
次のコード サンプルは、C# を使用して画像から複数の種類のバーコードを読み取る方法を示しています。
// このコード例は、画像から複数のデコード タイプのバーコードを読み取る方法を示しています。
// バーコードリーダーの初期化
BarCodeReader reader = new BarCodeReader("C:\\Files\\BarCode\\MultipleBarcodes.png");
reader.SetBarCodeReadType(DecodeType.DataMatrix, DecodeType.QR, DecodeType.Code39Extended);
// バーコードを読み取る
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
Console.Out.WriteLine("-------------------------");
}
以下に示すように、BarCodeReader クラスのコンストラクターで複数のデコード タイプを指定することもできます。
BarCodeReader reader = new BarCodeReader("C:\\Files\\BarCode\\Code39Standard.jpg", DecodeType.DataMatrix, DecodeType.QR, DecodeType.Code39Extended);
C# で画像から定義済みのバーコード タイプのセットを読み取る
DecodeTypes クラスで定義された認識用の事前定義された一連のシンボルを読み取ることができます。次の定義済みセットのいずれかを設定できます。
- AllSupportedTypes - サポートされているすべてのバーコード タイプ
- Types1D - サポートされているすべての 1D シンボル体系
- Types2D - サポートされているすべての 2D シンボル体系
- PostalTypes - 主に郵便サービスで使用されるサポートされているすべての郵便記号
- MostCommonTypes - 定義された最も広く使用されているバーコード標準のセット
以下の手順に従って、定義済みのセットを指定できます。
- まず、BarCodeReader クラスを使用して画像を読み込みます。
- 次に、BarCodeReader コンストラクターまたは SetBarCodeReadType メソッドで、DecodeType.Types2D などのバーコード デコード タイプを設定します。
- その後、ReadBarCodes() メソッドを使用して BarCodeResult クラス オブジェクトで認識結果を取得します。
- 最後に、結果をループして、バーコードのタイプとテキストを表示します。
次のコード サンプルは、C# で定義済みの一連のシンボル体系を使用してバーコードを読み取る方法を示しています。
// このコード例は、定義済みの一連のシンボル体系を使用してバーコードを読み取る方法を示しています。
// バーコードリーダーの初期化
BarCodeReader reader = new BarCodeReader("C:\\Files\\BarCode\\MultipleBarcodes.png", DecodeType.Types1D);
// バーコードを読み取って結果を表示
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
Console.Out.WriteLine("-------------------------");
}
C# で画像から複数のバーコードを読み取る
以下の手順に従って、画像から利用可能なすべてのバーコードを読み取ることもできます。
- まず、BarCodeReader クラスを使用して画像を読み込みます。
- 次に、バーコードのデコード タイプを ALLSUPPORTEDTYPES に設定します。
- その後、ReadBarCodes() メソッドを使用して BarCodeResult クラス オブジェクトで認識結果を取得します。
- 最後に、結果をループして、バーコードのタイプとテキストを表示します。
次のコード サンプルは、C# を使用して画像から複数のバーコードを読み取る方法を示しています。
// このコード例は、画像からバーコードの複数のバーコードを読み取る方法を示しています。
// バーコードリーダーの初期化
BarCodeReader reader = new BarCodeReader("C:\\Files\\BarCode\\MultipleBarcodes.png", DecodeType.AllSupportedTypes);
// 入力画像で利用可能なすべてのタイプのバーコードを読み取ります
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
Console.Out.WriteLine("-------------------------");
}
C# を使用してバーコードの X 座標と Y 座標を取得する
以下の手順に従って、検出されたバーコードの X 座標と Y 座標を画像から読み取ることができます。
- まず、BarCodeReader クラスを使用して画像を読み込みます。
- 次に、ReadBarCodes() メソッドを使用して BarCodeResult クラス オブジェクトで認識結果を取得します。
- 次に、結果をループして、Region が null でないかどうかを確認します。
- その後、Points を使用してバーコード領域の境界となる Points 配列を取得します。
- 最後に、バーコードの X 点と Y 点を表示します。
次のコード サンプルは、C# を使用して画像からバーコードの X および Y 座標点を取得する方法を示しています。
// このコード例は、画像からバーコードの X & Y 領域ポイントを読み取る方法を示しています。
// バーコードリーダーの初期化
BarCodeReader reader = new BarCodeReader("C:\\Files\\BarCode\\Code39Standard.jpg", DecodeType.AllSupportedTypes);
// バーコードを読む
foreach (BarCodeResult result in reader.ReadBarCodes())
{
if (result.Region != null)
{
// 検出されたすべてのバーコードの x 座標と y 座標を表示します
Point[] point = result.Region.Points;
Console.Out.WriteLine("Top left coordinates: X = " + point[0].X + ", Y = " + point[0].Y);
Console.Out.WriteLine("Bottom left coordinates: X = " + point[1].X + ", Y = " + point[1].Y);
Console.Out.WriteLine("Bottom right coordinates: X = " + point[2].X + ", Y = " + point[2].Y);
Console.Out.WriteLine("Top right coordinates: X = " + point[3].X + ", Y = " + point[3].Y);
}
}
C# で画像の特定の領域からバーコードを読み取る
以下の手順に従って、画像の特定の領域または領域からバーコードを読み取ることができます。
- まず、ビットマップ方式で画像ファイルのバッファデータを読み込みます。
- 次に、BarCodeReader クラスのインスタンスを作成します。引数として、画像、長方形領域、およびデコード タイプを受け取ります。
- その後、ReadBarCodes() メソッドを使用して BarCodeResult クラス オブジェクトで認識結果を取得します。
- 最後に、結果をループして、バーコードのタイプとテキストを表示します。
次のコード サンプルは、C# を使用して画像の特定の領域からバーコードを読み取る方法を示しています。
// このコード例は、画像の特定の領域からバーコードを読み取る方法を示しています。
// 画像を読み込む
Bitmap img = new Bitmap("C:\\Files\\BarCode\\MultipleBarcodes.jpeg");
// BarCodeReader クラスのインスタンスを作成する
// バーコードを探す領域を指定します
BarCodeReader reader = new BarCodeReader(img, new Rectangle(0, 0, 400, 200));
// 提供されたエリア内のすべてのバーコードを読み取ります
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
}
C# で画像の複数の領域からバーコードを読み取る
以下の手順に従って、画像の複数の領域からバーコードを読み取ることもできます。
- まず、Bitmap クラスを使用して画像を読み込みます。
- 次に、Rectangle クラスを使用して長方形を定義します。
- 次に、BarCodeReader クラスのインスタンスを作成します。
- 一方、画像オブジェクトと四角形を引数として SetBarCodeImage() を呼び出します。
- 必要に応じて、SetBarCodeReadType() メソッドを使用してバーコード読み取りタイプを設定します。
- その後、ReadBarCodes() メソッドを使用して BarCodeResult クラス オブジェクトで認識結果を取得します。
- 最後に、結果をループして、バーコードのタイプとテキストを表示します。
次のコード サンプルは、C# を使用して画像の複数の領域からバーコードを読み取る方法を示しています。
// このコード例は、画像の特定の領域からバーコードを読み取る方法を示しています。
// 画像をビットマップで読み込む
Bitmap bmp = new Bitmap("C:\\Files\\BarCode\\MultipleBarcodes.png");
// ソース画像の 2D バーコードの長方形
Rectangle rect2D = new Rectangle(0, 0, 400, 200);
// ソース画像の Code128 バーコードの長方形
Rectangle rectCode128 = new Rectangle(450, 100, 600, 180);
// バーコードリーダーの初期化
BarCodeReader reader = new BarCodeReader();
reader.SetBarCodeImage(bmp, new Rectangle[] { rect2D, rectCode128 });
reader.SetBarCodeReadType(DecodeType.AllSupportedTypes);
// 提供されたエリア内のすべてのバーコードを読み取ります
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
Console.Out.WriteLine("-------------------------");
}
無料ライセンスを取得する
無料の一時ライセンスを取得して、評価制限なしでライブラリを試すことができます。
結論
この記事では、次の方法を学びました。
- バーコード画像ファイルを読み込みます。
- 画像をビットマップとして、またはファイル ストリームを使用して読み取ります。
- 画像からさまざまな種類のバーコードを認識します。
- バーコード座標を読み取ります。
- 1 つの画像から複数のバーコードを検出して読み取ります。
- 画像の特定の領域からバーコードを検出して読み取ります。
C# で画像からバーコードを読み取る以外に、ドキュメント を使用して Aspose.BarCode for .NET API について詳しく知ることができます。ご不明な点がございましたら、無料サポート フォーラムまでお気軽にお問い合わせください。