IronBarcode を使って C# で読み取り速度を調整する方法

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

精度は拡張性や多くのバーコードを読み取る際に不可欠ですが、バーコードリーダーがリソースをどのように割り当てているか、どれだけ効率的かも考慮する必要があります。 入力画像や画像品質に応じて、バーコードリーダーが画像処理をスキップするか、よりリソースを消費するオプションで読み取り精度を向上させるかなど、開発者がどのようにアプローチすべきかを決定することが重要です。

IronBarCodeは、バーコード処理の詳細な速度と精度を選択できる柔軟性を提供し、プロセスのあらゆる側面を微調整・管理することができます。 あなたの入力画像と割り当てるリソースに基づいて決定できます。

以下の記事は、どの読み取り速度を使用するかを決定するための最適な状況についての一般的なガイドラインです。 読み取り速度の変更が結果にどのように影響するかの簡単な例を示すために、QRコードのサンプルセットを使用します。

クイックスタート: バランスの取れた速度でバーコードを読み取る

IronBarcodeのBarcodeReaderOptionsを使用して、スキャンのSpeedレベルを即座に設定します。 この例では、開発者がBalanced設定を使用して迅速かつ信頼性の高い結果を得るためにバーコードを迅速に読み取る方法を示しています。

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

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

    PM > Install-Package BarCode

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

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

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


読み取り速度

IronBarCode内では、開発者はReadingSpeedFaster, Balanced, Detailed, ExtremeDetailの4つの異なるオプションに設定できます。 これらの各オプションを、一連のサンプルを基に、ReadingSpeed値がプロセスの出力にどのように影響するかをベンチマークとして使用しながら検討します。 サンプルセットには、劣化したバーコード画像とより鮮明な画像が混在しており、ライブラリの機能性を示すために非常に劣化した画像に重点を置いています。

また、一般的な.NETベンチマークライブラリを使用して、他のオプションと比較して各オプションが理想的なシナリオや状況でどのような時間やメモリ使用量を示すかをベンチマークし、それを特定します。 ライブラリを使用したベンチマークのコードと、IronBarCodeが読み取れる劣化したバーコードの量を推測するより簡単な方法も表示します。

Faster Speed Option

最初の値はFasterです。 一般的に、Speedプロパティをこの値に設定することで、最小限のリソースで最速のバーコード読み取りが実現されますが、精度が低下するというトレードオフがあります。 プロセスは画像の前処理をスキップし、画像がすでに鮮明である場合に推奨されます。

この例では、プロパティをReadingSpeed.Fasterに設定し、すべてのバーコードを含むディレクトリをインポートし、見つかったバーコードの値や種類、各画像から見つかったバーコードの数を印刷しました。

:path=/static-assets/barcode/content-code-examples/how-to/reading-speed-option-faster.cs
using IronBarCode;
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;

var optionsFaster = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Faster
};

// Directory containing PDF files
string folderPath = @"YOUR_FILE_PATH";

// Get all PDF files in the directory
var pdfFiles = Directory.GetFiles(folderPath, "*.jpg");

int countFaster = 0;
var stopwatch = Stopwatch.StartNew();
foreach (var file in pdfFiles)
{
    // Read the barcode
    var results = BarcodeReader.Read(file, optionsFaster);

    if (results.Any())
    {
        Console.WriteLine($"Barcode(s) found in: {Path.GetFileName(file)}");
        foreach (var result in results)
        {
            Console.WriteLine($"  Value: {result.Value}, Type: {result.BarcodeType}");
            countFaster++;
        }
    }
    else
    {
        Console.WriteLine($"No barcode found in: {Path.GetFileName(file)}");
    }
}

stopwatch.Stop();

// Print number of images the barcode reader could decode
Console.WriteLine($"Faster could read = {countFaster} out of {pdfFiles.Length} in {stopwatch.ElapsedMilliseconds}ms");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Fasterは430中146のバーコード結果を25秒で検出しました。 このオプションは迅速で、約33.95%のバーコードをデコードできます。 高速ではありますが、この方法は一般的に画像が状態の良い場合にのみ適しています。

Balanced Speed Option

Balanced値は精度と読み取り性能をバランスさせます。 この設定を適用することで、IronBarcodeは画像に軽い処理を施し、バーコードエリアを明確にし、バーコードリーダーによる検出を可能にし、読み取りを容易にします。 一般的に、軽度の処理で正確な結果を得ることができるため、現代の画像にはこの設定が推奨されます。

