更新済み 2025年2月8日
共有:

画像ファイル(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
$vbLabelText   $csharpLabel
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バーコード
  • コード39Code 39は、可変長のディスクリートバーコードシンボル体系です。Code 39の仕様43 文字を定義します。大文字で構成。(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は12桁または13桁の数値(数字)コンテンツのみエンコード短いバーコードには自動的に先頭にゼロ(000)が補われます。以下はEAN13バーコードの例です。
  • EAN13バーコードサンプル
    EAN13バーコード
  • EAN8EAN-8はEAN/UPCシンボルのバーコードであり、より長い国際商品コード(EAN-13)から派生しています。EAN-8は7桁または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バーコードサンプル
    マキシコード バーコード
  • MSIMSIは、プレスリーコードのシンボロジーに基づいてMSIデータコーポレーションによって開発されたバーコードシンボロジーです。このタイプのバーコード数値のみを受け入れます以下は、MSIタイプのバーコードの例です。
  • MSIバーコードのサンプル
    MSIバーコード
  • PDF417PDF417は、主に輸送、身分証明書、および在庫管理など、さまざまなアプリケーションで使用される積層型の線形バーコードシンボルフォーマットです。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 バーコードサンプル
    1次元 RSS14 バーコード
    2D Rss14 バーコードサンプル
    2次元RSS14バーコード
  • “UPCA” Universal Product Code (UPC) は、商品を追跡するために、アメリカ合衆国、カナダ、イギリス、オーストラリア、ニュージーランド、ヨーロッパおよび他の国々で広く使用されているバーコードシンボルです。UPC(技術的には UPC-A を指します)は、12 桁の数字で構成されており、それぞれの取引アイテムに一意に割り当てられています。関連する EAN バーコードと共に、UPC は、GS1 規格に従って、販売時点での取引アイテムのスキャンに主に使用されるバーコードです。UPCA は12桁または13桁の数値(数字)コンテンツのみエンコードバーコードが短い場合、自動的に先頭にゼロ (000) が追加されます。以下にUPCAバーコードの例を示します。
  • UPCAバーコードサンプル
    UPC-Aバーコード
  • UPCE小さいパッケージに使用するため、12桁のバーコードが収まらない場合に対応するため、UPCの「ゼロ抑制」バージョンであるUPC-Eが開発されました。これは番号システム桁、製造者コードのすべての末尾のゼロ、および製品コードのすべての先頭のゼロが抑制されたものです。UPCEは7桁または8桁の数字(数字のみ)のコンテンツのみをエンコードする以下はUPCEバーコードの例です。
  • UPCEバーコードサンプル
    UPCEバーコード

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

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

イメージフィルターズ

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

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

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

マルチスレッド

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

RemoveFalsePositive (誤検知除去)

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

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

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

    このオプションはIronBarCode.Slim単独で使用できます。

読書速度

名前が示すように、Speed プロパティはユーザーがIronBarcodeリーダーの性能をさらに最適化できるようにします。 RemoveFalsePositive プロパティと同様に、このプロパティを調整することでパフォーマンスが向上しますが、精度が犠牲になります。 これは、以下の4つのレベルを持つReadingSpeed列挙型を受け入れます。

  • 高速: Speed プロパティをこの値に設定すると、最速のバーコード読み取りが可能になりますが、精度が低下します。 このプロセスでは画像の前処理をスキップするため、しばしばバーコード結果が空になります。 入力画像が鮮明でクリアな場合のみ、この設定を使用してください。
  • バランス: この設定は 推奨されるのためにスピード プロパティ。 それは、バーコードリーダーが検出できるように、画像に対して軽い処理を適用してバーコード領域を明確にし、目立たせることで、精度と読み取り性能のバランスを取ります。 ほとんどの場合、この設定でIronBarcodeはバーコード画像を読み取り、正確な出力を生成するのに十分です。
  • 詳細: 設定を使用する場合 ReadingSpeed.Balanced読み取りからバーコードの値を生成できない場合、ユーザーは次の方法を選択できますReadingSpeed.Detailed. IronBarcodeは、画像に対して中程度の処理を行い、バーコード領域をさらに明確にし、バーコードリーダーがバーコードを検出しやすくします。 この設定は、小さなまたは不鮮明なバーコード画像を検出するのに非常に便利です。
  • ExtremeDetail: この設定は 少なくとも バーコード画像に対して重い処理を行い、リーダーがバーコードを読み取れるようにするため、CPU負荷の高いプロセスであることから、推奨設定です。 これはIronBarcodeの読み取りパフォーマンスを大幅に低下させます。 ユーザーは、この設定を選択する前に、画像の前処理/フィルター適用を行うことを推奨します。

    申し訳ありませんが、翻訳するコンテンツのテキストを提供してください。その後、英語から日本語に翻訳いたします。!ただし、この設定はCPU負荷が高く、読み取りパフォーマンスに影響を与える可能性があることに注意してください。 ユーザーは、この設定を使用する前に他の設定を試してみることをお勧めします。 の組み合わせ ReadingSpeed.Detailedと共にRemoveFalsePositive "True" に設定すると、コンソールに警告が表示されます。 ただし、読み取りには影響せず、無視できます。 -->

    申し訳ありませんが、翻訳するコンテンツのテキストを提供してください。その後、英語から日本語に翻訳いたします。!ただし、この設定は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
$vbLabelText   $csharpLabel

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

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

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

ソフトウェアエンジニア

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