C# で画像からバーコードを読む方法

C#を使用して画像からBarCodeを読み取る方法</#35;

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronBarcodeは、BarcodeReader.Read()を使用して、1行のコードでC#で画像からバーコードを読み取り、PNG、JPEG、GIF、BMP、TIFF、SVGを含む複数の画像形式をサポートし、カスタマイズ可能なオプションでパフォーマンスと精度を向上させます。

IronBarcode の主な機能の 1 つは、複数の画像形式でバーコードをすぐに読み取る能力です。 現在、IronBarcode がサポートしている画像形式は次の通りです:

  • スケーラブル・ベクター・グラフィック (SVG)
  • ジョイントフォトグラフィックエキスパーツグループ (JPEG)
  • ポータブル・ネットワーク・グラフィックス (PNG)
  • グラフィックス・インターチェンジ・フォーマット (GIF)
  • タグ付画像ファイル形式 (TIFF)
  • ビットマップ画像ファイル (BMP)

This is made possible with the help of our open source library, IronDrawing. サポートされているバーコード形式の完全なリスト(1Dと2Dの両方のタイプを含む)については、当社の包括的なドキュメントを参照してください。

クイックスタート: 秒で画像からバーコードを読み取る

IronBarcode.BarCodeReader.Read()を呼び出すだけで、PNG、JPEG、GIF、BMP、TIFFなどの画像ファイル形式から直接バーコードデータを抽出できます。 複雑なセットアップなしですぐに始まります - 結果が即座に得られます。

Nuget Icon今すぐ NuGet で PDF を作成してみましょう:

  1. NuGet パッケージ マネージャーを使用して IronBarcode をインストールします

    PM > Install-Package BarCode

  2. このコード スニペットをコピーして実行します。

    var results = IronBarCode.BarcodeReader.Read("path/to/image.png");
  3. 実際の環境でテストするためにデプロイする

    今すぐ無料トライアルでプロジェクトに IronBarcode を使い始めましょう
    arrow pointer

画像から直接 BarCode を読み取るにはどうすればよいですか?

IronBarcodeを使ったバーコードの読み取り方法はこちらです。 PDF 処理やバッチ操作の高度なテクニックを含む、reading barcodes in C# / .NET の包括的なチュートリアルについては、詳細ガイドをご覧ください:

:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-images-1.cs
using IronBarCode;
using System;

var myBarcode = BarcodeReader.Read(@"image_file_path.jpg"); //image file path

foreach (var item in myBarcode)
{
    Console.WriteLine(item.ToString());
}
Imports IronBarCode
Imports System

Private myBarcode = BarcodeReader.Read("image_file_path.jpg") 'image file path

For Each item In myBarcode
	Console.WriteLine(item.ToString())
Next item
$vbLabelText   $csharpLabel
Sample QR code with finder patterns for testing barcode reading from images
サンプルテストQRコード
Sample barcode with black vertical lines on white background for testing image-based barcode reading
サンプルテストバーコード

サンプルのバーコード値が何なのか知りたいですか?コードスニペットで試してみてください!

IronBarcode を使用するには、まず Microsoft Visual Studio NuGet パッケージマネージャーを通じて IronBarcode ライブラリをプロジェクトにインストールする必要があります。以下の画像に示されています。 これにより、IronBarcodeのBarcodeReader.Read()メソッドにアクセスし、バーコード画像を直接読み取ることができるようになります。

IronBarcode は、BarcodeReader.Read() だけでプロジェクト内にすでに含まれている画像ファイルを読み取ることができます。メソッドのパラメータとして ファイル名 文字列、または ファイルパス 文字列を指定します。 メソッド内でファイルパスを指定する際は、複数のエスケープ文字"\"をファイルパス文字列に追加するのを避けるために、逐号文字列リテラル"@"を使用するのがベストプラクティスです。

Values() メソッドを BarcodeReader.Read() メソッド呼び出しの末尾に付けて、バーコード値を System.String[] オブジェクトとして取得します。

