PDFドキュメントからバーコードを読み取る方法

Hairil related to PDFドキュメントからバーコードを読み取る方法
ハイリル ハシミ ビン オマル
2023年3月19日
更新済み 2024年10月20日
共有:
This article was translated from English: Does it need improvement?
Translated
View the article in English

How to Read Barcode From PDF in C#

  1. バーコードファイルを処理するために、バーコードライブラリをインストールしてください。

  2. 必要に応じてPdfBarcodeReaderOptionsを作成します。

  3. BarcodeReaderReadPdfメソッドを使用して、PDFからバーコードを読み取ります。

  4. BarcodeReaderOptionを使用して、追加のバーコード読み取りオプションを指定します。

  5. バーコード値の抽出。



    申し訳ありませんが、翻訳するコンテンツのテキストを提供してください。その後、英語から日本語に翻訳いたします。

PDFドキュメントからバーコードを直接読み取る

IronBarcodeは画像からバーコードを読み取る能力に加えて、PDFドキュメントからバーコードを読み取る能力にも優れています。 これにより、ユーザーはPDFドキュメントをIronBarcodeで読み取る前に画像に変換する手間を省くことができます。 PDFドキュメントは画像とは異なり、より複雑であるため、別の読み取り方法を使用する必要があります。それがBarcodeReader.ReadPdf()メソッドです。 このメソッドは、以下を含むさまざまな種類のPDFドキュメント入力を受け付けます:

  • byte [] 配列 : バイト配列としてのPDFドキュメント。
  • IEnumerable : PDF documents as byte arrays stored in a collection.
  • MemoryStream : メモリストリーム型としてのPDFドキュメント。
  • IEnumerable : PDF documents as collection of MemoryStream
  • String : PDFドキュメントのパス文字列。PDFドキュメントがすでにプロジェクトにコピーされている場合、これは文字列としてPDFドキュメントの名前になります。
  • IEnumerable : PDF document path/name strings stored in a collection.

上記の種類の入力以外にも、BarcodeReader.ReadPdf()は、より高度で改善された読み取りのためにPdfBarcodeReaderOptionsも受け入れます。これは次のサブトピックで説明します。 では、PDFドキュメント内のバーコードを読み取るためのBarcodeReader.ReadPdf()メソッドの使用を示す以下のコードスニペットを見てみましょう。

:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-pdf-1.cs
using IronBarCode;
using System;
using System.Collections.Generic;

List<String> docs = new List<String>();
docs.Add(@"pdf_a.pdf");
docs.Add(@"pdf_b.pdf");

var myBarcode = BarcodeReader.ReadPdf(docs);   //can also accept individual PDF document file path as argument

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

Private docs As New List(Of String)()
docs.Add("pdf_a.pdf")
docs.Add("pdf_b.pdf")

Dim myBarcode = BarcodeReader.ReadPdf(docs) 'can also accept individual PDF document file path as argument

For Each value In myBarcode
	Console.WriteLine(value.ToString())
Next value
$vbLabelText   $csharpLabel

上記のコードスニペットから、IronBarcodeを使用してバーコードを読み取るには、PDFドキュメントのファイルパス文字列をBarcodeReader.ReadPdf()メソッドに追加してバーコードの値を読み取り、その結果を変数に格納できることがわかります。 PDFドキュメント内で見つかったすべてのバーコードの値をコンソールに出力したい場合は、foreachループを使用して変数内で見つかった各要素にToString()メソッドを呼び出して反復処理し、出力します。 さらに、上記のコードスニペットは、BarcodeReader.ReadPdf()にPDFドキュメント名のコレクションを引数として使用することも示しています。

しかし、PDFドキュメントに含まれているバーコードが読み取れない場合はどうすればよいでしょうか? パフォーマンスが非常に遅い場合はどうすればいいですか? ここで、高度なPDFバーコード読み取りが行われます。ここでは、PdfBarcodeReaderOptionsを操作して読み取りの品質、精度、パフォーマンスを向上させます。

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

画像からバーコードを読み取るのと同様に、PDFドキュメントからバーコードを読み取ることも、バーコードリーダー内のプロパティを調整できるようにします。これをPdfBarcodeReaderOptionsと呼びます。 PdfBarcodeReaderOptionsのプロパティを調整することで、品質、精度、そしてパフォーマンスを大いに向上させることができます。 BarcodeReaderOptions のすべての調整可能なプロパティは、PDFドキュメント向けの追加プロパティを伴って PdfBarcodeReaderOptions に継承されています。 最初に、ユーザーは新しいインスタンスのPdfBarcodeReaderOptionsをインスタンス化するときに、PdfBarcodeReaderOptionsを適用したいPDFドキュメントからのページ番号またはページ番号のコレクションを指定できます。 次のコードスニペットはデモンストレーションを行います

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

List<int> pageNumber = new List<int>() { 1, 2, 3 };

PdfBarcodeReaderOptions PdfOptions = new PdfBarcodeReaderOptions(pageNumber)  // can also use individual page number as argument
{
    // Properties of PDF Barcode reader options
};
Imports IronBarCode
Imports System.Collections.Generic

Private pageNumber As New List(Of Integer)() From {1, 2, 3}

Private PdfOptions As New PdfBarcodeReaderOptions(pageNumber)
$vbLabelText   $csharpLabel

