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

PDF 請求書、領収書、レポートなどのドキュメントには、バーコード形式のエンコードされた情報が含まれている場合があります。 PDF ドキュメントに埋め込まれたバーコードをプログラムで検出、識別、読み取ることができます。この記事では、Java を使用して PDF ドキュメントからバーコードを読み取る方法を学習します。さらに、Java で PDF 文書からバーコード画像を抽出する方法を学びます。

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

  1. PDF からバーコードを読み取る Java API
  2. PDF からバーコードを読み取る
  3. PDF を画像に変換し、バーコードを読み取る
  4. PDF からバーコードを抽出して読み取る
  5. PngDevice を使用して PDF からバーコードを読み取る
  6. PDF からバーコード イメージを検索して読み取る

PDF からバーコードを読み取る Java API

PDF ドキュメントからバーコードを読み取るには、2 段階の手順に従います。まず、Aspose.PDF for Java API を使用して PDF ドキュメントをロードし、そのページをラスター イメージにレンダリングします。その後、Aspose.BarCode for Java API を使用して、レンダリングされた画像からバーコードを読み取ります。

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

<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.8</version>
</dependency>
    
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-pdf</artifactId>
    <version>22.8</version>
</dependency>

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

Aspose.PDF API は、PDF ドキュメントを表す Document クラスを提供します。 API の convertToPNGMemoryStream() メソッドは、PDF ページを byte[] 配列の画像ストリームにレンダリングします。 Aspose.BarCode API は、readBarCodes 操作を実行してバーコードを検出できる BarCodeReader クラスを提供します。 BarCodeResult クラスは、検出されたバーコード情報 (バーコード タイプ、コード テキスト、領域、その他のパラメーターなど) を格納します。

以下の手順に従って、PDF ドキュメントの任意のページに埋め込まれたバーコード イメージを読み取ることができます。

  1. まず、Document クラスを使用して PDF ドキュメントを読み込みます。
  2. 次に、すべてのページをループしてストリームにレンダリングします。
  3. 次に、ストリーム オブジェクトを使用して BarCodeReader クラスのインスタンスを作成します。
  4. その後、readBarCodes() メソッドを呼び出して BarCodeResult オブジェクトを取得します。
  5. 最後に、バーコード情報を表示します。

次のコード例は、Java を使用して PDF ドキュメントからバーコードを読み取る方法を示しています。

// このコード例は、Java を使用して PDF ドキュメントからバーコードを読み取る方法を示しています。
// ドキュメントへのパス
String file = "C:\\Files\\BarCode\\sample-PDF-with-Barcodes.pdf";

// PDF ドキュメントを読み込む
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);

// 1 ページ目からすべての PDF ページに進む
for (int i = 1; i <= pdfDoc.getPages().size(); ++i)
{
    // PDF ページをストリームにレンダリングする
    byte[] ms = pdfDoc.getPages().get_Item(i).convertToPNGMemoryStream();
    InputStream stream = new ByteArrayInputStream(ms);

    // ページ ストリームからバーコードを認識する
    BarCodeReader reader = new BarCodeReader(stream);

    // 結果を示す
  for (BarCodeResult result : reader.readBarCodes()) {
    System.out.println("CodeText: " + result.getCodeText());
    System.out.println("Symbology type: " + result.getCodeType());
    System.out.println(("-------------------------------"));
  }
}
CodeText: Aspose.Barcode Pdf417 Example
Symbology type: Pdf417
-------------------------------
CodeText: Aspose.Barcode QR Example
Symbology type: QR
-------------------------------
CodeText: Aspose.Barcode DataMatrix Example
Symbology type: DataMatrix

このブログ投稿で使用されている バーコード付きの入力 PDF ドキュメントをダウンロード してください。

PDF を画像に変換し、Java を使用してバーコードを読み取る

PDF ページを画像に変換することで、PDF ドキュメントからバーコードを読み取ることもできます。 API の PdfConverter クラスを使用すると、PDF ファイルの各ページを画像に変換できます。その後、変換された画像からバーコード情報を読み取ります。

以下の手順に従って、変換された PDF ページからバーコードを読み取ることができます。

  1. まず、Document クラスを使用して PDF ドキュメントを読み込みます。
  2. 次に、PdfConverter クラスのインスタンスを作成します。
  3. 必要に応じて、setBarcodeOptimization() を使用してレンダリング オプションを設定します。
  4. 次に、画像の解像度を設定します。
  5. 次に、setStartPage() と setEndPage() を使用して、画像にレンダリングするページの範囲を指定します。
  6. 次に、doConvert() メソッドを呼び出して、選択したページを画像にレンダリングします。
  7. 次に、画像をループで保存します。
  8. 次に、保存した画像ファイル パスを使用して BarCodeReader クラスのインスタンスを作成します。
  9. その後、readBarCodes() メソッドを呼び出して BarCodeResult オブジェクトを取得します。
  10. 最後に、バーコード情報を表示します。