結果をコンソールに出力するには、string[] 配列に格納された値を反復処理するために foreach ループを使用し、ループブロック内で、イテレータ変数をパラメータとして Console.WriteLine() メソッドを呼び出します。

IronBarcodeは1次元バーコードフォーマット(Codabar, Code128, Code39, Code93, EAN13, EAN18ITFMSIUPCAUPCE)、およびさまざまな画像形式の2次元バーコード形式(AztecDataMatrixQRCode)があります。

より良いパフォーマンスのために BarCode リーダー オプションを設定するにはどうすればよいですか?

バーコードリーディングが遅すぎますか? 画像でバーコードが小さすぎて、IronBarcode が読み取れないですか? 画像の特定の領域のみを読み取りたいですか? バーコードが混在している画像で特定の種類のバーコードのみを読み取りたいですか? 全体の読み取りパフォーマンスを改善したいですか?

BarCodeReaderOptionsは、ユーザーがこれらのすべての問題に対処するためにバーコードリーダーの動作を微調整または調整することを可能にします。 バーコードリーダーのオプション設定の詳細な例については、包括的なガイドをご覧ください。以下のセクションでは、BarcodeReaderOptionsで利用可能なすべての調整可能なプロパティについて一つずつ説明します。

画像のどの領域を読み取るかを指定するにはどうすればよいですか?

CropAreaBarcodeReaderOptions に存在する Iron Software.Drawing.CropRectangle タイプのプロパティで、IronBarcode が読み取るべき画像内の領域をユーザーが指定できます。 これは読み取りパフォーマンスの向上に役立ちます。なぜなら、読み取り範囲が指定されたため、バーコードリーダーが画像全体をスキャンしてバーコードを探すことを避け、読み取りの精度も向上します。 最適なパフォーマンスを得るためのクロップ・リージョンの指定方法については、こちらをご覧ください。

CropArea プロパティを設定するには、新しい Rectangle 型オブジェクトをインスタンス化し、長方形の座標、幅、および長さを引数として指定するだけです。 測定単位はピクセル(px)です。

// Example of setting CropArea
var cropArea = new IronSoftware.Drawing.Rectangle(x: 100, y: 100, width: 300, height: 300);
var options = new BarcodeReaderOptions()
{
    CropArea = cropArea
};
// Example of setting CropArea
var cropArea = new IronSoftware.Drawing.Rectangle(x: 100, y: 100, width: 300, height: 300);
var options = new BarcodeReaderOptions()
{
    CropArea = cropArea
};
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

より速く読み取るには、どのバーコードタイプを指定すればよいですか?

デフォルトでは、IronBarcode でサポートされているすべてのバーコードが画像でスキャンされます。 しかし、ユーザがどのような種類のバーコードが利用可能か、または画像で読み取りたいかを知っている場合、特定の種類のバーコードのみを読み取るようにこのプロパティを設定すると、バーコードリーダはバーコードを解釈して読み取るためにバーコードのコレクションを反復する必要がなくなるため、読み取りパフォーマンスと精度が大幅に向上します。

このプロパティを使用するには、ExpectBarcodeTypesBarcodeEncoding 列挙体の一つのフィールドに設定すればよいです。 以下に、IronBarcode がサポートしているすべてのバーコードタイプの例を示します。

// Example: Expect only QR codes and Code128
var options = new BarcodeReaderOptions()
{
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128
};
// Example: Expect only QR codes and Code128
var options = new BarcodeReaderOptions()
{
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128
};
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

前述の例と説明を含むバーコードタイプのリストです。

いつ複数の BarCode 読み取りを無効にすべきですか?

IronBarcode は画像内の利用可能なすべてのバーコードをデフォルトでスキャンします。これには画像ファイル全体のスキャンが含まれ、読み取ったバーコード値を文字列配列に追加します。 しかし、ユーザーが画像ファイル内の複数のバーコードを読み取りたくない場合は、このプロパティを false に設定できます。これにより、バーコード値が見つかった時点でバーコードリーダーはスキャンを中止します。 これもまた、IronBarcode のパフォーマンスと読み取り速度の改善につながります。 複数の BarCode を読み取るの詳細については、専用のガイドを参照してください。

