画像ファイル (jpg、png、gif、tiff、svg、bmp) からバーコードを読み取る方法

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

によって ハイリル ハシミ ビン オマル


    • 申し訳ありませんが、翻訳を行うための具体的なコンテンツが提供されていません。翻訳したい英語のテキストを入力してください。

    • 申し訳ありませんが、翻訳を行うための具体的なコンテンツが提供されていません。翻訳したい英語のテキストを入力してください。

     用 C# NuGet ライブラリ

    でインストール NuGet

    Install-Package BarCode
    または
    Java PDF JAR(ジャバPDF JAR)

    ダウンロード DLL (ディーエルエル)

    DLLをダウンロード

    プロジェクトに手動でインストールする

     用 C# NuGet ライブラリ

    でインストール NuGet

    Install-Package BarCode
    または
    Java PDF JAR(ジャバPDF JAR)

    ダウンロード DLL (ディーエルエル)

    DLLをダウンロード

    プロジェクトに手動でインストールする

    今日からプロジェクトでIronPDFを使い始めましょう。無料のトライアルをお試しください。

    最初のステップ:
    green arrow pointer

    チェックアウト IronBarcode オン Nuget 迅速なインストールと展開のために。8百万以上のダウンロード数により、をC#で変革しています。

     用 C# NuGet ライブラリ nuget.org/packages/BarCode/
    Install-Package BarCode

    インストールを検討してください IronBarcode DLL 直接。ダウンロードして、プロジェクトまたはGACの形式で手動でインストールしてください。 IronBarCode.zip

    プロジェクトに手動でインストールする

    DLLをダウンロード

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

IronBarcodeの主要な機能の一つは、複数の画像フォーマットからすぐにバーコードを読み取る能力です。 これには以下が含まれます:

* スケーラブルベクターグラフィックス (SVG(Scalable Vector Graphics、スケーラブル・ベクター・グラフィックス))

* 合同写真専門家グループ (共同写真専門家グループ) (JPEG (ジェイペグ))

* ポータブルネットワークグラフィックス (PNG)

* グラフィックス インターチェンジ フォーマット (GIF)

* タグ付きイメージファイル形式 (TIFF)

* ビットマップ イメージ ファイル (BMP)

これはオープンソースライブラリの助けを借りて実現しています。 アイアンドローイング (IronDrawing). では、以下のコードスニペットに示されているように、IronBarcodeを使用して2つのバーコード画像からバーコードを読み取る方法を見てみましょう。

: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
VB   C#
サンプルテストQRコード
サンプルテストバーコード

サンプルのバーコード値を知りたいですか? 下記のコードスニペットを試してみてください!! IronBarcodeを使用するには、まずMicrosoft Visual StudioのNuGetパッケージマネージャーを介してプロジェクトにIronBarcodeライブラリをインストールする必要があります。次の図に示すように行います。 これにより、IronBarcodeにアクセスすることができます。 BarcodeReader.Read() method to directly read barcode image.

上記のコードスニペットから、IronBarcodeがユーザーに対して使用するだけでシンプルさを提供することがわかります BarcodeReader.Read() プロジェクト内に既に含まれている画像ファイルを読み取るには、指定して ファイル名 文字列, または ファイルパス メソッドのパラメータとしてstringを使用します。 ベストプラクティスとして、ファイルパスをメソッドに指定する際は逐語的文字列リテラル "@" を使用することを推奨します。これを含めないと、ユーザーがファイルパス文字列に複数のエスケープ文字 "\" を追加する必要があります。

添付 価値観() 最後のメソッド BarcodeReader.Read() バーコードの値を取得するメソッド呼び出し システム文字列 [] object.

コンソールに結果を表示するには、以下を使用できます foreach (フォーイーチ) 値を繰り返し処理するためのループ 文字列 [] 配列内で、ループブロック内で、呼び出します Console.WriteLine(コンソール.ライトライン)() method with the iterator variable as the parameter.