次のコード例は、Java を使用して PDF ページを画像に変換し、バーコードを読み取る方法を示しています。

// 次のコード例は、PDF Converter を使用して PDF ページを画像に変換し、バーコードを読み取る方法を示しています。
// ドキュメントへのパス
String folderPath = "C:\\Files\\BarCode\\";

// 入力ファイル パス
String file = folderPath + "sample-PDF-with-Barcodes.pdf";

// PDF ドキュメントを読み込む
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);

// PdfConvertor を初期化する
com.aspose.pdf.facades.PdfConverter pdfConverter = new com.aspose.pdf.facades.PdfConverter(pdfDoc);

// バーコード最適化の設定
pdfConverter.getRenderingOptions().setBarcodeOptimization(true);

// ページ解像度の設定
// 300 dpi が標準解像度です
pdfConverter.setResolution(new com.aspose.pdf.devices.Resolution(300));

// すべてのページを画像にレンダリングするように設定する
pdfConverter.setStartPage(1); //starts from page 1
pdfConverter.setEndPage(pdfConverter.getDocument().getPages().size());

// 選択したページを画像にレンダリング
pdfConverter.doConvert();
int imageCount = 1;

while (pdfConverter.hasNextImage())
{
    // 現在のページを画像にレンダリング
    String strBarCodeImage = folderPath + imageCount + ".jpg";
    pdfConverter.getNextImage(strBarCodeImage);

    // ページのレンダリング画像からバーコードを認識
    BarCodeReader reader = new BarCodeReader(strBarCodeImage);

    // 結果を示す
    for (BarCodeResult result : reader.readBarCodes()) {
    System.out.println("CodeText: " + result.getCodeText());
    System.out.println("Symbology type: " + result.getCodeType());
    System.out.println(("-------------------------------"));
  }
}

Java を使用して PDF からバーコードを抽出して読み取る

同様に、PdfExtractor クラスを使用して、PDF ページに埋め込まれたバーコード画像も認識できます。 PDF から画像を抽出し、抽出した画像からバーコード情報を読み取ります。

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

  1. まず、PdfExtractor クラスのインスタンスを作成します。
  2. 次に、bindPdf() メソッドを使用して、入力 PDF ドキュメントをバインドします。
  3. 次に、画像を抽出するページ範囲を設定します。
  4. 次に、extractImage() メソッドを呼び出して画像を抽出します。
  5. 次に、画像をループで保存します。
  6. 次に、画像パスを使用して BarCodeReader クラスのインスタンスを作成します。
  7. その後、readBarCodes() メソッドを呼び出して BarCodeResult オブジェクトを取得します。
  8. 最後に、バーコード情報を表示します。

次のコード例は、Java を使用して PDF ドキュメントからバーコード イメージを抽出して読み取る方法を示しています。

// 次のコード例は、PdfExtractor を使用して PDF ページを画像に変換し、バーコードを読み取る方法を示しています。
// ドキュメントへのパス
String folderPath = "C:\\Files\\BarCode\\";

// 入力ファイル
String file = folderPath + "sample-PDF-with-Barcodes.pdf";

// PDF ドキュメントを製本する
com.aspose.pdf.facades.PdfExtractor pdfExtractor = new com.aspose.pdf.facades.PdfExtractor();
pdfExtractor.bindPdf(file);

// 画像抽出のページ範囲を設定する
pdfExtractor.setStartPage(1);
pdfExtractor.setEndPage(3);

// 画像を抽出する
pdfExtractor.extractImage();

int imageCount = 1;

// 画像を保存してループでストリーミングする
while (pdfExtractor.hasNextImage())
{
  // 画像を保存
  String strBarCodeImage = folderPath + imageCount + ".jpg";
  pdfExtractor.getNextImage(strBarCodeImage);

  // 画像からバーコードを認識
  BarCodeReader reader = new BarCodeReader(strBarCodeImage);

  for (BarCodeResult result : reader.readBarCodes()) {
    System.out.println("CodeText: " + result.getCodeText());
    System.out.println("Symbology type: " + result.getCodeType());
    System.out.println(("-------------------------------"));
  }
}

Java で PngDevice を使用して PDF からバーコードを読み取る

API の PngDevice クラスを使用して PDF ドキュメントのページを PNG 画像に変換することで、バーコードを読み取ることもできます。ページを PNG に変換し、出力ストリームに保存する process(Page page, OutputStream output) メソッドを提供します。このクラスの processToBufferedImage(Page page) メソッドは、ページを BufferedImage に変換します。

以下の手順に従って、変換された PDF ページからバーコードを PNG 画像として読み取ることができます。

  1. まず、Document クラスを使用して PDF ドキュメントを読み込みます。
  2. 次に、PngDevice クラスのインスタンスを作成します。
  3. 次に、すべてのページをループし、processToBufferedImage() メソッドを呼び出して画像にレンダリングします。
  4. 次に、BufferedImage オブジェクトを使用して BarCodeReader クラスのインスタンスを作成します。
  5. その後、readBarCodes() メソッドを呼び出して BarCodeResult オブジェクトを取得します。
  6. 最後に、バーコード情報を表示します。

