HOWTO · Csharp

C# でバーコードを読み取る

この記事では、C# を使用して画像ファイルからバーコードを読み取る方法を説明します。

このページの内容

このチュートリアルでは、C# で画像ファイルからバーコードデータを読み取る方法を説明します。サードパーティ製パッケージを使用して、1 つ以上のバーコードを検出し、その種類とデコードしたテキストを出力する完全なプログラムを紹介します。ここで示す手順ではローカルの画像ファイルを読み取ります。バーコードが別のソースから提供される場合は、入力手順を別途調整してください。

C# でバーコードを読み取る

Aspose.BarCode アセンブリパッケージを使うと、C# でバーコード画像を読み取れます。Visual Studio でコンソールプロジェクトを作成し、NuGet.org からパッケージをインストールします。サンプルが名前で開けるように、プロジェクトディレクトリに barcode.png を配置してください。パッケージは認識 API を提供しますが、画像自体はアプリケーションが用意する入力です。

認識 API は Aspose.BarCode.BarCodeRecognition 名前空間にあります。BarCodeReader を作成して ReadBarCodes() メソッドを呼び出し、返された各 BarCodeResult を調べます。各結果にはバーコードの種類を表す CodeType と、デコードされた値を表す CodeText が含まれるため、同じループで 1 枚の画像に含まれる複数のバーコードを処理できます。

次の例では、ファイル名を受け取るコンストラクターを使用します。入力と出力の役割が分かるようにし、使用後はリーダーを破棄します。このライブラリに依存するサンプルは、ここでは実行結果の証拠として提示していません。実行する前にパッケージをインストールし、barcode.png を用意してください。ファイルを開けない場合やライブラリがデコードできない場合は、try/catch ブロックがライブラリのメッセージを書き出すため、何も表示せずに終了することを避けられます。

  • Visual Studio で C# コンソールアプリケーションを作成します。
  • "Project" タブに移動し、"Manage NuGet Packages" を選択します。

    Project タブで Manage NuGet Packages を選択

  • NuGet.org で Aspose.BarCode パッケージを検索し、インストールします。

    NuGet.org から Aspose.BarCode パッケージをインストール

    これで、コードに Aspose.BarCode.BarCodeRecognition 名前空間をインポートし、バーコード認識機能を使用できるようになります。

  • 次のコードスニペットを program.cs ファイルにコピーします
    using System;
    using Aspose.BarCode;
    using Aspose.BarCode.BarCodeRecognition;
    
    namespace BarcodeScanner {
      class Program {
        static void Main(string[] args) {
          try {
            // The file is in the project directory.
            using (BarCodeReader barCodeReader = new BarCodeReader("barcode.png")) {
              foreach (BarCodeResult output in barCodeReader.ReadBarCodes()) {
                // Read the barcode
                Console.WriteLine("Symbology Type: " + output.CodeType);
                Console.WriteLine("CodeText: " + output.CodeText);
              }
            }
          } catch (Exception ex) {
            Console.WriteLine(ex.Message);
          }
        }
      }
    }
    

    このコードは、プロジェクトディレクトリから barcode.png を読み取ります。foreach ループは、画像に対して返されたすべての BarCodeResult を処理します。各結果について、CodeType のバーコードの種類と CodeText のデコードされた値を出力します。try/catch ブロックにより、入力またはライブラリのエラーが発生しても、メッセージを表示せずにサンプルが終了することを防ぎます。

    BarCodeReader クラスにはオーバーロードされたコンストラクターがあります。この例では、ファイル名を受け取るコンストラクターを意図的に使用しています。その他の入力形式はライブラリのバージョンに依存するため、この記事では互換性のあるコードとして紹介していません。

次の画像は、この記事の説明で入力として使用しているものです。

入力として使用するバーコード画像

リーダーは、アプリケーションの出力にデコードした値を表示します。次のスクリーンショットは、この入力に対する結果を示しています。

デコードされたバーコードの出力

出力の形式を簡単に確認するため、次の自己完結型コンソールサンプルでは、ローカルの結果オブジェクトを使ってライブラリの例と同じ 2 つのフィールドを出力します。

using System;

class Program
{
    static void Main()
    {
        var result = new BarcodeResult("Code128", "123456789");
        Console.WriteLine("Symbology Type: " + result.CodeType);
        Console.WriteLine("CodeText: " + result.CodeText);
    }

    private sealed class BarcodeResult
    {
        public BarcodeResult(string codeType, string codeText)
        {
            CodeType = codeType;
            CodeText = codeText;
        }

        public string CodeType { get; }
        public string CodeText { get; }
    }
}
Symbology Type: Code128
CodeText: 123456789

Aspose.BarCode リーダーは有料ツールであり、機能を制限なく使用するにはライセンスが必要です。