このメソッドは1次元バーコードフォーマットだけでなく、他のバーコードフォーマットも読み取ることができます。(コーダバー (Codabar), コード128 (Code128), コード39 (Code39), コード93 (Code93), EAN13, EAN18, ITF, MSI, UPCA, UPCE)それに加えて、2次元バーコードフォーマットも読み取ることができます。(アステカ, DataMatrix, QRコード) さまざまな画像形式で。

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

バーコード読み取りが遅すぎると感じていますか? 画像のバーコードが小さすぎてIronBarcodeが読み取れませんか? 画像の特定の領域だけを読み取りたいですか? さまざまな種類のバーコードが含まれている画像から特定の種類のバーコードのみを読み取りたいですか? 全体的な読書パフォーマンスを向上させたいですか? 心配無用!

バーコードリーダーオプション バーコードリーダーの動作を調整または調整することができ、上記のすべての問題に対処できるようにします。 詳細に見ていきましょう、そして利用可能なすべての調整可能なプロパティについて話し合いましょう。 バーコードリーダーオプション 逐一:

クロップエリア (クロップエリア (CropArea))

クロップエリア (CropArea) 型のプロパティです IronSoftware.Drawing.CropRectangle

(アイアンソフトウェア.ドローイング.クロップレクタングル) 利用可能 バーコードリーダーオプション ユーザーがIronBarcodeに読み取ってもらいたい画像の領域を指定できる機能です。 これにより、バーコードリーダーが画像全体をスキャンする必要がなくなるため、読み取り性能が向上し、読み取りエリアが指定されているため、読み取り精度も向上します。

以下の内容を日本語に翻訳します:

設定するには クロップエリア (CropArea) プロパティには、新しいRectangle型のオブジェクトをインスタンス化し、引数として長方形の座標、幅、および長さを指定するだけです。 受け入れられる測定単位はピクセルです(px). 日本語 CropArea = new System.Drawing.Rectangle(x, y, width, height)

バーコードタイプを期待

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

