フッターコンテンツにスキップ
IRONPDFの使用

.NETでPDFからデータを抽出する方法

PDFドキュメントはビジネスのどこにでもあります。 現代の例としては、請求書、レポート、契約書、マニュアルが含まれます。 しかし、それらからプログラム的に重要な情報を取得することは難しい場合があります。 PDFはデータのアクセス方法ではなく、見た目に焦点を当てています。

.NET開発者にとって、IronPDFは、PDFファイルからデータを簡単に抽出することができる強力な .NET PDFライブラリです。 テキスト、テーブル、フォームフィールド、画像、添付ファイルを入力PDFドキュメントから直接抽出できます。 請求書処理を自動化する場合、知識ベースを構築する場合、またはレポートを生成する場合、このライブラリは多くの時間を節約します。

このガイドでは、テキストコンテンツの抽出、表データの抽出、フォームフィールドの値の抽出に関する実用的な例を説明し、各コードスニペットの後に説明を加えて、独自のプロジェクトに適応可能にします。

IronPDFを始めよう

IronPDFのインストールは、NuGetパッケージマネージャーを介して数秒で完了します。 .NET 9プロジェクトにIronPDFをセットアップするのに必要な時間はほんの数分です。

Install-Package IronPdf

インストールが完了すると、すぐに入力PDFドキュメントの処理を開始できます。 IronPDFのAPIのシンプルさを示す最小限の .NET例です。

using IronPdf;
// Load any PDF document
var pdf = PdfDocument.FromFile("document.pdf");
// Extract all text with one line
string allText = pdf.ExtractAllText();
Console.WriteLine(allText);
using IronPdf;
// Load any PDF document
var pdf = PdfDocument.FromFile("document.pdf");
// Extract all text with one line
string allText = pdf.ExtractAllText();
Console.WriteLine(allText);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

このコードはPDFを読み込み、すべてのテキストを抽出します。 IronPDFは、他のライブラリで一般的に問題を引き起こす複雑なPDF構造、フォームデータ、およびエンコーディングを自動的に処理します。 PDFドキュメントから抽出されたデータは、テキストファイルに保存するか、さらに分析のために処理できます。

実用的なヒント: 抽出したテキストを.txtファイルに保存して後で処理することができ、データベース、Excelシート、または知識ベースを作成するために解析できます。 この方法は、レポート、契約書、または未処理のテキストがすぐに必要なPDFに適しています。

PDFドキュメントからのデータ抽出

実世界のアプリケーションでは、正確なデータ抽出が必要です。 IronPDFは、PDF内の特定のページから貴重な情報をターゲットにする複数の方法を提供します。 この例では、次のPDFを使用します。

次のコードは、このPDFの特定のページからデータを抽出し、結果をコンソールに返します。

