画像ファイル(JPEG、PNG、GIF、TIFF、SVG、BMP)からバーコードを読み取る方法

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

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


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

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

    今日から無料トライアルでIronBarcodeをあなたのプロジェクトで使い始めましょう。

    最初のステップ:
    green arrow pointer

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

IronBarcodeの主要な機能の一つは、複数の画像形式でバーコードを即座に読み取る能力です。 IronBarcodeが現在サポートしている画像フォーマットは次のとおりです。

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

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

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

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

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

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

これはオープンソースライブラリの助けを借りて実現しています。 IronDrawing. 次に、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
VB   C#
QRcodeintro related to 画像から直接バーコードを読み取る
サンプルテストQRコード
Code128intro related to 画像から直接バーコードを読み取る
サンプルテストバーコード

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

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

添付 価値観() 最後のメソッド BarcodeReader.Read() バーコードの値を取得するメソッド呼び出し System.String [] 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 IronSoftware.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.

  • アステック : Aztec 2Dバーコードフォーマット。Aztecコードは、Andrew Longacre, Jr.とRobert Husseyが1995年に発明した2Dバーコードの一種です。中央のファインダーパターンがアステカのピラミッドに似ていることから名付けられたAztecコードは、周囲の空白である「クワイエットゾーン」を必要としないため、他のマトリクスバーコードよりもスペースを節約できる可能性があります。以下にAztecバーコードの例を示します
  • アステカバーコードのサンプル
    アステックバーコード
  • コーダバー : Codabar は、1972年にPitney Bowes社によって開発された1次元バーコードシンボルです。Codabarはエンコードしています。 数値データ(数字)のみ以下はCodabarバーコードの例です。
  • Codabarバーコードサンプル
    コーダバー バーコード
  • コード128 コード128は、ISO/IEC 15417:2007に定義された高密度線形バーコードのシンボル体系です。それは、使用されています 英数字または数字のみ バーコード。以下はCode128バーコードの例です。
  • Code128バーコードのサンプル
    Code128バーコード
  • コード39 Code 39は、可変長のディスクリートバーコードシンボル体系です。Code 39の仕様 3 文字を定義します。大文字で構成。 (AからZ)。以下は、Code39バーコードの例です。
  • Code39 バーコードサンプル
    Code39 バーコード
  • 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バーコード
  • データマトリックス データマトリックスは、二次元バーコードの一種で、マトリックスとも呼ばれる、黒と白の「セル」またはモジュールが正方形または長方形のパターンで配置されたものです。エンコードされる情報は テキストまたは数値データ. 通常のデータサイズは数バイトから1556バイトまでです。以下にDataMatrixバーコードの例を示します。
  • DataMatrixバーコードサンプル
    データマトリックス バーコード
  • EAN13 (イーエーエヌサーティーン) 国際取引番号(別名ヨーロッパ取引番号またはEAN)は、特定の包装形態で、特定のメーカーから、特定の小売商品を識別するために、国際貿易で使用されるバーコードシンボロジーおよび番号体系を説明する標準です。EAN-13は 2桁または13桁の数値(数字)コンテンツのみエンコード短いバーコードには自動的に先頭にゼロ(000)が補われます。以下はEAN13バーコードの例です。
  • EAN13バーコードサンプル
    EAN13バーコード
  • EAN8 EAN-8はEAN/UPCシンボルのバーコードであり、より長い国際商品コード(EAN-13)から派生しています。EAN-8は 桁または8桁の数字(数字のみ)のコンテンツのみをエンコードする. より短いバーコードには、番号の先頭に自動的にゼロ(000)が追加されます。以下にEAN8バーコードの例を示します。
  • EAN8バーコードサンプル
    EAN8バーコード
  • インテリジェントメール インテリジェント・メール2Dバーコード形式。インテリジェント・メール・バーコード(IMバーコードまたは「USPSワンコード・バーコード」または「IMB」とも呼ばれる)は、アメリカ合衆国の郵便に使用される65本バーコードです。「インテリジェント・メール」という用語は、アメリカ合衆国郵便公社が国内郵便配達に対して提供するサービスを指します。IMバーコードは、以前のPOSTNETおよびPLANETよりも多くの情報と機能を提供することを目的としています。IronBarcodeは 読み取り専用 この種類のバーコードです。以下はこの種類のバーコードの例です。
  • インテリジェントメール バーコード サンプル
    インテリジェントメールバーコード
  • ITF : ITF-14は、グローバルトレードアイテム番号をエンコードするためのインターリーブド2of5(ITF)バーコードのGS1実装です。 ITF-14シンボルは通常、製品のパッケージングレベル、例えば24缶入りのスープのケースボックスなどに使用されます。 ITF-14は常に14桁をエンコードします。 ITFはエンコードします 数値データのみ桁数が偶数でない場合、自動的に「0」が前に追加されます。以下はITFバーコードの例です。
  • ITFバーコードサンプル
    ITFバーコード
  • マキシコード :MaxiCode 2Dバーコードフォーマット。MaxiCodeは、元々ユナイテッド・パーセル・サービスによって作成され、使用されたパブリックドメインの機械読み取り可能な記号システムです。荷物の追跡と管理に適しており、バーコードに似ていますが、六角形のグリッドに配置されたドットを使用します。IronBarcodeではこのフォーマットをサポートできますことをお知らせします。 読み取り専用 この種類のバーコードです。以下はこの種類のバーコードの例です。
  • MaxiCodeバーコードサンプル
    マキシコード バーコード
  • 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バーコード
  • プレスリー プレッセイコードはパルス幅変調に基づく1次元線形バーコードシンボルで、1971年に英国に拠点を置くプレッセイ・カンパニーPLCによって開発されました。このバーコードタイプは 数値のみを受け入れます以下はPlessyバーコードの例です。
  • プレスマーバーコードサンプル
    プレスリーバーコード
  • QRコード QRコード(クイックレスポンスコードの略)は、1994年に日本の自動車産業向けに初めて設計されたマトリックスバーコード(二次元バーコード)の商標です。バーコードは、それが貼付されたアイテムに関する情報を含む機械可読光学ラベルです。QRコードは、データを効率的に保存するために4つの標準化されたエンコーディングモード(数字、英数字、バイト/バイナリ、および漢字)を使用します。拡張子も使用できる場合があります。以下はQRコードバーコードの例です:
  • QRCodeバーコードサンプル
    QRコード バーコード
  • 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 バーコードサンプル
    次元 RSS14 バーコード
    2D Rss14 バーコードサンプル
    次元RSS14バーコード
  • “UPCA” Universal Product Code (UPC) は、商品を追跡するために、アメリカ合衆国、カナダ、イギリス、オーストラリア、ニュージーランド、ヨーロッパおよび他の国々で広く使用されているバーコードシンボルです。UPC(技術的には UPC-A を指します)は、12 桁の数字で構成されており、それぞれの取引アイテムに一意に割り当てられています。関連する EAN バーコードと共に、UPC は、GS1 規格に従って、販売時点での取引アイテムのスキャンに主に使用されるバーコードです。UPCA は 2桁または13桁の数値(数字)コンテンツのみエンコードバーコードが短い場合、自動的に先頭にゼロ (000) が追加されます。以下にUPCAバーコードの例を示します。
  • UPCAバーコードサンプル
    UPC-Aバーコード
  • UPCE 小さいパッケージに使用するため、12桁のバーコードが収まらない場合に対応するため、UPCの「ゼロ抑制」バージョンであるUPC-Eが開発されました。これは番号システム桁、製造者コードのすべての末尾のゼロ、および製品コードのすべての先頭のゼロが抑制されたものです。UPCEは 桁または8桁の数字(数字のみ)のコンテンツのみをエンコードする以下はUPCEバーコードの例です。
  • UPCEバーコードサンプル
    UPCEバーコード

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

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

イメージフィルターズ

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

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

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

マルチスレッド

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

RemoveFalsePositive (誤検知除去)

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

スピード

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

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

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

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

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

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

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

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

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

この設定は <strong>少なくとも</strong> バーコード画像に対して重い処理を行い、リーダーがバーコードを読み取れるようにするため、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 related to 画像からバーコードを高度読み取り

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

ソフトウェアエンジニア

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