では、BarcodeReaderOptionsで利用できるものに加えて、操作可能なPdfBarcodeReaderOptionsの追加プロパティを見つけてみましょう。

DPI

ユーザーは、PDFドキュメント内のバーコード画像のDPI(Dots Per Inch、ドットパーインチ)を指定することができます。 これは、PDFドキュメント内の低品質なバーコード画像を読み取るのに役立ちます。 このプロパティは整数値を使用して設定できます。

ページ番号

ユーザーが事前にPDFドキュメント内でバーコードを読み取る必要があるページ番号を知っている場合、このプロパティで指定することができます。 これを行うことで、特にページ数の多いPDFドキュメントの場合、IronBarcodeの読み取り性能が大幅に向上します。IronBarcodeがすべてのページやバーコードがないページを読み取る必要がなくなるためです。 このプロパティは1から始まります。つまり、PDFドキュメントの最初のページは0ではなく1です。

パスワード

名前が示すように、このプロパティは、PDFドキュメントの内容にアクセスするためにパスワード入力が必要な暗号化されたPDFファイルを扱うことをユーザーに可能にします。 ただし、IronBarcode はPDFドキュメントにパスワードを設定することはできませんのでご注意ください。 このプロパティはString入力を受け入れます。

スケール

このプロパティを使用すると、ユーザーは画像に変換する際の幅と高さをスケーリングするためのスケールファクターを制御できます。 このプロパティは整数を値として受け取り、このプロパティのデフォルト値は3.5です。このプロパティを設定することで、PDFドキュメントに存在する小さなバーコードを読み取る際に役立ちます。スケーリングを上げるとPDFドキュメントがズームされます。

PDFドキュメントからの高度なバーコード読み取り

現在、PdfBarcodeReaderOptionsで調整可能なプロパティがわかったので、これをPDFドキュメントのバーコードを読み取るプロジェクトにどのように適用するかを見てみましょう。

:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-pdf-3.cs
using IronBarCode;
using System;
using System.Collections.Generic;

List<int> pageNumber = new List<int>() { 1, 2, 3 };

PdfBarcodeReaderOptions PdfOptions = new PdfBarcodeReaderOptions(pageNumber)
{
    DPI = 150,
    //PageNumbers = pageNumber,      //this property is not needed if page numbers has been specified as the argument in PdfBarcodeReaderOptions
    Password = "barcode",
    Scale = 3.5,
    //properties below are some of the properties inherited from BarcodeReaderOptions
    Speed = ReadingSpeed.Detailed,
    ExpectBarcodeTypes = BarcodeEncoding.Code93,
    ExpectMultipleBarcodes = true
};

var myBarcode = BarcodeReader.ReadPdf(@"pdf_a_filepath.pdf", PdfOptions);
foreach (var value in myBarcode)
{
    Console.WriteLine(value.ToString());
}
Imports IronBarCode
Imports System
Imports System.Collections.Generic

Private pageNumber As New List(Of Integer)() From {1, 2, 3}

Private PdfOptions As New PdfBarcodeReaderOptions(pageNumber) With {
	.DPI = 150,
	.Password = "barcode",
	.Scale = 3.5,
	.Speed = ReadingSpeed.Detailed,
	.ExpectBarcodeTypes = BarcodeEncoding.Code93,
	.ExpectMultipleBarcodes = True
}

Private myBarcode = BarcodeReader.ReadPdf("pdf_a_filepath.pdf", PdfOptions)
For Each value In myBarcode
	Console.WriteLine(value.ToString())
Next value
$vbLabelText   $csharpLabel

上記のコードスニペットは、IronBarcodeでPdfBarcodeReaderOptionsプロパティを実装する方法を示しています。 PdfBarcodeReaderOptions は、プロパティにアクセスして調整する前に、まず変数名で初期化する必要があります。 コードスニペットでも、PDFドキュメントのページ番号のリストがPdfBarcodeReaderOptionsの初期化時に引数として使用されたことがわかります。 これは、PdfBarcodeReader の設定を適用したいページ番号を指定します。 ユーザーは、PdfBarcodeReaderOptions プロパティで PageNumbers としてPDFページ番号を指定することもできます。

一方で、PdfBarcodeReaderOptionsでは、もともとのクラスから継承されているため、BarcodeReaderOptionsExpectMultipleBarcodesExpectBarcodeTypesなどのプロパティを使用できることもわかります。 これは全体的な読み取りパフォーマンスと精度に大きく役立ちます。 バーコードの読み取りにおいてPdfBarcodeReaderOptionsのセットプロパティを適用するには、BarcodeReader.ReadPdf()メソッドの第2引数として作成したPdfBarcodeReaderOptionsクラスの変数名を入力し、読み取るPDF文書のファイルパスを第1引数として指定します。

Hairil related to PDFドキュメントからの高度なバーコード読み取り
ハイリル ハシミ ビン オマル
ソフトウェアエンジニア
すべての優れたエンジニアと同じように、Hairilは熱心な学習者です。C#、Python、およびJavaの知識を洗練させ、その知識を活かしてIron Softwareのチームメンバーに価値を提供しています。Hairilはマレーシアのマラ工科大学(Universiti Teknologi MARA)で化学およびプロセス工学の学士号を取得し、Iron Softwareチームに加わりました。