C#でPDFからバーコードを読む方法

How to read Barcodes from PDF Documents

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

PDFドキュメントからバーコードを読むことは、PDFファイルのページ内に存在するバーコードを検出し、デコードすることです。印刷されたバーコードを手動でスキャンする代わりに、この技術を使ってデジタルドキュメントから符号化された情報を直接抽出することができます。 請求書、配送ラベル、レポート、バーコードを用いてデータを保存するその他のドキュメントを処理するワークフローを自動化する際に特に便利です。

クイックスタート: PDFからバーコードを直接読む)

IronBarcodeのReadPdfメソッドを使って、画像に変換することなくPDFから瞬時にバーコードを読み取ります。わずか1行のコードでバーコードデータを迅速に抽出し、必要ならばさらに高度なオプションの構築を開始することができます。

Nuget IconGet started making PDFs with NuGet now:

  1. Install IronBarcode with NuGet Package Manager

    PM > Install-Package BarCode

  2. Copy and run this code snippet.

    var results = IronBarCode.BarcodeReader.ReadPdf("invoice.pdf");
  3. Deploy to test on your live environment

    Start using IronBarcode in your project today with a free trial
    arrow pointer

as-heading:3(概要: 最小限のワークフロー

  1. バーコードファイルを処理するためのバーコードライブラリをインストールします。
  2. 必要に応じてPdfBarcodeReaderOptionsを作成します。
  3. BarcodeReaderReadPdfメソッドを使用してPDFからバーコードを読み取ります。
  4. BarcodeReaderOptionを使用して追加のバーコード読み取りオプションを指定します。
  5. バーコードの値を抽出します。

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

IronBarcodeが画像からバーコードを読む能力だけでなく、PDFドキュメントからバーコードを読む能力にも優れていることを誇りに思います。 これにより、ユーザーはPDFドキュメントを画像に変換してIronBarcodeに読み込ませる手間から解放されます。 PDFドキュメントはより複雑で画像とは異なるため、異なる読み取り方法としてBarcodeReader.ReadPdf()メソッドを使用する必要があります。 このメソッドは、以下を含むさまざまなタイプのPDFドキュメント入力を受け入れます。

  • byte[]配列: バイト配列としてのPDFドキュメント。
  • IEnumerable<Byte[]>: コレクションに格納されたバイト配列としてのPDFドキュメント。
  • MemoryStream: MemoryStreamタイプとしてのPDFドキュメント。
  • IEnumerable<Stream>: MemoryStreamのコレクションとしてのPDFドキュメント。
  • String: 文字列としてのPDFドキュメントパス。 すでにプロジェクトにコピーされているPDFドキュメントの場合、これは文字列としてのPDFドキュメントの名前です。
  • IEnumerable<String>: コレクションに格納されたPDFドキュメントのパス/名前文字列。

上記の入力タイプとは別に、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.ReadPdfs(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.ReadPdfs(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を個別に配列に追加することとは別に、IronBarCodeはReadPdfsメソッドを導入して、開発者がPDFのリストを迅速に読み通すことができるようにしています。 これは、複数のPDFからバーコードを抽出したい場合に役立ち、1つずつ追加する手間を省きます。 以下の例を見てみましょう。

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

// Get all PDF files from a directory and add to list
string folderPath = @"PATH_TO_YOUR_FOLDER";
List<string> docs = new List<string>(Directory.GetFiles(folderPath, "*.pdf"));

// Read barcodes from all PDFs
var docResult = BarcodeReader.ReadPdfs(docs);

// Print results
foreach (var doc in docResult)
{
    foreach (var item in doc)
    {
        Console.WriteLine("Barcode " + item.ToString() + " found at page " + item.PageNumber);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

上記のコードでは、まずディレクトリからすべてのPDFファイルを取得し、List<string>に追加してから、ReadPdfsを呼び出し、docsを入力パラメータとして設定します。 ReadPdfsは、その後、BarcodeResultsの配列を返します。 最後に、docResultをループして、各PDFに見つかったバーコードを印刷します。

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

画像からバーコードを読むのと同様に、PDFドキュメントからバーコードを読む際にも、PdfBarcodeReaderOptionsと呼ばれるバーコードリーダーのプロパティを調整または調節できます。 PdfBarcodeReaderOptionsのプロパティを調整することで、品質、精度、およびパフォーマンスの向上に大きく役立ちます。 BarcodeReaderOptionsのすべての調整可能なプロパティはPdfBarcodeReaderOptionsに継承され、一部の追加プロパティはPDFドキュメント用です。 ユーザーは、PDFドキュメントからバーコードを読み取りたいPdfBarcodeReaderOptionsを適用するページ番号またはページ番号のコレクションを指定して、新しいPdfBarcodeReaderOptionsインスタンスを作成する際に指定できます。 以下のコードスニペットはデモンストレーションを示しています:

: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または1インチあたりのドット数を指定できます。 これにより、PDFドキュメントの低品質のバーコード画像の読み取りに役立ちます。 このプロパティは整数値を使用して設定できます。

PageNumbers

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

Password

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

Scale

このプロパティは、画像に変換する際の幅と高さのスケーリングのためのスケールファクターを制御することを可能にします。 このプロパティは整数を値として受け入れ、このプロパティのデフォルト値は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の設定を適用したいページ番号を指定します。 ユーザーはまたPageNumbersとしてPdfBarcodeReaderOptionsプロパティにPDFページ番号を指定することもできます。

一方で、BarcodeReaderOptionsからExpectMultipleBarcodesExpectBarcodeTypesといったプロパティをPdfBarcodeReaderOptionsで使用できることもわかります。これは、元のクラスから継承されています。 これにより、全体的な読み取りパフォーマンスと精度が大幅に向上します。 PdfBarcodeReaderOptionsで設定したプロパティをバーコード読み取りに適用するには、読み取り対象のPDFドキュメントのファイルパスを最初の引数として、BarcodeReader.ReadPdf()メソッドの2番目の引数として作成したPdfBarcodeReaderOptionsクラスの変数名を入力します。

よくある質問

PDFドキュメントからバーコードを読み取るにはどうすればよいですか?

バーコードは、.NETアプリケーションで`BarcodeReader`クラスの`ReadPdf`メソッドを使用して、PDFドキュメントから読み取ることができます。このメソッドは、バイト配列、メモリストリーム、およびファイルパスなどの入力を受け入れます。

PdfBarcodeReaderOptionsを使用する利点は何ですか?

PdfBarcodeReaderOptionsは、DPIの調整、ページ番号の指定、パスワードによる暗号化されたPDFの処理など、バーコード読取の品質と精度を向上させる設定を提供します。

暗号化されたPDFドキュメントからバーコードを読み取ることはできますか?

はい、PdfBarcodeReaderOptionsのPasswordプロパティを使用して必要なパスワードを提供することで、暗号化されたPDFドキュメントからのバーコードを読み取ることができます。

PDFからのバーコード読取効率をどうすれば向上できますか?

効率を向上させるには、PdfBarcodeReaderOptionsを使用してページ番号を指定し、スケールファクターを調整することで、PDFを画像に変換せずに済むようにし、時間とリソースを節約できます。

ReadPdfメソッドはどの入力形式を受け入れますか?

`ReadPdf`メソッドは、byte[]配列、MemoryStream、および文字列ファイルパスなど、さまざまな入力形式を受け入れます。

1つのPDFファイルから複数のバーコードを読み取ることは可能ですか?

はい、PdfBarcodeReaderOptionsでExpectMultipleBarcodesプロパティを設定することで、1つのPDFファイルから複数のバーコードを読み取ることができます。

PDFでバーコードを読み取るための解像度を指定するにはどうすればよいですか?

バーコードを読み取る解像度を指定するには、PdfBarcodeReaderOptionsのDPIプロパティを設定し、スキャン品質を制御するために必要な整数値を入力します。

PDFからバーコードを読み取る際のスケールファクターの役割は何ですか?

スケールファクターはデフォルトで3.5に設定されており、PDFを画像に変換してバーコード読取の品質とパフォーマンスに影響を与えます。

.NETバーコードライブラリを使用して画像からバーコードを読み取ることはできますか?

はい、IronBarcodeのような.NETバーコードライブラリは、画像やPDFファイルの両方からバーコードを読み取ることができ、それぞれの形式に特化したメソッドを使用します。

バーコード読取が十分に正確でない場合はどうすればよいですか?

バーコード読取の精度が低い場合、PdfBarcodeReaderOptionsを調整し、DPIやスケールファクターの変更、または正しいページ番号を指定することで品質を向上させます。

Hairil Hasyimi Bin Omar
ソフトウェアエンジニア
すべての優れたエンジニアのように、ハイリルは熱心な学習者です。彼はC#、Python、およびJavaの知識を磨いており、その知識を利用してIron Software全体のチームメンバーに価値を追加しています。ハイリルはマレーシアのマラ工科大学からIron Softwareチームに参加し、化学およびプロセス工学の学士号を取得しました。
準備はいいですか?
Nuget ダウンロード 1,935,276 | バージョン: 2025.11 ただ今リリースされました