Javaを使用して画像からバーコードを読み取る

バーコードは、製造から販売までの製品の在庫と配送を正確に追跡する上で重要な役割を果たします。場合によっては、プログラムで画像からバーコードを読み取る必要があります。 Javaアプリケーションでは、さまざまな種類のバーコードやQRコードを簡単に検出、認識、読み取ることができます。バーコードリーダーまたはスキャナーアプリケーションの開発に役立ちます。この記事では、Javaを使用して画像からバーコードを読み取る方法を学習します。

この記事では、次のトピックについて説明します。

バーコードとは

バーコードは、エンコードされたデータを数字と平行線のパターンの形式で表す機械可読コードです。バーコード画像は、幅、間隔、サイズが異なる一連の平行な黒と白のバーを示しています。バーコードリーダーまたはスキャナーは、バーコード画像をスキャンして情報をデコードします。

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

Javaアプリケーション内の画像からバーコードを読み取るために、Aspose.BarCode forJavaを使用します。これは、さまざまなバーコードシンボルを生成、スキャン、および読み取ることができる機能豊富なAPIです。 APIのBarCodeReaderクラスを使用すると、バーコードを読み取ることができます。このクラスのreadBarCodes()メソッドは、認識されたバーコードの配列を返します。 APIを使用すると、指定したDecodeTypeのバーコードを読み取ることができます。 APIのBarCodeResultクラスは、バーコードタイプ、コードテキスト、地域、その他のパラメータなど、認識されたバーコードデータを格納します。

APIのJARをダウンロードするか、MavenベースのJavaアプリケーションに次のpom.xml構成を追加してください。

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>http://repository.aspose.com/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-barcode</artifactId>
    <version>22.5</version>
</dependency>

Javaで画像からバーコードを読み取る

以下の手順に従って、画像からバーコードを読み取ることができます。

  • まず、BarCodeReaderクラスを使用して画像を読み込みます。
  • readBarCodes()メソッドを使用して、BarCodeResultクラスオブジェクトで認識結果を取得します。
  • 最後に、結果をループして、バーコードのタイプとテキストを表示します。

次のコードサンプルは、Javaを使用して画像からバーコードを読み取る方法を示しています。

// このコード例は、画像からバーコードを読み取る方法を示しています。
// 画像ディレクトリへのパス
String dataDir = "C:\\Files\\BarCode\\";

// バーコードリーダーを初期化する
BarCodeReader reader = new BarCodeReader(dataDir + "CodeText.jpg");

// バーコードを読んで結果を表示する
for (BarCodeResult result : reader.readBarCodes()) {
  System.out.println("CodeText: " + result.getCodeText());
  System.out.println("Symbology type: " + result.getCodeType());
}
画像からバーコードを読み取ります。

Javaで画像からバーコードを読み取ります。

Javaで特定のタイプのバーコードを認識する

以下の手順に従って、画像から特定のタイプのバーコードを読み取ることができます。

  • まず、ImageIO.read()メソッドを使用して画像ファイルのバッファデータを読み取ります。
  • 次に、バッファリングされた画像とデコードタイプを使用してBarCodeReaderクラスのインスタンスを作成します。
  • 次に、バーコードデコードタイプを設定して、CODE \ 39\STANDARDなどの特定のタイプのバーコードを読み取ります。
  • その後、readBarCodes()メソッドを使用してBarCodeResultクラスオブジェクトで認識結果を取得します。
  • 最後に、結果をループして、バーコードのタイプとテキストを表示します。

次のコードサンプルは、Javaを使用して画像から特定のタイプのバーコードを読み取る方法を示しています。

// このコード例は、画像から特定のデコードタイプのバーコードを読み取る方法を示しています。
// 画像ディレクトリへのパス
String dataDir = "C:\\Files\\BarCode\\";

// ふわふわした画像を取得する
BufferedImage img = ImageIO.read(new File(dataDir + "CODE_39_STANDARD.jpg"));

// バーコードリーダーを初期化する
BarCodeReader reader = new BarCodeReader(img, DecodeType.CODE_39_STANDARD);

// タイプCode39Extendedのバーコードを読み取る
for (BarCodeResult result : reader.readBarCodes()) {
  System.out.println("CodeText: " + result.getCodeText());
  System.out.println("Symbology type: " + result.getCodeType());
}
特定のタイプのバーコードを認識します。

Javaで特定のタイプのバーコードを認識します。

Javaで画像から複数のバーコードを読み取る

以下の手順に従って、画像から利用可能なすべてのバーコードを読み取ることもできます。

  • まず、BarCodeReaderクラスを使用して画像を読み込みます。
  • 次に、バーコードデコードタイプをALL_SUPPORTED\TYPESとして設定します。
  • その後、readBarCodes()メソッドを使用してBarCodeResultクラスオブジェクトで認識結果を取得します。
  • 最後に、結果をループして、バーコードのタイプとテキストを表示します。

次のコードサンプルは、Javaを使用して画像から複数のバーコードを読み取る方法を示しています。