画像フィルタはバーコード認識をどのように向上させますか?

BarcodeReaderOptions に追加できるプロパティの一つが、画像フィルタのコレクションです。 画像フィルタは IronBarcode に入力される生の画像を前処理するために重要です。 画像フィルタを BarcodeReaderOptions 内で適用するために、まずは使用する ImageFilter コレクションを初期化し指定する必要があります。 フィルター アプリケーションを含む、画像補正技術に関する包括的なガイダンスについては、チュートリアルをご覧ください。

パフォーマンスを向上させるためにスレッドを最適化するにはどうすればよいですか?

IronBarcode はユーザーにパラレルスレッド実行量を有効化および調整することを可能にし、これによりプロセスの速度と効率が向上します。 並列スレッドとは、異なるプロセッサコアで同時に複数のスレッドを実行することを意味します。 IronBarcode における MaxParallelThread プロパティのデフォルト数は 4 です。ユーザーは、そのマシンが持つ能力とリソースの量に基づいてそれらを調整できます。

マルチスレッド処理を有効にしますか?

このプロパティは、IronBarcode が複数の画像を並行して読み取ることを可能にします。 Multithreaded のデフォルトは true であり、そのため複数のスレッドはバッチバーコード読み取りタスクのパフォーマンスを向上させるために自動的に管理されます。

なぜ誤検出を削除する必要があるのでしょうか

このプロパティは偽陽性バーコード読み取りを除去します。 偽陽性バーコード読み取りは、バーコード値の誤読を意味するが、有効として識別されます。 これはシーケンシングプロセスでのエラーやバーコードラベリングや準備プロセスでのエラーにより起こる可能性があります。 従って、RemoveFalsePositive を true に設定することにより、偽陽性バーコード読み取りを除去し、バーコード読み取り精度を向上させます。 しかし、ユーザーが精度の代わりにパフォーマンスを選ぶ場合、このプロパティを false に設定すると助けになるでしょう。このプロパティのデフォルト値は true です。

どのようなスキャン モードがさまざまな使用ケースで利用できますか?

IronBarcode が画像内でバーコードをスキャンし検出する方法を定義します。

  • Auto: バーコードを自動画像前処理と最適なリーダーオプションの構成で読み取ります。 最良の結果とパフォーマンスのために推奨されます。
  • OnlyDetectionModel: 画像内のバーコードをスキャンし、それらの位置を Iron Software.Drawing.PointF の配列として返します。 このモードは検出されたバーコードを読みません; それはそれぞれのバーコードの位置のみを返します。
  • MachineLearningScan: 機械学習検出でバーコードをスキャンして読みます。
  • OnlyBasicScan: 機械学習検出、画像自動前処理、またはリーダーオプションの構成なしでバーコードを読み取ります。 This option can be used with IronBarCode.Slim alone.

読み取り速度の設定は精度にどのように影響しますか?

名前が示すように、Speedプロパティは、ユーザーがIronBarcodeリーダーのパフォーマンスをさらに最適化できるようにしています。 RemoveFalsePositive プロパティに類似し、このプロパティを調整することで、パフォーマンスを精度のコストで改善します。 パフォーマンスのベンチマークを含む、読み込み速度のオプションの詳細については、詳細ガイドをご覧ください。これはReadingSpeed列挙型を受け付けます:

  • Faster: 最速のバーコード読み取りを有効にするが、精度を下げる。 このプロセスは画像の前処理をスキップし、しばしば空のバーコード結果をもたらします。 この設定を使用するのは、入力画像がシャープで明確な場合のみです。
  • バランス: この設定はSpeedプロパティに対して推奨されます。 それは精度と読み取りパフォーマンスのバランスをとり、画像に軽い処理を試みて、バーコードエリアを明確にし、バーコードリーダーが検出できるようにします。 ほとんどの場合、この設定はIronBarcodeがバーコード画像を読み取り、正確な出力を生成するのに十分です。
  • Detailed: ReadingSpeed.Balanced 設定を使用しても読み取りでバーコード値を生成するのが成功しない場合、ユーザーは ReadingSpeed.Detailed を使用できます。 IronBarcode は中程度の処理を画像に行い、バーコードエリアをさらに明確にして、バーコードリーダーが検出できるようにします。 この設定は、小さなまたはあまり鮮明でないバーコード画像を検出するのに非常に便利です。
  • ExtremeDetail: この設定は非常に CPU 集中なプロセスのため 最も推奨されません。 重い処理がバーコード画像に施され、リーダーがバーコードを読み取るようになります。 ユーザーはこの設定を選ぶ前にイメージ前処理を行うこと/画像にフィルタを適用することを推奨されます。

