チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル».NET»Spire.Barcode for .NET»C#でPDFのバーコードを読み取る方法(コード付き解説)
2025-06-20

C#でPDFのバーコードを読み取る方法(コード付き解説)

C#でPDFからバーコードを読み取る概要図

C#でPDFファイルからバーコードを読み取ることは、多くのビジネスワークフローで実用的なニーズです。特にスキャン済みの書類やデジタルフォームを自動処理する場合に頻繁に使用されます。物流、金融、医療、製造などの分野では、PDF内に画像として埋め込まれたバーコード、またはベクターグラフィックスとして描かれたバーコードが含まれていることがよくあります。

本記事では、C# を使用して PDF からバーコードを読み取るための 2 つの実践的な方法を紹介します。1 つは PDF ページに埋め込まれた画像を抽出してスキャンする方法、もう 1 つはページ全体を画像としてレンダリングし、その画像からバーコードを認識する方法です。いずれの方法も、1次元バーコードと2次元バーコードの両方に対応しています。

目次

✅ 準備:必要な環境とライブラリ

C#でPDFからバーコードを認識するには、以下の環境を用意してください:

  • NuGet パッケージに対応した C# プロジェクト(.NET Framework / .NET Core / .NET 6 など)
  • 以下の2つのライブラリをインストール:

NuGet パッケージマネージャーで以下のコマンドを実行:

Install-Package Spire.Barcode
Install-Package Spire.PDF

🚀 ステップバイステップ:C#でPDFのバーコードを読み取る

バーコードの格納方法に応じて、以下のいずれかの方法を選んでください。

方法①:埋め込み画像を抽出してバーコードを認識

スキャンされたPDFでは、バーコードは画像として埋め込まれていることが多いため、この方法が効果的です。
BarcodeScanner.ScanOne() メソッドを使って画像から1つのバーコードを読み取ることができます。

サンプルコード:

using Spire.Barcode;
using Spire.Pdf;
using Spire.Pdf.Utilities;
using System.Drawing;

namespace ReadPDFBarcodeByExtracting
{
    class Program
    {
        static void Main(string[] args)
        {
            // PDFファイルを読み込む
            PdfDocument pdf = new PdfDocument();
            pdf.LoadFromFile("Sample.pdf");

            // ページの画像情報を取得する
            PdfPageBase page = pdf.Pages[0];
            PdfImageHelper imageHelper = new PdfImageHelper();
            PdfImageInfo[] imagesInfo = imageHelper.GetImagesInfo(page);

            // ページ内の画像を順に処理してバーコードを読み取る
            int index = 0;
            foreach (PdfImageInfo imageInfo in imagesInfo)
            {
                Image image = imageInfo.Image;
                string scanResult = BarcodeScanner.ScanOne((Bitmap)image);
                Console.WriteLine($"第 {index + 1} 個の画像のスキャン結果:\n" + scanResult + "\n");
                index++;
            }
        }
    }
}

以下は、方法①(画像抽出)でのスキャン結果イメージです:

C#でPDFから埋め込み画像のバーコードを抽出

🔍 おすすめのケース:スキャンされたPDFや、バーコードが画像として含まれている場合。

参考記事:
C#を使用してPDFから画像を抽出する方法

方法②:ページ全体を画像としてレンダリングしてスキャン

PDF内のバーコードが画像ではなく、ベクター形式で描画されている場合には、この方法が有効です。
BarcodeScanner.Scan() メソッドを使えば、1つの画像から複数のバーコードを一括で読み取ることが可能です。

サンプルコード:

using Spire.Barcode;
using Spire.Pdf;
using System.Drawing;

namespace ReadPDFBarcodeByExtracting
{
    class Program
    {
        static void Main(string[] args)
        {
            // PDFファイルを読み込む
            PdfDocument pdf = new PdfDocument();
            pdf.LoadFromFile("Sample.pdf");

            // ドキュメントの各ページを処理し、ページを画像として保存
            for (int i = 0; i < pdf.Pages.Count; i++)
            {
                Image image = pdf.SaveAsImage(i);
                // 画像内のすべてのQRコード情報をスキャンして認識する
                string[] scanResults = BarcodeScanner.Scan((Bitmap)image);
                for (int j = 0; j < scanResults.Length; j++)
                {
                    Console.WriteLine($"第 {i + 1} ページの第 {j + 1} 番目のバーコードのスキャン結果:\n" + scanResults[j] + "\n");
                }
            }
        }
    }
}

以下は、方法②(ページ全体のレンダリング)によるスキャン結果の例です:

C#でPDFページ全体を画像化してバーコード認識

🔍 おすすめのケース:PDF内のバーコードが画像ではなく描画されたコンテンツである場合。

🔎 どちらの方法を使うべき?

ケース 推奨される方法
スキャンされたページ 埋め込み画像の抽出
デジタルPDF・描画バーコード ページ全体の画像化
混在・不明な構造 両方を試すのがおすすめ

構造が不明なPDFには、両方の方法を併用することでより確実な認識が可能です。

❓ FAQ(よくある質問)

Q: 複数ページのPDFでも対応できますか?
A: はい、すべてのページをループ処理することで対応可能です。

Q: 1ページに複数のバーコードがある場合は?
A: BarcodeScanner.Scan() メソッドを使えば、複数のバーコードを一括で検出できます。

Q: 解像度を上げれば認識精度は向上しますか?
A: はい。たとえば、300 DPI以上で画像化すると、小さなバーコードでも認識精度が向上します。SaveAsImage(int, PdfImageType, int, int) を使用してDPIを指定できます。

Q: 無料で使用できますか?
A: はい。 Free Spire.Barcode for .NETFree Spire.PDF for .NET の組み合わせで基本的なバーコード読み取りが可能です。ただし、無料版には機能制限があります。商用利用や高機能が必要な場合は、無料トライアルライセンスを申請して評価することもできます。


✅ まとめ

C# を使って PDF ファイルからバーコードを読み取るには、画像抽出とページレンダリングという 2 つの方法があり、それぞれのPDF形式に応じて柔軟に対応できます。Spire.Barcode と Spire.PDF を活用すれば、効率的かつ確実なバーコード認識が実現できます。

Read 20 times