// このコード例は、画像からバーコード複数のバーコードを読み取る方法を示しています。
// 画像ディレクトリへのパス
String dataDir = "C:\\Files\\BarCode\\";

// バーコードリーダーを初期化する
BarCodeReader reader = new BarCodeReader(dataDir + "MultipleBarcodes.png", DecodeType.ALL_SUPPORTED_TYPES);

// 入力画像で利用可能なすべてのタイプのバーコードを読み取ります
for (BarCodeResult result : reader.readBarCodes()) {
  System.out.println("CodeText: " + result.getCodeText());
  System.out.println("Symbology type: " + result.getCodeType());
  System.out.println("-------------------------");
}
画像から複数のバーコードを読み取ります。

画像から複数のバーコードを読み取ります。

Javaを使用してバーコードのX座標とY座標を取得する

以下の手順に従って、画像から検出されたバーコードのX座標とY座標を読み取ることができます。

  • まず、BarCodeReaderクラスを使用して画像を読み込みます。
  • 次に、readBarCodes()メソッドを使用して、BarCodeResultクラスオブジェクトで認識結果を取得します。
  • 次に、結果をループして、getRegion()がnullでないかどうかを確認します。
  • その後、getPoints()を使用して、バーコード領域の境界となるPoints配列を取得します。
  • 最後に、バーコードのXポイントとYポイントを表示します。

次のコードサンプルは、Javaを使用して画像からバーコードのX座標点とY座標点を取得する方法を示しています。

// このコード例は、画像からバーコードのXおよびY領域ポイントを読み取る方法を示しています。
// 画像ディレクトリへのパス
String dataDir = "C:\\Files\\BarCode\\";

// バーコードリーダーを初期化する
BarCodeReader reader = new BarCodeReader(dataDir + "Code39Std.png", DecodeType.ALL_SUPPORTED_TYPES);

// バーコードを読む
for (BarCodeResult result : reader.readBarCodes()) {
  if (result.getRegion() != null) {
    // 検出されたすべてのバーコードのx座標とy座標を表示します
    Point[] point = result.getRegion().getPoints();
    System.out.println("Top left coordinates: X = " + point[0].x + ", Y = " + point[0].y);
    System.out.println("Bottom left coordinates: X = " + point[1].x + ", Y = " + point[1].y);
    System.out.println("Bottom right coordinates: X = " + point[2].x + ", Y = " + point[2].y);
    System.out.println("Top right coordinates: X = " + point[3].x + ", Y = " + point[3].y);
  }
}
バーコードのX座標とY座標を取得します。

画像からバーコードのX座標とY座標を取得します。

Javaで画像の特定の領域からバーコードを読み取る

以下の手順に従って、画像の特定の領域または領域からバーコードを読み取ることができます。

  • まず、ImageIO.read()メソッドを使用して画像ファイルのバッファデータを読み取ります。
  • 次に、BarCodeReaderクラスのインスタンスを作成します。引数として、バッファリングされた画像、長方形の領域、およびデコードタイプを取ります。
  • その後、readBarCodes()メソッドを使用してBarCodeResultクラスオブジェクトで認識結果を取得します。
  • 最後に、結果をループして、バーコードのタイプとテキストを表示します。

次のコードサンプルは、Javaを使用して画像の特定の領域からバーコードを読み取る方法を示しています。

// このコード例は、画像の特定の領域からバーコードを読み取る方法を示しています。
// 画像ディレクトリへのパス
String dataDir = "C:\\Files\\BarCode\\";

// BufferedImageを取得する
java.awt.image.BufferedImage img = javax.imageio.ImageIO.read(new java.io.File(dataDir + "specificRegion.png"));

// BarCodeReaderクラスのインスタンスを作成します
// バーコードを探す領域を指定します
BarCodeReader reader = new BarCodeReader(img, new Rectangle(0, 0, 700, 100), DecodeType.ALL_SUPPORTED_TYPES);

// 提供された領域のすべてのバーコードを読み取ります
for (BarCodeResult result : reader.readBarCodes()) {
  System.out.println("CodeText: " + result.getCodeText());
  System.out.println("Symbology type: " + result.getCodeType());
}
画像の特定の領域からバーコードを読み取ります。

Javaで画像の特定の領域からバーコードを読み取ります。

無料ライセンスを取得する

無料の一時ライセンスを取得して、評価の制限なしにライブラリを試すことができます。

結論

この記事では、次の方法を学びました。

  • プログラムでバーコード画像をロードします。
  • 画像からさまざまなタイプのバーコードを認識します。
  • Javaでバーコード座標を読み取ります。
  • 1つの画像から複数のバーコードを検出して読み取ります。
  • 画像の特定の領域からバーコードを検出して読み取ります。

さらに、ドキュメントを使用して、JavaAPIのAspose.BarCodeについて詳しく知ることができます。ご不明な点がございましたら、フォーラムまでお気軽にお問い合わせください。

関連項目