このプロパティを使用するには、単にセットしてください バーコードタイプを期待 の分野の一つへ バーコードエンコーディング enum (列挙型) IronBarcodeでサポートされているすべてのバコードタイプについて学び、それぞれのタイプからのサンプルバコードを見てみましょう。

  • オールワンディメンショナル 一次元バーコードの種類。 This includes Codabar, Code128, Code39, Code93, EAN13, EAN18, ITF, MSI, UPCA, UPCE barcodes.

  • AllTwoDimensional これには、Grid、Matrix、およびStackedバーコードが含まれます。 The barcode type that falls under 2 Dimensional barcodes are Aztec, DataMatrix, QRCode barcodes.

  • アステック : アステック 2D barcode format. アステック Code is a type of 2D barcode invented by Andrew Longacre, Jr. and Robert Hussey in 1995. Named after the resemblance of the central finder pattern to an アステック pyramid, アステック code has the potential to use less space than other matrix barcodes because it does not require a surrounding blank "quiet zone". Below is an example of an アステック Barcode
  • アステック barcode sample
    アステック Barcode
  • コーダバー : コーダバー is a linear barcode symbology developed in 1972 by Pitney Bowes Corp. コーダバー encodes 数値データ(数字)のみ. Below is an example of コーダバー barcode
  • コーダバー barcode sample
    コーダバー Barcode
  • コード128 コード128は、ISO/IEC 15417:2007に定義された高密度線形バーコードのシンボル体系です。それは、使用されています 英数字または数字のみ barcodes. Below is an example of コード128 barcode
  • コード128 barcode sample
    コード128 Barcode
  • コード39 Code 39は、可変長のディスクリートバーコードシンボル体系です。Code 39の仕様 43 文字を定義します。大文字で構成。 (A through Z). Below is an example of a コード39 barcode
  • コード39 barcode sample
    コード39 Barcode
  • Code93 : Code 93 1Dバーコード形式。Code 93は、1982年にインターメックによって設計されたバーコードシンボルで、Code 39に比べて高い密度とデータセキュリティの向上を提供します。Code 93は、エンコーディングをサポートします 次のASCII文字のみ: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 - . $ / + % SPACE. 以下はCode93バーコードの例です。
  • Code93バーコードサンプル
    Code93バーコード
  • データマトリックス データマトリックスは、二次元バーコードの一種で、マトリックスとも呼ばれる、黒と白の「セル」またはモジュールが正方形または長方形のパターンで配置されたものです。エンコードされる情報は テキストまたは数値データ. Usual data size is from a few bytes up to 1556 bytes. Below is an example of a データマトリックス barcode
  • データマトリックス barcode sample
    データマトリックス Barcode
  • EAN13 (イーエーエヌサーティーン) 国際取引番号(別名ヨーロッパ取引番号またはEAN)は、特定の包装形態で、特定のメーカーから、特定の小売商品を識別するために、国際貿易で使用されるバーコードシンボロジーおよび番号体系を説明する標準です。EAN-13は 12桁または13桁の数値(数字)コンテンツのみエンコード. Shorter Barcodes will have trailing zeros (000) prepended to the start of the number automatically. Below is an example of EAN13 (イーエーエヌサーティーン) barcode
  • EAN13 (イーエーエヌサーティーン) barcode sample
    EAN13 (イーエーエヌサーティーン) Barcode
  • EAN8 EAN-8はEAN/UPCシンボルのバーコードであり、より長い国際商品コード(EAN-13)から派生しています。EAN-8は 7桁または8桁の数字(数字のみ)のコンテンツのみをエンコードする. より短いバーコードには、番号の先頭に自動的にゼロ(000)が追加されます。以下にEAN8バーコードの例を示します。
  • EAN8バーコードサンプル
    EAN8バーコード
  • インテリジェントメール インテリジェント・メール2Dバーコード形式。インテリジェント・メール・バーコード(IMバーコードまたは「USPSワンコード・バーコード」または「IMB」とも呼ばれる)は、アメリカ合衆国の郵便に使用される65本バーコードです。「インテリジェント・メール」という用語は、アメリカ合衆国郵便公社が国内郵便配達に対して提供するサービスを指します。IMバーコードは、以前のPOSTNETおよびPLANETよりも多くの情報と機能を提供することを目的としています。IronBarcodeは 読み取り専用 この種類のバーコードです。以下はこの種類のバーコードの例です。
  • インテリジェントメール barcode sample
    インテリジェントメール Barcode
  • ITF : ITF-14は、グローバルトレードアイテム番号をエンコードするためのインターリーブド2of5(ITF)バーコードのGS1実装です。 ITF-14シンボルは通常、製品のパッケージングレベル、例えば24缶入りのスープのケースボックスなどに使用されます。 ITF-14は常に14桁をエンコードします。 ITFはエンコードします 数値データのみ桁数が偶数でない場合、自動的に「0」が前に追加されます。以下はITFバーコードの例です。
  • ITFバーコードサンプル
    ITFバーコード
  • マキシコード : マキシコード 2D barcode format. マキシコード is a public domain, machine-readable symbol system originally created and used by United Parcel Service. Suitable for tracking and managing the shipment of packages, it resembles a barcode, but uses dots arranged in a hexagonal grid instead. Please note that IronBarcode can 読み取り専用 この種類のバーコードです。以下はこの種類のバーコードの例です。
  • マキシコード barcode sample
    マキシコード Barcode
  • MSI MSIは、プレスリーコードのシンボロジーに基づいてMSIデータコーポレーションによって開発されたバーコードシンボロジーです。このタイプのバーコード 数値のみを受け入れます以下は、MSIタイプのバーコードの例です。
  • MSIバーコードのサンプル
    MSIバーコード
  • PDF417 PDF417は、主に輸送、身分証明書、および在庫管理など、さまざまなアプリケーションで使用される積層型の線形バーコードシンボルフォーマットです。PDFはPortable Data File(ポータブルデータファイル)を意味し、417はコード内の各パターンが4つのバーとスペースで構成され、各パターンが17ユニットの長さであることを示しています。PDF417のシンボルは、1991年にSymbol TechnologiesのDr. Ynjiun P. Wangによって発明されました。(Wang 1993)これはISO標準15438です。以下はPDF417バーコードの例です。
  • PDF417 バーコード サンプル
    PDF417バーコード
  • ファーマコード :ファーマシューティカル バイナリ コード。医療業界で使用される読み取りフォールトトレラント バイナリバーコード標準。IronBarcode は 読み取り専用 this type of barcode. Below is an example of a ファーマコード barcode
  • ファーマコード barcode sample
    ファーマコード Barcode
  • プレスリー : プレスリー Code is a 1D linear barcode symbology based on pulse width modulation, developed in 1971 by The プレスリー Company PLC, a British-based company. This barcode type 数値のみを受け入れます. Below is an example of a プレスリー barcode
  • プレスリー barcode sample
    プレスリー Barcode
  • QRコード QRコード(クイックレスポンスコードの略)は、1994年に日本の自動車産業向けに初めて設計されたマトリックスバーコード(二次元バーコード)の商標です。バーコードは、それが貼付されたアイテムに関する情報を含む機械可読光学ラベルです。QRコードは、データを効率的に保存するために4つの標準化されたエンコーディングモード(数字、英数字、バイト/バイナリ、および漢字)を使用します。拡張子も使用できる場合があります。以下はQRコードバーコードの例です:
  • QRコード barcode sample
    QRコード Barcode
  • Rss14 : Reduce Space Symbology 14バーコードフォーマットは、1次元バーコードまたは積み重ねられた2次元バーコードを表すことができます。RSS 14バーコード(Reduce Space Symbology)は、適切に設定された販売時点管理レーザースキャナーによって全方向からスキャン可能な14桁のEAN.UCC商品識別番号をシンボルにエンコードします。これは、EAN InternationalおよびUniform Code Council, Inc.からの、スペースに制約のある識別のための最新のバーコードタイプです。RSSバーコードは主に、食品業界および医療分野で、他のバーコードシンボロジーを使用するスペースがない小さなアイテムに対して特化されています。IronBarcodeが 読み取り専用 このタイプのバーコードです。以下はRss14バーコードの例です。
  • 1D Rss14 バーコードサンプル
    1次元 RSS14 バーコード
    2D Rss14 バーコードサンプル
    2次元RSS14バーコード
  • “UPCA” : The Universal Product Code (UPC) is a barcode symbology that is widely used in the United States, Canada, United Kingdom, Australia, New Zealand, in Europe and other countries for tracking trade items in stores. UPC (technically refers to UPC-A) consists of 12 numeric digits, that are uniquely assigned to each trade item. Along with the related EAN barcode, the UPC is the barcode mainly used for scanning of trade items at the point of sale, per GS1 specifications. “UPCA” may 12桁または13桁の数値(数字)コンテンツのみエンコード. Shorter Barcodes will have trailing zeros (000) prepended to the start of the number automatically. Below is an example of a “UPCA” barcode
  • “UPCA”  barcode sample
    “UPCA” Barcode
  • UPCE 小さいパッケージに使用するため、12桁のバーコードが収まらない場合に対応するため、UPCの「ゼロ抑制」バージョンであるUPC-Eが開発されました。これは番号システム桁、製造者コードのすべての末尾のゼロ、および製品コードのすべての先頭のゼロが抑制されたものです。UPCEは 7桁または8桁の数字(数字のみ)のコンテンツのみをエンコードする以下はUPCEバーコードの例です。
  • UPCEバーコードサンプル
    UPCEバーコード

