フッターコンテンツにスキップ
IRONBARCODEの使用

ASP.NETアプリケーションでバーコードをスキャンする方法

バーコードスキャンは、在庫管理システムから文書処理のワークフローまで、現代のWebアプリケーションにおいて欠かせない機能となっています。 倉庫内での商品を追跡したり、イベントでチケットを処理したり、紙のドキュメントをデジタル化したりする場合、ASP.NETのWebアプリケーションに信頼性の高いバーコードスキャンを実装することで、効率が大幅に向上し、エラーが減少します。

IronBarcode emerges as the premier C# barcode reader library for ASP.NET and web developers, offering a powerful yet straightforward solution for both reading and generating barcodes. 複雑な設定が必要あるいは実際の画像に苦労する他のASP .NETバーコードスキャナーライブラリとは異なり、IronBarcodeは信頼性と確信を持って正確なバーコードスキャナーの結果を提供します。 そのクロスプラットフォーム互換性により、Windows、Linux、クラウドコンテナにデプロイされる場合であってもWebアプリケーションがシームレスに動作する一方で、機械学習を活用したバーコード検出が最も難しいバーコード画像でさえ確信を持って機械読み取り形式に変換されます。

ASP.NETでIronBarcodeをバーコードリーダーとして設定する方法は?

.NETプロジェクトでのIronBarcodeの使用開始は数分で済みます。 このライブラリはASP.NET Coreと従来のASP.NET MVCアプリケーションの両方をサポートしており、さまざまなプロジェクトタイプに対応できる汎用性があります。

まず、NuGetパッケージマネージャーコンソールを使用してIronBarcodeをインストールします:

Install-Package BarCode

または、Visual StudioのNuGetパッケージマネージャーUIを使用して"IronBarCode"を検索し、インストールをクリックすることもできます。 パッケージはすべての依存関係を自動的に管理し、スムーズな統合を保証します。 詳細なインストールガイドはIronBarcodeインストールガイドを参照してください。

インストールが完了したら、必要なusingステートメントをC#のバーコードリーダーファイルに追加します:

using IronBarCode;
using IronBarCode;
Imports IronBarCode
$vbLabelText   $csharpLabel

この簡単なインポートにより、IronBarcodeの包括的なバーコードの読み取りと生成機能にアクセスできます。 ライブラリはQRコード生成やCode 128、Code 39、Data Matrix、PDF417など、30以上のバーコードフォーマットをサポートしており、実際のプロダクション環境でのほぼすべてのバーコードタイプをカバーしています。 MicrosoftのASP.NETに関するドキュメントによれば、適切なパッケージ管理は安全で効率的なWebアプリケーションを維持するために重要です。

ファイルアップロードバーコードスキャンを実装する方法は?

ASP.NETのWebアプリケーションで最も一般的なバーコードスキャンシナリオは、ユーザーがWebブラウザにバーコードを含む画像ファイルをアップロードすることです。 この実装は、請求書や配送ラベル、あるいは埋め込みバーコードのあるドキュメントを処理するのに最適です。

ASP.NETビューでdiv要素を使用して簡単なHTMLフォームを作成します。

<form method="post" enctype="multipart/form-data">
    <div class="form-group">
        <label for="barcodeFile">Select Barcode Image:</label>
        <input type="file" name="barcodeFile" id="barcodeFile" 
               accept="image/*,.pdf" class="form-control" />
    </div>
    <button type="submit" class="btn btn-primary">Scan Barcode</button>
</form>
<div id="results">
    @ViewBag.BarcodeResult
</div>
<form method="post" enctype="multipart/form-data">
    <div class="form-group">
        <label for="barcodeFile">Select Barcode Image:</label>
        <input type="file" name="barcodeFile" id="barcodeFile" 
               accept="image/*,.pdf" class="form-control" />
    </div>
    <button type="submit" class="btn btn-primary">Scan Barcode</button>
</form>
<div id="results">
    @ViewBag.BarcodeResult
</div>
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

次に、ASP.NETバーコードリーダーでアップロードされたファイルを処理するバックエンドコントローラーを実装します:

[HttpPost]
public async Task<IActionResult> ScanBarcode(IFormFile barcodeFile)
{
    if (barcodeFile != null && barcodeFile.Length > 0)
    {
        using (var stream = new MemoryStream())
        {
            await barcodeFile.CopyToAsync(stream);
            stream.Position = 0;
            // Read barcode from the uploaded image
            var results = BarcodeReader.Read(stream);
            if (results.Any())
            {
                ViewBag.BarcodeResult = string.Join(", ", 
                    results.Select(r => $"{r.BarcodeType}: {r.Text}"));
            }
            else
            {
                ViewBag.BarcodeResult = "No barcodes found in the image.";
            }
        }
    }
    return View();
}
[HttpPost]
public async Task<IActionResult> ScanBarcode(IFormFile barcodeFile)
{
    if (barcodeFile != null && barcodeFile.Length > 0)
    {
        using (var stream = new MemoryStream())
        {
            await barcodeFile.CopyToAsync(stream);
            stream.Position = 0;
            // Read barcode from the uploaded image
            var results = BarcodeReader.Read(stream);
            if (results.Any())
            {
                ViewBag.BarcodeResult = string.Join(", ", 
                    results.Select(r => $"{r.BarcodeType}: {r.Text}"));
            }
            else
            {
                ViewBag.BarcodeResult = "No barcodes found in the image.";
            }
        }
    }
    return View();
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

この実装は、アップロードされたファイルをメモリストリームにコピーし、次にIronBarcodeのBarcodeReader.Readメソッドを使用して画像からすべてのバーコードを抽出します。 メソッドはバーコードフォーマットを自動で検出し、バーコードタイプやデコードされたテキストを含む詳細な結果を返します。 IronBarcode processes various image formats, including JPEG, PNG, GIF, TIFF, BMP, and even PDF documents, eliminating the need for format-specific handling code. この柔軟性は、Stack Overflowのバーコード実装スレッドで議論された文書処理シナリオに最適です。

サンプル画像

ASP.NETアプリケーションでのバーコードスキャン: 図8 - スキャン準備が整ったCode128バーコード

出力

ASP.NETアプリケーションでのバーコードスキャン: 図5 - バーコードタイプとテキストを含むコードの出力

REST APIでのバーコードまたはQRコードスキャンを構築する方法は?

現代のASP.NET Webアプリケーションは、モバイルアプリ、SPAs、またはサードパーティサービスとの統合を可能にするため、REST APIを通じてバーコードスキャン機能を提供する必要がよくあります。 ASP.NET Coreを使用して堅牢なバーコードスキャナーAPIを作成する方法は次のとおりです:

[ApiController]
[Route("api/[controller]")]
public class BarcodeController : ControllerBase
{
    [HttpPost("scan")]
    public IActionResult ScanBarcode([FromBody] BarcodeRequest request)
    {
        try
        {
            // Convert base64 string to byte array
            byte[] imageBytes = Convert.FromBase64String(request.ImageBase64);
            // Read barcodes from the image
            var results = BarcodeReader.Read(imageBytes);
            var response = results.Select(r => new 
            {
                type = r.BarcodeType.ToString(),
                value = r.Text,
                position = new { x = r.Points.Select(b => b.X).Min(), y= r.Points.Select(b => b.Y).Min(), r.Width, r.Height }
            }).ToList();
            return Ok(new { success = true, barcodes = response });
        }
        catch (Exception ex)
        {
            return BadRequest(new { success = false, error = ex.Message });
        }
    }
}
public class BarcodeRequest
{
    public string ImageBase64 { get; set; }
}
[ApiController]
[Route("api/[controller]")]
public class BarcodeController : ControllerBase
{
    [HttpPost("scan")]
    public IActionResult ScanBarcode([FromBody] BarcodeRequest request)
    {
        try
        {
            // Convert base64 string to byte array
            byte[] imageBytes = Convert.FromBase64String(request.ImageBase64);
            // Read barcodes from the image
            var results = BarcodeReader.Read(imageBytes);
            var response = results.Select(r => new 
            {
                type = r.BarcodeType.ToString(),
                value = r.Text,
                position = new { x = r.Points.Select(b => b.X).Min(), y= r.Points.Select(b => b.Y).Min(), r.Width, r.Height }
            }).ToList();
            return Ok(new { success = true, barcodes = response });
        }
        catch (Exception ex)
        {
            return BadRequest(new { success = false, error = ex.Message });
        }
    }
}
public class BarcodeRequest
{
    public string ImageBase64 { get; set; }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

このバーコードリーダーAPIエンドポイントは、HTTP経由で画像を確実に送信するための標準フォーマットであるBase64エンコードされた画像を受け入れます。レスポンスにはバーコードの値とそのタイプが含まれます。 この実装はRESTfulのベストプラクティスに従って行われ、フロントエンドフレームワークとのシームレスな統合が保証されます。

このAPIをJavaScriptクライアントから消費するために使用されるJavaScriptコードは以下です:

async function scanBarcode(imageFile) {
    const base64 = await convertToBase64(imageFile);
    const response = await fetch('/api/barcode/scan', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({ imageBase64: base64 })
    });
    const result = await response.json();
    console.log('Scanned barcodes:', result.barcodes);
}
 async function convertToBase64(file) {
    return new Promise((resolve, reject) => {
        const reader = new FileReader();
        reader.onload = () => {
            // Remove the data URL prefix to get only the base64 string
            const base64 = reader.result.split(',')[1];
            resolve(base64);
        };
        reader.onerror = error => reject(error);
        reader.readAsDataURL(file);
    });
}
async function scanBarcode(imageFile) {
    const base64 = await convertToBase64(imageFile);
    const response = await fetch('/api/barcode/scan', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({ imageBase64: base64 })
    });
    const result = await response.json();
    console.log('Scanned barcodes:', result.barcodes);
}
 async function convertToBase64(file) {
    return new Promise((resolve, reject) => {
        const reader = new FileReader();
        reader.onload = () => {
            // Remove the data URL prefix to get only the base64 string
            const base64 = reader.result.split(',')[1];
            resolve(base64);
        };
        reader.onerror = error => reject(error);
        reader.readAsDataURL(file);
    });
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

このAPIアプローチは、モダンなJavaScriptフレームワークやモバイルアプリケーションとのシームレスな統合を可能にし、バーコードスキャンが非同期またはバッチ操作で発生する必要があるシナリオをサポートします。

サンプル入力

ASP.NETアプリケーションでのバーコードスキャン: 図6 - 複数のバーコード

出力

ASP.NETアプリケーションでのバーコードスキャン: 図7 - APIレスポンス

挑戦的なバーコード画像を処理する方法は?

ASP.NETのWebアプリケーションでの実際のバーコードスキャンは、角度から撮影された写真、悪い照明条件、または部分的に破損したバーコードなど、完全ではない画像を伴うことがよくあります。 IronBarcodeは、これらのシナリオでの高度な画像処理機能で卓越しています:

var options = new BarcodeReaderOptions
{
    // Balance speed vs accuracy
    Speed = ReadingSpeed.Balanced,
    // Specify expected barcode types for better performance
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
    // Enable automatic rotation correction
    AutoRotate = true,
    // Apply image filters for clarity
    ImageFilters = new ImageFilterCollection
    {
        new SharpenFilter(),
        new ContrastFilter(1.5f)
    },
    // Use multiple threads for faster processing
    Multithreaded = true
};
var results = BarcodeReader.Read("challenging-image.jpg", options);
var options = new BarcodeReaderOptions
{
    // Balance speed vs accuracy
    Speed = ReadingSpeed.Balanced,
    // Specify expected barcode types for better performance
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
    // Enable automatic rotation correction
    AutoRotate = true,
    // Apply image filters for clarity
    ImageFilters = new ImageFilterCollection
    {
        new SharpenFilter(),
        new ContrastFilter(1.5f)
    },
    // Use multiple threads for faster processing
    Multithreaded = true
};
var results = BarcodeReader.Read("challenging-image.jpg", options);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

BarcodeReaderOptionsクラスは、バーコードスキャンプロセスに対する詳細な制御を提供します。 AutoRotateをtrueに設定すると、どの角度でキャプチャされた画像でも処理することができ、画像フィルターはぼやけたまたは低コントラストのバーコードの明瞭性を向上させます。 Speedプロパティにより、特定のASP.NETアプリケーションの要件に基づいて処理速度と精度のバランスを調整できます。 大量処理のためにマルチスレッドを有効にすると、利用可能なすべてのCPUコアを利用してパフォーマンスが大幅に向上します。 このアプローチは、.NETアプリケーションでの画像処理に関する業界のベストプラクティスに沿ったものです。

結論とベストプラクティス

IronBarcodeを用いてASP.NETのWebアプリケーションでのバーコードスキャンを導入すると、潜在的に複雑な作業を単純で維持可能なコードに変えます。 ライブラリの多様なフォーマット処理、完全でない画像の処理、バーコードのデコード、プラットフォームを越えた一貫した結果の提供能力は、エンタープライズアプリケーションにとって非常に価値のあるツールです。

プロダクション展開のために、適切なエラーハンドリングを実装し、セキュリティのためにアップロードされたファイルを検証し、頻繁にスキャンされるバーコードをキャッシュすることを考慮してください。 IronBarcodeのクロスプラットフォームサポートにより、Dockerコンテナやクラウド環境でもバーコードスキャナーソリューションがシームレスに機能し、現代アプリケーションが要求する柔軟性を提供します。 Explore the complete API documentation to discover advanced features like batch processing and PDF barcode extraction.

ASP.NETアプリケーションをプロフェッショナルなバーコードスキャンで革新する準備はできていますか? 生産環境でIronBarcodeのフルポテンシャルを解き放つために無料トライアルを開始してください。

よくある質問

ASP.NETアプリケーションにおけるバーコードスキャンの主な使用目的は何ですか?

ASP.NETアプリケーションにおけるバーコードスキャンは主に、在庫管理システムを強化し、イベントでのチケット処理を行い、紙の書類をデジタル化するために使用され、効率を向上させエラーを減少させます。

IronBarcodeはASP.NETにおけるバーコードスキャンをどのように容易にしますか?

IronBarcode は、ウェブアプリケーションに簡単に統合できる信頼性が高く効率的なコンポーネントを提供することで、ASP.NET におけるバーコードスキャンのプロセスを簡素化し、開発者がスキャン機能を迅速に実装できるようにします。

IronBarcodeを使用してスキャンできるバーコードの種類は何ですか?

IronBarcodeは、伝統的な線形バーコードや現代的な2Dバーコードを含む多様なバーコードフォーマットのスキャンをサポートしており、多様なアプリケーションとの互換性を確保しています。

IronBarcodeはドキュメント処理のためのバーコードスキャンを扱えますか?

はい、IronBarcodeは埋め込まれたバーコードをスキャンすることで紙の書類をデジタル化し整理するドキュメント処理ワークフローで使用するのに適しています。

IronBarcodeは在庫管理システムに適していますか?

IronBarcodeは、バーコードをスキャンすることで製品の効率的な追跡を可能にし、操作を合理化し、エラーを最小限に抑えるため、在庫管理システムに最適な選択です。

IronBarcodeを統合することでイベントチケット処理はどのように改善されますか?

IronBarcodeを統合することで、イベントのチケットバーコードを迅速にスキャンでき、イベントでのエントリ管理を迅速かつ正確に行えます。

ASP.NETプロジェクトでIronBarcodeを使用する利点は何ですか?

ASP.NETプロジェクトでIronBarcodeを使用することで、統合のしやすさ、多様なバーコードフォーマットのサポート、アプリケーションのパフォーマンス向上など、バーコードスキャニングニーズに対応する強力なソリューションを提供する利点があります。

IronBarcodeの実装には大規模なコーディング知識が必要ですか?

いいえ、IronBarcodeは開発者フレンドリーに設計されており、コーディング知識がほとんどなくてもASP.NETアプリケーションにバーコードスキャンの機能を簡単に実装できます。

IronBarcodeはモバイルWebアプリケーションで使用できますか?

はい、IronBarcodeはモバイルWebアプリケーションにも統合でき、移動中でもバーコードスキャンが可能で、ASP.NETプロジェクトの柔軟性を向上させます。

Jordi Bardia
ソフトウェアエンジニア
Jordiは、最も得意な言語がPython、C#、C++であり、Iron Softwareでそのスキルを発揮していない時は、ゲームプログラミングをしています。製品テスト、製品開発、研究の責任を分担し、Jordiは継続的な製品改善において多大な価値を追加しています。この多様な経験は彼を挑戦させ続け、興味を持たせており、Iron Softwareで働くことの好きな側面の一つだと言います。Jordiはフロリダ州マイアミで育ち、フロリダ大学でコンピュータサイエンスと統計学を学びました。