Code39拡張モードはいつ使用すべきですか?

この設定により、Code39 型バーコードは拡張モードで読み取られ解釈され、完全な ASCII 文字セットが適用されます。 UseCode39ExtendedModetrue に設定すると、Code39 バーコードのより正確な読み取りが可能になります。

カスタム オプションを使用して高度な BarCode 読み取り機能を実装するには?

パフォーマンスや精度を向上させるためであれ、ユーザーが微調整できるすべてのオプションを学んだので、コードに適用する方法を紹介しよう。 以下のコードスニペットは、BarcodeReaderOptionsの包括的な使用法を示しています:

using IronBarCode;
using IronSoftware.Drawing;
using System;
using System.Linq;

// Create custom reader options
var options = new BarcodeReaderOptions()
{
    // Specify expected barcode types for better performance
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128 | BarcodeEncoding.Code39,

    // Define specific area to scan (x, y, width, height in pixels)
    CropArea = new Rectangle(100, 100, 500, 400),

    // Set reading speed to balance accuracy and performance
    Speed = ReadingSpeed.Balanced,

    // Enable multithreading for better performance
    Multithreaded = true,
    MaxParallelThreads = 4,

    // Remove false positives for accuracy
    RemoveFalsePositive = true,

    // Enable Code39 extended mode if needed
    UseCode39ExtendedMode = true,

    // Set scan mode
    ScanMode = BarcodeReaderScanMode.Auto,

    // Add image filters for better recognition
    ImageFilters = new ImageFilterCollection() { 
        new SharpenFilter(),
        new InvertFilter(),
        new ContrastFilter()
    }
};

// Read barcodes with custom options
var results = BarcodeReader.Read(@"C:\path\to\your\barcode-image.png", options);

// Process results
if (results.Any())
{
    foreach (var barcode in results)
    {
        Console.WriteLine($"Barcode Type: {barcode.BarcodeType}");
        Console.WriteLine($"Value: {barcode.Value}");
        Console.WriteLine($"Confidence: {barcode.Confidence}%");
        Console.WriteLine($"Position: X={barcode.X}, Y={barcode.Y}");
        Console.WriteLine("---");
    }
}
else
{
    Console.WriteLine("No barcodes found in the image.");
}
using IronBarCode;
using IronSoftware.Drawing;
using System;
using System.Linq;

// Create custom reader options
var options = new BarcodeReaderOptions()
{
    // Specify expected barcode types for better performance
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128 | BarcodeEncoding.Code39,

    // Define specific area to scan (x, y, width, height in pixels)
    CropArea = new Rectangle(100, 100, 500, 400),

    // Set reading speed to balance accuracy and performance
    Speed = ReadingSpeed.Balanced,

    // Enable multithreading for better performance
    Multithreaded = true,
    MaxParallelThreads = 4,

    // Remove false positives for accuracy
    RemoveFalsePositive = true,

    // Enable Code39 extended mode if needed
    UseCode39ExtendedMode = true,

    // Set scan mode
    ScanMode = BarcodeReaderScanMode.Auto,

    // Add image filters for better recognition
    ImageFilters = new ImageFilterCollection() { 
        new SharpenFilter(),
        new InvertFilter(),
        new ContrastFilter()
    }
};

// Read barcodes with custom options
var results = BarcodeReader.Read(@"C:\path\to\your\barcode-image.png", options);