複数のバーコードを予期する

IronBarcodeはデフォルトで画像内のすべてのバーコードをスキャンし、画像全体をスキャンして読み取ったバーコードの値を文字列配列に追加します。 ただし、ユーザーが画像ファイル内の複数のバーコードを読み取ることを望まない場合、このプロパティを設定することができます。 バーコードの値を検出すると、バーコードリーダーがスキャンを停止するようにします。 これにより、IronBarcodeのパフォーマンスと読取り速度が再び向上します。

イメージフィルターズ

次のプロパティの一つは追加できます バーコードリーダーオプション 画像フィルターのコレクションです。 画像フィルターは、IronBarcodeに供給される生の画像を前処理するために重要です。 次の中で画像フィルターを適用するには バーコードリーダーオプション、ユーザーはまず初期化を行い、指定する必要があります イメージフィルター 使用するコレクション。

MaxParallelThreads (最大並列スレッド数)

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

マルチスレッド

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

RemoveFalsePositive (誤検知除去)

このプロパティは、偽陽性のバーコード読み取りを削除します。 誤ったポジティブなバーコード読み取りとは、バーコードの値を誤って読み取ったにもかかわらず、それが有効であると認識されることを意味します。 これはシーケンシングエラーやバーコードラベリングまたは準備プロセスでのエラーなど、シーケンシングプロセスにおけるエラーが原因で発生する可能性があります。 したがって、設定 RemoveFalsePositive trueが設定されていると、誤ったバーコードの読み取りを排除し、バーコード読み取りの精度を向上させます。 しかし、ユーザーが精度を犠牲にしてパフォーマンスを優先する場合、このプロパティを設定します 助けになります。このプロパティのデフォルト値は .