次のコード例は、Java を使用して PDF ページを変換し、バーコードを読み取る方法を示しています。

// 次のコード例は、PngDevice を使用して PDF ページを画像に変換し、バーコードを読み取る方法を示しています。
// ドキュメントへのパス
String file = "C:\\Files\\BarCode\\sample-PDF-with-Barcodes.pdf";

// PDF ドキュメントを読み込む
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);

// 300 dpi の標準解像度で PNG デバイスを作成する
com.aspose.pdf.devices.PngDevice pngDevice = new com.aspose.pdf.devices.PngDevice(new com.aspose.pdf.devices.Resolution(300));

// 1ページから始まるすべてのPDFページに進みます
for (int i = 1; i <= pdfDoc.getPages().size(); ++i)
{
    // PDF ページをバッファリングされた画像にレンダリングする
    BufferedImage img = pngDevice.processToBufferedImage(pdfDoc.getPages().get_Item(i));

    // ページのレンダリング画像からバーコードを認識
    BarCodeReader reader = new BarCodeReader(img);

    // 結果を示す
    for (BarCodeResult result : reader.readBarCodes()) {
    System.out.println("CodeText: " + result.getCodeText());
    System.out.println("Symbology type: " + result.getCodeType());
    System.out.println(("-------------------------------"));
  }
}

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

ImagePlacementAbsorber クラスを使用して、PDF ドキュメントからバーコード イメージを検索して抽出できます。画像の使用状況の検索を実行し、ImagePlacements コレクションを介して検索結果へのアクセスを提供します。この方法では、元の解像度でバーコードを認識できます。唯一の欠点は、ベクター形式を正しく認識できない可能性があることです。

以下の手順に従って、PDF ドキュメントからバーコードを見つけて読み取ることができます。

  1. まず、Document クラスを使用して PDF ドキュメントを読み込みます。
  2. 次に、ImagePlacementAbsorber クラスのインスタンスを作成します。
  3. 次に、ループ内の各ページに対して visit() メソッドを呼び出します。
  4. 次に、ImagePlacements コレクションで見つかったすべての画像をループします。
  5. 次に、イメージをメモリ ストリームに保存します。
  6. 次に、ストリーム オブジェクトを使用して BarCodeReader クラスのインスタンスを作成します。
  7. その後、readBarCodes() メソッドを呼び出して BarCodeResult オブジェクトを取得します。
  8. 最後に、バーコード情報を表示します。

次のコード例は、Java を使用して PDF からバーコード イメージを検索して読み取る方法を示しています。

// このコード例は、ImagePlacementAbsorber を使用して PDF ドキュメントからバーコードを読み取る方法を示しています。
// ドキュメントへのパス
String file = "C:\\Files\\BarCode\\sample-PDF-with-Barcodes.pdf";

// PDF ドキュメントを読み込む
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);

// ImagePlacementAbsorber の初期化
com.aspose.pdf.ImagePlacementAbsorber imagePlacementAbsorber = new com.aspose.pdf.ImagePlacementAbsorber();

// ドキュメント内のすべての PDF ページを 1 ページ目から処理する
for (int i = 1; i <= pdfDoc.getPages().size(); ++i)
{
    // ページにアクセスして、イメージ エクストラクタを作成します
    imagePlacementAbsorber.visit(pdfDoc.getPages().get_Item(i));

    // PDF ページからすべての画像を抽出する
    for (com.aspose.pdf.ImagePlacement imagePlacement : imagePlacementAbsorber.getImagePlacements()) {
      // PDF ページをストリームにレンダリングする
      byte[] ms = pdfDoc.getPages().get_Item(i).convertToPNGMemoryStream();
      InputStream stream = new ByteArrayInputStream(ms);

      // ページ ストリームからバーコードを認識する
      BarCodeReader reader = new BarCodeReader(stream);

      // 結果を示す
      for (BarCodeResult result : reader.readBarCodes()) {
        System.out.println("CodeText: " + result.getCodeText());
        System.out.println("Symbology type: " + result.getCodeType());
        System.out.println(("-------------------------------"));
      }
    }
}

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

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

結論

この記事で学んだこと

  • PDF ドキュメントからバーコードを検出して読み取る方法。
  • PDF ドキュメントから画像を抽出するさまざまな方法。
  • 埋め込まれたバーコードを Java でデコードします。

Java で PDF からバーコードを読み取る以外に、Aspose.BarCode のドキュメントAspose.PDF のドキュメント を使用して、API の詳細を学ぶことができます。ご不明な点がございましたら、無料サポート フォーラムまでお気軽にお問い合わせください。

関連項目