using IronPdf;
using System;
// Load any PDF document
var pdf = PdfDocument.FromFile("AnnualReport2024.pdf");
// Extract from selected pages
int[] pagesToExtract = { 0, 2, 4 }; // Pages 1, 3, and 5
foreach (var pageIndex in pagesToExtract)
{
    string pageText = pdf.ExtractTextFromPage(pageIndex);
    // Split on 2 or more spaces (tables often flatten into space-separated values)
    var tokens = Regex.Split(pageText, @"\s{2,}");
    foreach (string token in tokens)
    {
        // Match totals, invoice headers, and invoice rows
        if (token.Contains("Invoice") || token.Contains("Total") || token.StartsWith("INV-"))
        {
            Console.WriteLine($"Important: {token.Trim()}");
        }
    }
}
using IronPdf;
using System;
// Load any PDF document
var pdf = PdfDocument.FromFile("AnnualReport2024.pdf");
// Extract from selected pages
int[] pagesToExtract = { 0, 2, 4 }; // Pages 1, 3, and 5
foreach (var pageIndex in pagesToExtract)
{
    string pageText = pdf.ExtractTextFromPage(pageIndex);
    // Split on 2 or more spaces (tables often flatten into space-separated values)
    var tokens = Regex.Split(pageText, @"\s{2,}");
    foreach (string token in tokens)
    {
        // Match totals, invoice headers, and invoice rows
        if (token.Contains("Invoice") || token.Contains("Total") || token.StartsWith("INV-"))
        {
            Console.WriteLine($"Important: {token.Trim()}");
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

この例は、PDFドキュメントからテキストを抽出し、キー情報を検索し、データファイルや知識ベースへの保存の準備をする方法を示しています。 ExtractTextFromPage()メソッドはドキュメントの読書順序を維持し、ドキュメント分析やコンテンツインデックス付けタスクに最適です。

PDFドキュメントからの表データの抽出

PDFファイル内の表はネイティブな構造を持っていません。 それらは単に表のように見えるように配置されたテキストコンテンツです。 IronPDFはレイアウトを維持しながら表データを抽出し、Excelまたはテキストファイルに加工できます。 この例では、このPDFを使用します。

using IronPdf;
using System.Text;
using System.Text.RegularExpressions;
var pdf = PdfDocument.FromFile("example.pdf");
string rawText = pdf.ExtractAllText();
// Split into lines for processing
string[] lines = rawText.Split('\n');
var csvBuilder = new StringBuilder();
foreach (string line in lines)
{
    if (string.IsNullOrWhiteSpace(line) || line.Contains("Page"))
        continue;
    string[] rawCells = Regex.Split(line.Trim(), @"\s+");
    string[] cells;
    // If the line starts with "Product", combine first two tokens as product name
    if (rawCells[0].StartsWith("Product") && rawCells.Length >= 5)
    {
        cells = new string[rawCells.Length - 1];
        cells[0] = rawCells[0] + " " + rawCells[1]; // Combine Product + letter
        Array.Copy(rawCells, 2, cells, 1, rawCells.Length - 2);
    }
    else
    {
        cells = rawCells;
    }
    // Keep header or table rows
    bool isTableOrHeader = cells.Length >= 2
                           && (cells[0].StartsWith("Item") || cells[0].StartsWith("Product")
                               || Regex.IsMatch(cells[0], @"^INV-\d+"));
    if (isTableOrHeader)
    {
        Console.WriteLine($"Row: {string.Join("|", cells)}");
        string csvRow = string.Join(",", cells).Trim();
        csvBuilder.AppendLine(csvRow);
    }
}
// Save as CSV for Excel import
File.WriteAllText("extracted_table.csv", csvBuilder.ToString());
Console.WriteLine("Table data exported to CSV");
using IronPdf;
using System.Text;
using System.Text.RegularExpressions;
var pdf = PdfDocument.FromFile("example.pdf");
string rawText = pdf.ExtractAllText();
// Split into lines for processing
string[] lines = rawText.Split('\n');
var csvBuilder = new StringBuilder();
foreach (string line in lines)
{
    if (string.IsNullOrWhiteSpace(line) || line.Contains("Page"))
        continue;
    string[] rawCells = Regex.Split(line.Trim(), @"\s+");
    string[] cells;
    // If the line starts with "Product", combine first two tokens as product name
    if (rawCells[0].StartsWith("Product") && rawCells.Length >= 5)
    {
        cells = new string[rawCells.Length - 1];
        cells[0] = rawCells[0] + " " + rawCells[1]; // Combine Product + letter
        Array.Copy(rawCells, 2, cells, 1, rawCells.Length - 2);
    }
    else
    {
        cells = rawCells;
    }
    // Keep header or table rows
    bool isTableOrHeader = cells.Length >= 2
                           && (cells[0].StartsWith("Item") || cells[0].StartsWith("Product")
                               || Regex.IsMatch(cells[0], @"^INV-\d+"));
    if (isTableOrHeader)
    {
        Console.WriteLine($"Row: {string.Join("|", cells)}");
        string csvRow = string.Join(",", cells).Trim();
        csvBuilder.AppendLine(csvRow);
    }
}
// Save as CSV for Excel import
File.WriteAllText("extracted_table.csv", csvBuilder.ToString());
Console.WriteLine("Table data exported to CSV");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

PDF内の表は、通常、グリッドのように見えるように配置されたテキストに過ぎません。 この確認は、行が表の行またはヘッダーに属しているかどうかを判断するのに役立ちます。 ヘッダー、フッター、関連のないテキストをフィルタリングすることで、PDFからクリーンな表データを抽出でき、CSVまたはExcelの準備ができます。

このワークフローは、PDFフォーム、財務文書、レポートに有効です。 後でPDFからデータをxlsxファイルに変換したり、すべての有用なデータを含むzipファイルにマージすることができます。 セルが合併された複雑な表の場合、列の位置に基づいて解析ロジックを調整する必要があるかもしれません。

PDFからデータを抽出する方法: 図5 - 抽出された表データ

PDFからフォームフィールドデータの抽出

IronPDFは、フォームフィールドデータの抽出と変更も可能です。

using IronPdf;
using System.Drawing;
using System.Linq;
var pdf = PdfDocument.FromFile("form_document.pdf");
// Extract form field data
var form = pdf.Form;
foreach (var field in form) // Removed '.Fields' as 'FormFieldCollection' is enumerable
{
    Console.WriteLine($"{field.Name}: {field.Value}");
    // Update form values if needed
    if (field.Name == "customer_name")
    {
        field.Value = "Updated Value";
    }
}
// Save modified form
pdf.SaveAs("updated_form.pdf");
using IronPdf;
using System.Drawing;
using System.Linq;
var pdf = PdfDocument.FromFile("form_document.pdf");
// Extract form field data
var form = pdf.Form;
foreach (var field in form) // Removed '.Fields' as 'FormFieldCollection' is enumerable
{
    Console.WriteLine($"{field.Name}: {field.Value}");
    // Update form values if needed
    if (field.Name == "customer_name")
    {
        field.Value = "Updated Value";
    }
}
// Save modified form
pdf.SaveAs("updated_form.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

このスニペットは、PDFからフォームフィールドの値を抽出し、それをプログラムで更新できるようにします。 これにより、PDFフォームを処理し、分析やレポート生成のために指定された範囲の情報を抽出することが容易になります。 これは、顧客オンボーディング、アンケート処理、データ検証などのワークフローの自動化に役立ちます。

PDFからデータを抽出する方法: 図6 - 抽出されたフォームデータと更新されたフォーム

次のステップ

IronPDFは、.NETでのPDFデータ抽出を実用的かつ効率的にします。 画像、テキスト、表、フォームフィールド、さらには通常追加のOCR処理を必要とするスキャンされたPDFを含むさまざまなPDFドキュメントから添付ファイルを抽出することができます。

知識ベースの構築、レポートワークフローの自動化、または財務PDFからのデータ抽出を目指す場合でも、このライブラリがあれば手作業のコピーやエラーのある解析を避けて目標を達成できます。 簡単で速く、Visual Studioプロジェクトに直接統合できます。 試してみてください。PDFを扱う時の通常の悩みを避け、大幅に時間を節約できることでしょう。

今IronPDFを始めましょう。
green arrow pointer

PDFデータ抽出をアプリケーションに実装する準備はできていますか? IronPDFは、あなたにとって.NETライブラリでしょうか? 無料トライアルを開始して商業利用してください。 当社のドキュメントを訪れて、包括的なガイドとAPIリファレンスを確認してください。

よくある質問

.NETを使用してPDFドキュメントからテキストを抽出する最適な方法は何ですか?

IronPDFを使用することで、.NETアプリケーションでPDFドキュメントからテキストを簡単に抽出できます。必要な内容にアクセスできるようにテキストデータを効率的に取得する方法を提供しています。

IronPDFはスキャンされたPDFのデータ抽出を処理できますか?

はい、IronPDFはスキャンされたPDFを処理し、OCR(光学文字認識)を使用してデータを抽出することができます。これにより、画像ベースのドキュメント内のテキストにもアクセス可能です。

C#を使用してPDFからテーブルを抽出する方法は?

IronPDFは、C#でPDFドキュメントからテーブルを解析し抽出する機能を提供しています。特定のメソッドを使用して、テーブルデータを正確に識別し取得することができます。

PDFデータ抽出にIronPDFを使用する利点は何ですか?

IronPDFは、テキストの取得、テーブル解析、スキャンされたドキュメントのOCRを含むPDFデータ抽出の包括的なソリューションを提供します。これは.NETアプリケーションとシームレスに統合され、PDFデータを処理する際に信頼性のある効率的な方法を提供します。

IronPDFを使用してPDFから画像を抽出することは可能ですか?

はい、IronPDFを使用すればPDFから画像を抽出することができます。この機能は、PDFドキュメント内に埋め込まれた画像にアクセスし操作する必要がある場合に便利です。

データ抽出中にIronPDFは複雑なPDFレイアウトをどのように処理しますか?

IronPDFは、複雑なPDFレイアウトをナビゲートしてデータを抽出するための強力なツールを提供し、複雑なフォーマットと構造を持つドキュメントを処理できるように設計されています。

.NETアプリケーションでPDFデータ抽出を自動化できますか?

もちろんです。IronPDFは.NETアプリケーションに統合してPDFデータ抽出を自動化でき、定期的で一貫したデータ取得が求められるプロセスを効率化します。

PDFデータ抽出にIronPDFを使用する際のプログラミング言語は何ですか?

IronPDFは主に.NETフレームワークでのC#と共に使用されており、プログラムでPDFからデータを抽出しようとする開発者に広範なサポートと機能を提供しています。

IronPDFはPDFドキュメントのメタデータ抽出をサポートしていますか?

はい、IronPDFはPDFドキュメントのメタデータを抽出することができ、著者、作成日、その他の文書プロパティにアクセスすることが可能です。

IronPDFを使用したPDFデータ抽出学習のためのサンプルコードは何ですか?

開発者ガイドには、PDFデータ抽出をIronPDFを用いて.NETアプリケーションで習得するために役立つ動作するコード例を含む完全なC#チュートリアルが提供されています。

IronPDF は新しい .NET 10 リリースと完全に互換性がありますか? また、データ抽出にどのような利点がありますか?

はい。IronPDFは.NET 10と完全に互換性があり、ヒープ割り当ての削減、配列インターフェースの仮想化解除、言語機能の強化など、パフォーマンス、API、ランタイムの改善をすべてサポートしています。これらの改善により、C#アプリケーションにおけるPDFデータ抽出ワークフローの高速化と効率化が実現します。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。