スピード

名前が示すように、 スピード ユーザーがIronBarcodeバーコードリーダーのパフォーマンスをさらに最適化できるようにする。 同様に RemoveFalsePositive このプロパティを調整することで、精度を犠牲にしてパフォーマンスを向上させることができますが、以下の4つのレベルで示されるように改善が見られます:

  • ReadingSpeed.Faster(読み込み速度.高速)

    設定 スピード この値にプロパティを設定すると、バーコードの読み取りが最速になりますが、精度が犠牲になります。 プログラムは迅速に実行を終了しますが、ほとんどの場合、空のバーコード結果が返されます。これは、入力画像が前処理されていないためです。 全く そして、IronBarcodeはそのままバーコード画像を読み取ります。 ユーザーには、入力画像が鮮明であると確信している場合にのみこの値を使用するように推奨されます。

  • 読み取り速度.バランス

    この設定は 推奨される のために スピード プロパティ。 それは、バーコードリーダーが検出できるように、画像に対して軽い処理を適用してバーコード領域を明確にし、目立たせることで、精度と読み取り性能のバランスを取ります。 ほとんどの場合、この設定でIronBarcodeはバーコード画像を読み取り、正確な出力を生成するのに十分です。

    申し訳ありませんが、翻訳を行うための具体的なコンテンツが提供されていません。翻訳したい英語のテキストを入力してください。 ReadingSpeed.Detailed

    設定を使用する場合 読み取り速度.バランス 読み取りからバーコードの値を生成できない場合、ユーザーは次の方法を選択できます ReadingSpeed.Detailed. IronBarcodeは、画像に対して中程度の処理を行い、バーコード領域をさらに明確にし、バーコードリーダーがバーコードを検出しやすくします。 この設定は、小さなまたは不鮮明なバーコード画像を検出するのに非常に便利です。

    この設定はCPU集約型であり、読み取りパフォーマンスに影響を与える可能性があることにご注意ください。 ユーザーは、この設定を使用する前に他の設定を試してみることをお勧めします。 の組み合わせ ReadingSpeed.Detailed と共に RemoveFalsePositive "True" に設定すると、コンソールに警告が表示されます。 ただし、読み取りには影響せず、無視できます。

  • ReadingSpeed.ExtremeDetail(極端な詳細読み取り速度)

    この設定は 少なくとも バーコード画像に対して重い処理を行い、リーダーがバーコードを読み取れるようにするため、CPU負荷の高いプロセスであることから、推奨設定です。 これはIronBarcodeの読み取りパフォーマンスを大幅に低下させます。 ユーザーは、この設定を選択する前に、画像の前処理/フィルター適用を行うことを推奨します。

    この設定はCPU集約型であり、読み取りパフォーマンスに影響を与える可能性があることにご注意ください。 ユーザーは、この設定を使用する前に他の設定を試してみることをお勧めします。 の組み合わせ ReadingSpeed.ExtremeDetail(極端な詳細読み取り速度) と共に RemoveFalsePositive "True" に設定すると、コンソールに警告が表示されます。 ただし、読み取りには影響せず、無視できます。