同じ画像を使用しBalanced値が出力結果にどのように影響するかを示します。

:path=/static-assets/barcode/content-code-examples/how-to/reading-speed-option-balanced.cs
using IronBarCode;
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;

var optionsFaster = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced
};

// Directory containing PDF files
string folderPath = @"YOUR_FILE_PATH";

// Get all PDF files in the directory
var pdfFiles = Directory.GetFiles(folderPath, "*.jpg");

int countFaster = 0;
var stopwatch = Stopwatch.StartNew();
foreach (var file in pdfFiles)
{
    // Read the barcode
    var results = BarcodeReader.Read(file, optionsFaster);

    if (results.Any())
    {
        Console.WriteLine($"Barcode(s) found in: {Path.GetFileName(file)}");
        foreach (var result in results)
        {
            Console.WriteLine($"  Value: {result.Value}, Type: {result.BarcodeType}");
            countFaster++;
        }
    }
    else
    {
        Console.WriteLine($"No barcode found in: {Path.GetFileName(file)}");
    }
}

stopwatch.Stop();

// Print number of images the barcode reader could decode
Console.WriteLine($"Balanced could read = {countFaster} out of {pdfFiles.Length} in {stopwatch.ElapsedMilliseconds}ms");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Balancedは430中237のバーコード結果を43秒で検出しました。 BalancedFasterオプションと比べて55.11%の精度向上を提供し、時間の増加はわずかです。Balancedオプションはメモリと速度の効率的なバランスを維持し、ほとんどの状況で理想的な選択であり、推奨されるスタートポイントです。

Detailed Speed Option

画像がひどくぼやけたり歪んだりし、Balancedオプションが明確に検出し結果を生成できない場合、開発者はDetailedプロパティを使用して、より中程度の前処理を画像に施し、バーコードエリアをさらに明確にし、バーコードリーダーがバーコードを検出できるようノイズを除去することを選択できます。

今回はSpeedプロパティにDetailed設定を適用し、画像全体の出力に影響するか確認します。

:path=/static-assets/barcode/content-code-examples/how-to/reading-speed-option-detailed.cs
using IronBarCode;
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;

var optionsFaster = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Detailed
};

// Directory containing PDF files
string folderPath = @"YOUR_FILE_PATH";

// Get all PDF files in the directory
var pdfFiles = Directory.GetFiles(folderPath, "*.jpg");

int countFaster = 0;
var stopwatch = Stopwatch.StartNew();
foreach (var file in pdfFiles)
{
    // Read the barcode
    var results = BarcodeReader.Read(file, optionsFaster);

    if (results.Any())
    {
        Console.WriteLine($"Barcode(s) found in: {Path.GetFileName(file)}");
        foreach (var result in results)
        {
            Console.WriteLine($"  Value: {result.Value}, Type: {result.BarcodeType}");
            countFaster++;
        }
    }
    else
    {
        Console.WriteLine($"No barcode found in: {Path.GetFileName(file)}");
    }
}

stopwatch.Stop();

// Print number of images the barcode reader could decode
Console.WriteLine($"Detailed could read = {countFaster} out of {pdfFiles.Length} in {stopwatch.ElapsedMilliseconds}ms");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Detailedは430中237のバーコード結果を5分30秒で検出しました。 それは、著しく劣化したバーコードデータセットでの55.11%の成功率がその精度の証です。 ただし、大幅にプロセス時間が増加するというトレードオフがあります。 したがって、このオプションは劣化したバーコード画像専用に使用することが重要です。

ExtremeDetail Speed Option

プロパティの最終設定はExtremeDetailで、リーダーが読み取れるようにバーコード画像に重い処理を施し、一般的にIronBarcodeの読み取り性能を低下させます。 このオプションは、各入力ファイル内で不明瞭またはぼやけた大量のバーコードを一度にスキャンするのに理想的です。 操作はCPU集約的であり、他のオプションが望ましい結果を生み出していない場合に最後の手段として使用するべきです。

プロパティにExtremeDetail設定を適用して、結果に影響があるか確認します。

:path=/static-assets/barcode/content-code-examples/how-to/reading-speed-option-extreme-detailed.cs
using IronBarCode;
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;

var optionsFaster = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.ExtremeDetail
};

// Directory containing PDF files
string folderPath = @"YOUR_FILE_PATH";

// Get all PDF files in the directory
var pdfFiles = Directory.GetFiles(folderPath, "*.jpg");

