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

How to Read Barcodes From Image Files (JPEG, PNG, GIF, TIFF, SVG, BMP)

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

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

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

This is made possible with the help of our open source library, IronDrawing.

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

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

Nuget IconGet started making PDFs with NuGet now:

  1. Install IronBarcode with NuGet Package Manager

    PM > Install-Package BarCode

  2. Copy and run this code snippet.

    var results = IronBarCode.BarcodeReader.Read("path/to/image.png");
  3. Deploy to test on your live environment

    Start using IronBarcode in your project today with a free trial
    arrow pointer
class="hsg-featured-snippet">

最小限のワークフロー (5ステップ)

C#で画像からバーコードを読み取る方法
  1. 画像からバーコードを読み取るための C# ライブラリをダウンロードする
  2. 様々な画像形式からバーコード値を読み取るために Read メソッドを使用する
  3. 読み取り設定を構成するために BarcodeReaderOptions クラスを利用する
  4. CropArea プロパティを使用して画像内のバーコード領域を指定する
  5. ExpectBarcodeTypes プロパティを設定して読み取るバーコードの種類を指定する

直接画像からバーコードを読み取る

さて、実際に IronBarcode を使ってバーコードを読み取る方法を見てみましょう:

: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
QRcodeintro related to 直接画像からバーコードを読み取る
サンプルテスト QR コード
Code128intro related to 直接画像からバーコードを読み取る
サンプルテストバーコード

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

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, EAN18, ITF, MSI, UPCA, UPCE) だけでなく、様々な画像形式で 2次元バーコード形式 (Aztec, DataMatrix, QRCode) を読み取ることができます。

バーコードリーダーオプションの設定

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

BarcodeReaderOptions は、バーコードリーダーの動作を調整または変更して、上記のすべての問題に対処できるようにします。 では、BarcodeReaderOptions の中で調整可能なすべてのプロパティについて詳細に見てみましょう。

CropArea

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

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

// Example of setting CropArea
var cropArea = new IronSoftware.Drawing.Rectangle(x, y, width, height);
// Example of setting CropArea
var cropArea = new IronSoftware.Drawing.Rectangle(x, y, width, height);
' Example of setting CropArea
Dim cropArea = New IronSoftware.Drawing.Rectangle(x, y, width, height)
$vbLabelText   $csharpLabel

ExpectBarcodeTypes

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

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

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

ExpectMultipleBarcodes

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

ImageFilters

BarcodeReaderOptions に追加できるプロパティの一つが、画像フィルタのコレクションです。 画像フィルタは IronBarcode に入力される生の画像を前処理するために重要です。 画像フィルタを BarcodeReaderOptions 内で適用するために、まずは使用する ImageFilter コレクションを初期化し指定する必要があります。

MaxParallelThreads

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

Multithreaded

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

RemoveFalsePositive

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

ScanMode

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

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

Reading Speed

名前が示すように、Speed プロパティは IronBarcode リーダーのパフォーマンスをさらに最適化するためにユーザーを可能にします。 RemoveFalsePositive プロパティに類似し、このプロパティを調整することで、パフォーマンスを精度のコストで改善します。 それは ReadingSpeed 列挙体を受け入れ、以下の4段階を持っている:

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

UseCode39ExtendedMode

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

画像からの先进的なバーコードリーディング

すべてのオプションを学び、それがパフォーマンスを向上させるか精度を向上させるかを問わず、次にそれをどのようにコードで適用できるか見てみましょう。 以下のコードスニペットで示されます。

// Insert actual C# code for advanced barcode reading from images here
// Ensure the necessary options and settings are demonstrated in the example
// Insert actual C# code for advanced barcode reading from images here
// Ensure the necessary options and settings are demonstrated in the example
' Insert actual C# code for advanced barcode reading from images here
' Ensure the necessary options and settings are demonstrated in the example
$vbLabelText   $csharpLabel

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

よくある質問

どうすれば .NET アプリケーションで画像からバーコードを読み取ることができますか?

JPEG、PNG、GIF、TIFF、SVG、および BMP などの画像ファイルからバーコードを読み取るには、IronBarcode の BarcodeReader.Read() メソッドを使用できます。

IronBarcode でバーコードの読み取りをカスタマイズするために利用可能なオプションは何ですか?

BarcodeReaderOptions クラスは、CropAreaExpectBarcodeTypesImageFiltersMaxParallelThreads、および RemoveFalsePositive などのプロパティを設定することにより、バーコードの読み取りをカスタマイズできます。

アプリケーションでのバーコード読み取りの精度を向上させるにはどうすればよいですか?

RemoveFalsePositive プロパティを使用して偽陽性を排除し、Detailed や ExtremeDetail などのオプションで読み取り速度を調整することで、バーコードの読み取り精度を向上させることができます。

.NETでマルチスレッドのバーコード読み取りを実行することは可能ですか?

はい、IronBarcode はマルチスレッドのバーコード読み取りをサポートしています。スレッドの自動管理を可能にするには、Multithreaded プロパティを true に設定します。

画像の特定の領域を指定してバーコードをスキャンするにはどうすればよいですか?

IronBarcode の BarcodeReaderOptions クラスで CropArea プロパティを設定することで、スキャンする画像内の領域を指定できます。

バーコード読み取りに機械学習を使用する利点は何ですか?

バーコード検出に機械学習を使用すると、さまざまな画像条件に適応し、認識機能を向上させることにより、読み取りの精度と効率を向上させることができます。

IronBarcode でさまざまなバーコード形式に対処するにはどうすればよいですか?

IronBarcode は、1D および 2D バーコード形式の両方を読み取ることができます。ExpectBarcodeTypes プロパティを使用して、期待するバーコードの種類を指定できます。

.NET プロジェクトにバーコード読み取りライブラリをインストールするプロセスは何ですか?

.NET プロジェクトに IronBarcode ライブラリをインストールするには、Microsoft Visual Studio の NuGet パッケージ マネージャーを使用してライブラリをダウンロードし、統合します。

IronBarcode で利用可能な画像の前処理オプションは何ですか?

IronBarcode は、画像を読み取る前にユーザーが画像を強化できるように、ImageFilters プロパティを介して画像の前処理オプションを提供します。

大きな画像ファイルのバーコード読み取りのパフォーマンスを最適化するにはどうすればよいですか?

パフォーマンスを最適化するには、MaxParallelThreads を設定して複数のスレッドを活用し、ニーズに応じて読み取り速度を調整します。

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