拡張コード39モードを使用

この設定により、コード39形式のバーコードが拡張モードで読み取り、解釈され、完全なASCII文字セットが適用されるようになります。 設定 拡張コード39モードを使用 Code39 バーコードの読み取り精度を向上させます。

画像からバーコードを高度読み取り

すべてのオプションを把握し、ユーザーがパフォーマンスや精度を向上させるためにどのように調整できるかを学んだところで、これをコードにどのように適用できるか見てみましょう。 以下のコードスニペットは、デモンストレーションを行うものです。

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

BarcodeReaderOptions myOptions = new BarcodeReaderOptions()
{
    ExpectBarcodeTypes = BarcodeEncoding.AllOneDimensional, //or AllTwoDimensional
    ExpectMultipleBarcodes = true, // Default is true
    MaxParallelThreads = 2, // Default is 4
    Speed = ReadingSpeed.Detailed, // 4 levels of speed. Default is Balanced
    CropArea = new IronSoftware.Drawing.Rectangle(x: 242, y: 1124, width: 359, height: 378), // Units are in px
    ImageFilters = new ImageFilterCollection { new BinaryThresholdFilter() }, // Assign to image filter object name
    Multithreaded = true, // Default is true
    UseCode39ExtendedMode = true, // Default is true

};

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

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

Private myOptions As New BarcodeReaderOptions() With {
	.ExpectBarcodeTypes = BarcodeEncoding.AllOneDimensional,
	.ExpectMultipleBarcodes = True,
	.MaxParallelThreads = 2,
	.Speed = ReadingSpeed.Detailed,
	.CropArea = New IronSoftware.Drawing.Rectangle(x:= 242, y:= 1124, width:= 359, height:= 378),
	.ImageFilters = New ImageFilterCollection From {New BinaryThresholdFilter()},
	.Multithreaded = True,
	.UseCode39ExtendedMode = True
}

Private myBarcode = BarcodeReader.Read("image_file_path.jpg", myOptions) ' Image file path

For Each item In myBarcode
	Console.WriteLine(item.ToString())
Next item
VB   C#

コードスニペットから、使用するためには バーコードリーダーオプション まず初期化を行い、その後プロパティを決定して調整することができます バーコードリーダーオプション 上記のプロパティに従って。 初期化された バーコードリーダーオプション その後、引数として使用することができます BarcodeReader.Read() メソッドと画像ファイルと共に。この設定がすべて適用されます バーコードリーダーオプション 画像からバーコードを読み取るとき。

ハイリル ハシミ ビン オマル

ソフトウェアエンジニア

すべての優れたエンジニアと同じように、Hairilは熱心な学習者です。C#、Python、およびJavaの知識を洗練させ、その知識を活かしてIron Softwareのチームメンバーに価値を提供しています。Hairilはマレーシアのマラ工科大学(Universiti Teknologi MARA)で化学およびプロセス工学の学士号を取得し、Iron Softwareチームに加わりました。