// Process results
if (results.Any())
{
    foreach (var barcode in results)
    {
        Console.WriteLine($"Barcode Type: {barcode.BarcodeType}");
        Console.WriteLine($"Value: {barcode.Value}");
        Console.WriteLine($"Confidence: {barcode.Confidence}%");
        Console.WriteLine($"Position: X={barcode.X}, Y={barcode.Y}");
        Console.WriteLine("---");
    }
}
else
{
    Console.WriteLine("No barcodes found in the image.");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

コードスニペットから、BarcodeReaderOptionsを使用するには、まずそれを初期化し、次に上記のプロパティに応じてBarcodeReaderOptionsのプロパティを決定して調整する必要があることがわかります。 初期化された BarcodeReaderOptions は、画像ファイルと共にBarcodeReader.Read() メソッドの引数として使用できます。これにより、画像からバーコードを読み取る際に BarcodeReaderOptions のすべての設定が適用されます。

BarCodeが認識されないという問題が発生した場合、当社のトラブルシューティングガイドでは、一般的な問題の解決策とバーコードスキャンの精度を高めるためのヒントを提供しています。

よくある質問

C# での BarCode 読み取りに対応している画像形式は?

IronBarcodeはSVG(Scalable Vector Graphics)、JPEG、PNG、GIF、TIFF(Tagged Image File Format)、BMP(Bitmap Image File)など複数の画像フォーマットからのバーコード読み取りをサポートしています。この包括的なフォーマットのサポートはIronDrawingによって行われ、様々な種類の画像からシームレスにバーコードを抽出することができます。

たった1行のコードで、画像ファイルから BarCode を読み取るにはどうすればよいですか?

IronBarcodeを使用すると、1行のコードで画像からバーコードを読み取ることができます:var results = IronBarcode.BarcodeReader.Read("path/to/image.png");`.このシンプルなメソッド呼び出しは、複雑な設定をすることなく、PNG、JPEG、GIF、BMP、TIFFファイルからバーコードデータを自動的に検出して抽出します。

画像を読み取る際に、どの種類の BarCode を検索するかを指定できますか?

はい、IronBarcodeではBarcodeReaderOptionsのExpectBarcodeTypesプロパティを使ってバーコードタイプを指定することができます。このターゲットを絞ったアプローチにより、イメージで見つかると予想されるバーコード形式のみに焦点を当てることで、読み取りパフォーマンスが向上します。

画像内の特定の領域から BarCode を読み取ることはできますか?

もちろんです!IronBarcodeはCropAreaプロパティを提供し、バーコードが配置される画像内の特定の領域を指定することができます。この機能は、大きな画像やバーコードのおおよその位置が分かっている場合に特に便利で、処理速度を大幅に向上させます。

精度を高めるために、高度な読み取り設定を行うにはどうすればよいですか?

IronBarcodeは高度な読み取り設定を構成するためにBarcodeReaderOptionsクラスを提供しています。これには、バーコード検出感度、画像前処理、および困難な画像や特定のバーコードタイプを扱う際の精度を向上させるその他のパラメータをカスタマイズするためのオプションが含まれています。

C#開発者が画像からBarCodeを簡単に読み取れるのはなぜですか?

IronBarcodeはBarcodeReader.Read()メソッドを提供することでバーコードの読み取りを簡素化します。開発者はファイル名またはファイルパスをパラメータとして指定するだけでよく、C#アプリケーションにバーコード読み取り機能を統合するのは驚くほど簡単です。

Hairil Hasyimi Bin Omar
ソフトウェアエンジニア
すべての優れたエンジニアのように、ハイリルは熱心な学習者です。彼はC#、Python、Javaの知識を磨き、その知識を活用してIron Softwareのチームメンバーに価値を追加しています。ハイリルはマレーシアのマラ工科大学からIron Softwareのチームに参加し、化学およびプロセス工学の学士号を取得しました。
準備はできましたか?
Nuget ダウンロード 2,002,059 | バージョン: 2025.12 リリース