int countFaster = 0;
var stopwatch = Stopwatch.StartNew();
foreach (var file in pdfFiles)
{
    // Read the barcode
    var results = BarcodeReader.Read(file, optionsFaster);

    if (results.Any())
    {
        Console.WriteLine($"Barcode(s) found in: {Path.GetFileName(file)}");
        foreach (var result in results)
        {
            Console.WriteLine($"  Value: {result.Value}, Type: {result.BarcodeType}");
            countFaster++;
        }
    }
    else
    {
        Console.WriteLine($"No barcode found in: {Path.GetFileName(file)}");
    }
}

stopwatch.Stop();

// Print number of images the barcode reader could decode
Console.WriteLine($"ExtremeDetail could read = {countFaster} out of {pdfFiles.Length} in {stopwatch.ElapsedMilliseconds}ms");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

ExtremeDetailオプションは、313のバーコード画像を430中から識別する能力を持ち、1回の実行に平均10分かかります。 リソース消費が多いため、劣化に対する最後の手段としてのみ適した強力なツールです。 劣化したバーコードデータセットで最も多くのバーコードを72.79%の精度で見つけられますが、バーコードファインダーを通す前に前処理を行うことが推奨されます。

要約表

モード バーコードが見つかりました 平均時 ファイルあたりの時間 GC圧力 精度の向上
Faster 147/430 (33.95%) 25秒 0.058秒 高(第2世代:177K) ベースライン
Balanced 237/430 (55.11%) 43秒 0.1秒 高(第2世代:151K) より速い場合 +62.32%
Detailed 237/430 (55.11%) 5.50分 0.767秒 非常に高い (Gen2: 297K) バランス型に対して+0%
エクストリームディテール 313/430 (72.79%) 10.14分 1.414秒 エクストリーム(第2世代:474万) 詳細に対して+32.08%

適切な速度の選択

上記の簡単な比較と、上記の異なるシナリオに基づいて、開発者は一般的に、Fasterの最低設定から始めて、BalancedDetailedExtremeDetailをゆっくり進めて、出力に大きな不一致があるかどうかを確認するべきです。 IronBarCodeを使用する場合の拡張性に関して、多くの場合、Balancedが十分に検討され、開発者は画像がどれほど激しく歪んでいるかによって、DetailedExtremeDetailのみを使用する必要があります。 さらに、どちらのオプションもDetailedおよびExtremeDetailを使用する際に画像に中程度および重度の処理を適用しますが、バーコードリーダーに配置する前にプロセスを2つに分けて画像フィルタを手動で適用する方が価値があるシナリオもあります。 バーコードリーダー用画像処理の詳細については、こちらをご参照ください。 一般的なまとめとして、各異なる速度が適切な状況についての簡単な表と要約です。

決定チャート

出力

よくある質問

IronBarcodeの読み取り速度オプションは何ですか?

IronBarcodeは、アプリケーションのニーズに合わせて読み取り速度を調整し、バーコード読み取りの高速処理または高精度のいずれかを最適化できます。

IronBarcodeでバーコード読み取り速度をどのように構成できますか?

IronBarcodeのバーコードリーダーの設定で特定のパラメータを設定することで、速度または精度を優先した構成ができます。

IronBarcodeで読み取り速度を調整する必要があるのはなぜですか?

読み取り速度の調整は、性能と精度のバランスを図り、高速処理や正確なバーコード検出が必要なアプリケーションで重要です。

IronBarcodeで高精度と高速読み取りを同時に達成することは可能ですか?

IronBarcodeは速度と精度のカスタマイズ可能なバランスを提供しますが、完璧な組み合わせの達成は特定の使用ケースとバーコードの複雑さに依存する場合があります。

IronBarcodeの読み取り速度設定の選択に影響を与える要因は何ですか?

スキャンされるバーコードの種類、画像の品質、操作環境などの要因が、IronBarcodeの読み取り速度設定の選択に影響を与える可能性があります。

IronBarcodeで読み取り速度設定を動的に変更できますか?

はい、IronBarcodeでは、異なるスキャン条件と要件に合わせて読み取り速度設定を動的に調整できます。

IronBarcodeにおけるバーコードスキャンのパフォーマンスに読み取り速度はどのように影響しますか?

IronBarcodeの読み取り速度設定は、バーコードがどれだけ迅速に処理されるかに影響を与え、より高速な速度は精度を低下させる可能性があり、より低速な速度は精度を向上させます。

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

準備はできましたか?
Nuget ダウンロード 1,979,979 | Version: 2025.11 リリース