IRONPDFの使用 C#でPDFテーブルを読む方法 カーティス・チャウ 更新日:2025年6月22日 IronPDF をダウンロード NuGet ダウンロード DLL ダウンロード Windows 版 無料トライアル LLM向けのコピー LLM向けのコピー LLM 用の Markdown としてページをコピーする ChatGPTで開く このページについてChatGPTに質問する ジェミニで開く このページについてGeminiに問い合わせる Grokで開く このページについてGrokに質問する 困惑の中で開く このページについてPerplexityに問い合わせる 共有する Facebook で共有 Xでシェア(Twitter) LinkedIn で共有 URLをコピー 記事をメールで送る PDFドキュメントから構造化された表データを抽出することは、データ分析、レポート作成、または他のシステムへの情報統合においてC#開発者にとって頻繁な必要性です。 しかし、PDFは一貫した視覚的なプレゼンテーションのために設計されており、データ抽出を簡単にはできません。 これにより、C#でPDFファイルからプログラム的にテーブルを読み取ることは難しい作業になる場合があります。特にテーブルは非常に多様で、シンプルなテキストベースのグリッドから、マージされたセルを持つ複雑なレイアウト、またはスキャンされた文書に埋め込まれた画像としてのテーブルまでさまざまです。 このガイドは、IronPDFを使用したPDFテーブル抽出のアプローチに関する包括的なC#チュートリアルを提供します。 私たちは主に、IronPDFの強力なテキスト抽出機能を活用してテキストベースのPDFから表形式のデータにアクセスし、解析する方法を探求します。 この方法の効果を論じ、解析のための戦略を提供し、抽出された情報の取り扱いについての洞察を提供します。 さらに、スキャンされたPDFを含む複雑なシナリオに取り組むための戦略にも触れます。 PDFからテーブルデータをC#で抽出するための重要なステップ PDF処理のためにIronPDF C#ライブラリをインストールします (https://nuget.org/packages/IronPdf/)。 (オプションのデモステップ) IronPDFのRenderHtmlAsPdfを使用して、HTML文字列からテーブルを含むサンプルPDFを作成します。 (セクションを参照:デモステップ テーブルデータを含むPDFドキュメントを作成する) 任意のPDFドキュメントを読み込み、ExtractAllTextメソッドを使用して、その生のテキストコンテンツを取得します。 (See section: Extract All Text Containing Table Data from the PDF) 抽出されたテキストを解析し、表の行とセルを識別するためのC#ロジックを実装します。 (See section: Parsing Extracted Text to Reconstruct Table Data in C#) 構造化された表データを出力するか、さらなる使用のためにCSVファイルに保存します。 (See section: Parsing Extracted Text to Reconstruct Table Data in C#) スキャンされたPDFの場合、OCRなどの高度な技術を検討します(後述します)。 IronPDF - C# PDFライブラリ IronPDFは、.NETのPDF操作用のC# .NETライブラリソリューションであり、開発者がソフトウェアアプリケーション内でPDFドキュメントを簡単に読み、作成、編集するのを助けます。 (https://ironpdf.com/) その堅牢なChromiumエンジンは、HTMLからPDFドキュメントを高精度かつ高速でレンダリングします。 開発者がさまざまな形式からPDFおよびその逆への変換をシームレスに行うことを可能にします。 最新の.NETフレームワーク(.NET 7、.NET 6、5、4、.NET Core、およびStandard)をサポートします。 さらに、IronPDF for .NET APIは開発者がPDFを操作および編集し、ヘッダーとフッターを追加し、重要なテキスト、画像、(以降で説明する)表データをPDFから簡単に抽出することを可能にします。 いくつかの重要な機能には: 様々なソースからPDFファイルを作成します(HTMLからPDF、画像からPDF) PDFファイルを読み込み、保存し、印刷する マージおよびPDFファイルを分割する PDFファイルからデータを抽出します(テキスト、画像、および表のような構造化データ) IronPDFライブラリを使用してC#でテーブルデータを抽出する手順 PDFドキュメントから表データを抽出するには、C#プロジェクトを作成します: Visual Studio: Visual Studio (例: 2022) がインストールされていることを確認します。 そうでない場合は、Visual Studioのウェブサイトからダウンロードしてください(https://visualstudio.microsoft.com/downloads/)。 2.プロジェクトを作成する: Visual Studio 2022を開き、新しいプロジェクトを作成をクリックします。 Visual Studioのスタート画面 "Console App"(またはお好みのC#プロジェクトタイプ)を選択し、次へをクリックします。 Visual Studioで新しいコンソールアプリケーションを作成する プロジェクト名(例:"ReadPDFTableDemo")を付けて、次へをクリックします。 新しく作成したアプリケーションを設定する 選択した.NET Framework(例:.NET 6以降)を選択します。 .NET Framework の選択 作成をクリックします。 コンソールプロジェクトが作成されます。 IronPDFをインストールします。 Visual Studio NuGet パッケージ マネージャーの使用: ソリューションエクスプローラーでプロジェクトを右クリックし、"NuGetパッケージの管理..."を選択します。 ツールとNuGetパッケージの管理 NuGetパッケージマネージャーで"IronPdf"を検索し、"インストール"をクリックします。 ツールとNuGetパッケージの管理 NuGet パッケージを直接ダウンロードします。IronPDFの NuGet パッケージ ページ ( https://www.nuget.org/packages/IronPdf/ ) にアクセスします。 IronPDF .DLL ライブラリをダウンロード:公式 IronPDF Web サイトからダウンロードし、プロジェクトで DLL を参照します。 (デモステップ) テーブルデータを含む PDF 文書を作成 このチュートリアルでは、最初に HTML 文字列から簡単なテーブルを含むサンプル PDF を作成します。 これにより、抽出プロセスを示すための既知の PDF 構造を得ることができます。 実際のシナリオでは、既存の PDF ファイルをロードします。 IronPDFの名前空間を追加し、オプションでライセンスキーを設定します(IronPDFは開発用に無料ですが、商業用デプロイメンにウォーターマークなしでライセンスが必要です): using IronPdf; using System; // For StringSplitOptions, Console using System.IO; // For StreamWriter // Apply your license key if you have one. Otherwise, IronPDF runs in trial mode. // License.LicenseKey = "YOUR-TRIAL/PURCHASED-LICENSE-KEY"; using IronPdf; using System; // For StringSplitOptions, Console using System.IO; // For StreamWriter // Apply your license key if you have one. Otherwise, IronPDF runs in trial mode. // License.LicenseKey = "YOUR-TRIAL/PURCHASED-LICENSE-KEY"; $vbLabelText $csharpLabel こちらがサンプルテーブルのHTML文字列です: string HTML = "<html>" + "<style>" + "table, th, td {" + "border:1px solid black;" + "}" + "</style>" + "<body>" + "<h1>A Simple table example</h1>" + // Corrected typo: h1 not h2 "<table>" + "<tr>" + "<th>Company</th>" + "<th>Contact</th>" + "<th>Country</th>" + "</tr>" + "<tr>" + "<td>Alfreds Futterkiste</td>" + "<td>Maria Anders</td>" + "<td>Germany</td>" + "</tr>" + "<tr>" + "<td>Centro comercial Moctezuma</td>" + "<td>Francisco Chang</td>" + "<td>Mexico</td>" + "</tr>" + "</table>" + "<p>To understand the example better, we have added borders to the table.</p>" + "</body>" + "</html>"; string HTML = "<html>" + "<style>" + "table, th, td {" + "border:1px solid black;" + "}" + "</style>" + "<body>" + "<h1>A Simple table example</h1>" + // Corrected typo: h1 not h2 "<table>" + "<tr>" + "<th>Company</th>" + "<th>Contact</th>" + "<th>Country</th>" + "</tr>" + "<tr>" + "<td>Alfreds Futterkiste</td>" + "<td>Maria Anders</td>" + "<td>Germany</td>" + "</tr>" + "<tr>" + "<td>Centro comercial Moctezuma</td>" + "<td>Francisco Chang</td>" + "<td>Mexico</td>" + "</tr>" + "</table>" + "<p>To understand the example better, we have added borders to the table.</p>" + "</body>" + "</html>"; HTML 今、ChromePdfRendererを使用してこのHTMLからPDFを作成します: var renderer = new ChromePdfRenderer(); PdfDocument pdfDocument = renderer.RenderHtmlAsPdf(HTML); pdfDocument.SaveAs("table_example.pdf"); Console.WriteLine("Sample PDF 'table_example.pdf' created."); var renderer = new ChromePdfRenderer(); PdfDocument pdfDocument = renderer.RenderHtmlAsPdf(HTML); pdfDocument.SaveAs("table_example.pdf"); Console.WriteLine("Sample PDF 'table_example.pdf' created."); $vbLabelText $csharpLabel このSaveAsメソッドはPDFを保存します。 生成されたtable_example.pdfは次のようになります(HTMLに基づく概念的画像): NuGetパッケージマネージャーUIでIronPDFを検索する PDFからテーブルデータを含むすべてのテキストを抽出する テーブルデータを抽出するには、まずPDFを読み込み(作成したばかりのPDFまたは既存のPDF)、ExtractAllTextメソッドを使用します。 C#のString.Splitメソッドは、これに役立つ基本ツールです。 // Load the PDF (if you just created it, it's already loaded in pdfDocument) // If loading an existing PDF: // PdfDocument pdfDocument = PdfDocument.FromFile("table_example.pdf"); // Or use the one created above: string allText = pdfDocument.ExtractAllText(); // Load the PDF (if you just created it, it's already loaded in pdfDocument) // If loading an existing PDF: // PdfDocument pdfDocument = PdfDocument.FromFile("table_example.pdf"); // Or use the one created above: string allText = pdfDocument.ExtractAllText(); $vbLabelText $csharpLabel 現在、allText変数には、PDFからのすべてのテキストコンテンツが保持されています。 このコードは、テキストを行に分割します。 Console.WriteLine("\n--- Raw Extracted Text ---"); Console.WriteLine(allText); Console.WriteLine("\n--- Raw Extracted Text ---"); Console.WriteLine(allText); $vbLabelText $csharpLabel テキストを抽出するための PDF ファイル C# でテーブルデータを再構築するために抽出したテキストを解析する 抽出された生のテキストを用いて、次の課題は、この文字列を解析して表形式のデータを特定し構造化することです。 このステップは、PDF 内のテーブルの一貫性と形式に大きく依存しています。 一般的な解析戦略: 行の区切り文字を特定: 改行文字 (\n または \r\n) は一般的な行区切りです。 列の区切り文字を特定: 行内のセルは複数のスペース、タブ、または特定の既知の文字(例: '|' または ';')で区切られることがあります。 時々、列が視覚的に整列していても明確なテキストの区切りがない場合、一定のスペーシングパターンに基づいて構造を推測することがありますが、これはより複雑です。 非テーブルコンテンツのフィルタリング: ExtractAllTextメソッドはすべてのテキストを取得します。 テーブルを形成する実際のテキストを分離するためのロジックが必要です。おそらく、ヘッダーキーワードを探したり、前文/後文のテキストをスキップしたりします。 C#のString.Splitメソッドは、このための基本的なツールです。 ここに、サンプルからテーブルの行のみを抽出し、ピリオドのある行をフィルタリングしようとする例があります(この特定の例のためのシンプルなヒューリスティック): Console.WriteLine("\n--- Parsed Table Data (Simple Heuristic) ---"); string[] textLines = allText.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); foreach (string line in textLines) { // Simple filter: skip lines with a period, assuming they are not table data in this example // and skip lines that are too short or headers if identifiable if (line.Contains(".") || line.Contains("A Simple table example") || line.Length < 5) { continue; } else { // Further split line into cells based on expected delimiters (e.g., multiple spaces) // This part requires careful adaptation to your PDF's table structure // Example: string[] cells = line.Split(new[] { " ", "\t" }, StringSplitOptions.None); Console.WriteLine(line); // For now, just print the filtered line } } Console.WriteLine("\n--- Parsed Table Data (Simple Heuristic) ---"); string[] textLines = allText.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); foreach (string line in textLines) { // Simple filter: skip lines with a period, assuming they are not table data in this example // and skip lines that are too short or headers if identifiable if (line.Contains(".") || line.Contains("A Simple table example") || line.Length < 5) { continue; } else { // Further split line into cells based on expected delimiters (e.g., multiple spaces) // This part requires careful adaptation to your PDF's table structure // Example: string[] cells = line.Split(new[] { " ", "\t" }, StringSplitOptions.None); Console.WriteLine(line); // For now, just print the filtered line } } $vbLabelText $csharpLabel このコードはテキストを行に分割します。 if条件は、この特定の例の非テーブルテキストのための非常に基本的なフィルターです。 現実のシナリオでは、テーブル行やセルを正確に識別して解析するために、より堅牢なロジックが必要になります。 シンプルにフィルタリングされたテキストの出力: コンソールに抽出されたテキストが表示されます テキスト解析メソッドに関する重要な考慮事項: 最適な対象: シンプルで一貫したテーブル構造を持ち、明確なテキスト区切りのあるテキストベースのPDF。 制限: このメソッドは次のことに苦しむ可能性があります: 統合されたセルや複雑な入れ子構造を持つテーブル。 テキストの区切りではなく視覚的スペーシングによって列が定義されたテーブル。 画像として埋め込まれたテーブル(OCRが必要)。 一貫性のないテキスト抽出順序を引き起こすPDF生成の変動。 フィルタリングされた行(理想的にはテーブル行を表す)のCSVファイルに保存できます: using (StreamWriter file = new StreamWriter("parsed_table_data.csv", false)) { file.WriteLine("Company,Contact,Country"); // Write CSV Header foreach (string line in textLines) { if (line.Contains(".") || line.Contains("A Simple table example") || line.Length < 5) { continue; } else { // For a real CSV, you'd split 'line' into cells and join with commas // E.g., string[] cells = line.Split(new[] {" "}, StringSplitOptions.RemoveEmptyEntries); // string csvLine = string.Join(",", cells); // file.WriteLine(csvLine); file.WriteLine(line.Replace(" ", ",").Trim()); // Basic replacement for this example } } } Console.WriteLine("\nFiltered table data saved to parsed_table_data.csv"); using (StreamWriter file = new StreamWriter("parsed_table_data.csv", false)) { file.WriteLine("Company,Contact,Country"); // Write CSV Header foreach (string line in textLines) { if (line.Contains(".") || line.Contains("A Simple table example") || line.Length < 5) { continue; } else { // For a real CSV, you'd split 'line' into cells and join with commas // E.g., string[] cells = line.Split(new[] {" "}, StringSplitOptions.RemoveEmptyEntries); // string csvLine = string.Join(",", cells); // file.WriteLine(csvLine); file.WriteLine(line.Replace(" ", ",").Trim()); // Basic replacement for this example } } } Console.WriteLine("\nFiltered table data saved to parsed_table_data.csv"); $vbLabelText $csharpLabel C#でのより複雑なPDFテーブル抽出の戦略 複雑または画像ベースのPDFテーブルからデータを抽出する場合、単純なテキスト解析よりも高度な技術が必要です。 IronPDFは、その支援となる機能を提供します: スキャンされたテーブルのためのIronOCRの機能を使用: テーブルが画像内にある場合(例: スキャンされたPDF)、ExtractAllText()だけではキャッチできません。 IronOCRのテキスト検出機能は、まずこれらの画像をテキストに変換できます。 // Conceptual OCR usage (refer to IronOCR's documentation for detailed implementation) // Install Package IronOcr using IronOcr; using (var ocrInput = new OcrInput("scanned_pdf_with_table.pdf")) { ocrInput.TargetDPI = 300; // Good DPI for OCR accuracy var ocrResult = new IronOcr().Read(ocrInput); string ocrExtractedText = ocrResult.Text; // Now, apply parsing logic to 'ocrExtractedText' Console.WriteLine("\n--- OCR Extracted Text for Table Parsing ---"); Console.WriteLine(ocrExtractedText); } // Conceptual OCR usage (refer to IronOCR's documentation for detailed implementation) // Install Package IronOcr using IronOcr; using (var ocrInput = new OcrInput("scanned_pdf_with_table.pdf")) { ocrInput.TargetDPI = 300; // Good DPI for OCR accuracy var ocrResult = new IronOcr().Read(ocrInput); string ocrExtractedText = ocrResult.Text; // Now, apply parsing logic to 'ocrExtractedText' Console.WriteLine("\n--- OCR Extracted Text for Table Parsing ---"); Console.WriteLine(ocrExtractedText); } $vbLabelText $csharpLabel 詳細なガイダンスについては、IronOCRのドキュメント(https://ironsoftware.com/csharp/ocr/)をご覧ください。 OCRの後、結果のテキスト文字列を解析します。 座標ベースのテキスト抽出(上級): IronPDFのExtractAllText()はテキストストリームを提供しますが、いくつかのシナリオでは、各テキストスニペットのx,y座標を知ることが有益かもしれません。 もしIronPdfがテキストをバウンディングボックス情報と一緒に取得するAPIを提供するならば(現在のドキュメントをチェックしてください)、視覚的なアライメントに基づいてテーブルを再構築するために、より洗練された空間解析が可能になるでしょう。 PDFを別のフォーマットに変換する: IronPDFはPDFをHTMLのような構造化されたフォーマットに変換することができます。 多くの場合、HTMLテーブルの解析は、生のPDFテキストの解析よりも簡単です。 PdfDocument pdfToConvert = PdfDocument.FromFile("your_document.pdf"); string htmlOutput = pdfToConvert.ToHtmlString(); // Then use an HTML parsing library (e.g., HtmlAgilityPack) to extract tables from htmlOutput. PdfDocument pdfToConvert = PdfDocument.FromFile("your_document.pdf"); string htmlOutput = pdfToConvert.ToHtmlString(); // Then use an HTML parsing library (e.g., HtmlAgilityPack) to extract tables from htmlOutput. $vbLabelText $csharpLabel パターン認識と正規表現:非常に予測可能なパターンを持つが、区切りが一貫していないテーブルの場合、抽出されたテキストに複雑な正規表現を適用することで、テーブルデータを分離できることがあります。 適切な戦略の選択は、ソースPDFの複雑さと一貫性によって決まります。 テキストベースのテーブルを持つ多くの一般的なビジネス文書では、IronPDFのExtractAllTextとスマートなC#解析ロジックの組み合わせは非常に効果的です。画像ベースのテーブルでは、OCR機能は不可欠です。 まとめ この記事では、IronPDFを使用してC#でPDFドキュメントからテーブルデータを抽出する方法を、主にExtractAllText()メソッドとそれに続く文字列解析の活用に焦点を当てて説明しました。 このアプローチはテキストベースのテーブルには強力ですが、画像ベースのテーブルのような複雑なシナリオはIronPDFのOCR機能を使うか、PDFを他のフォーマットに変換することで対応できます。 IronPDFは.NET開発者のための多用途なツールキットを提供し、作成や編集から包括的なデータ抽出まで、多くのPDF関連タスクを簡素化します。 ExtractTextFromPageのようなメソッドを提供し、markdownやDOCXのようなフォーマットからPDFへの変換をサポートします。 IronPDFは無料で開発することができ、無料トライアルライセンスを提供しています。 本番環境への導入については、さまざまなライセンスオプションが利用可能です。 詳細と高度な使用例については、IronPDFの公式ドキュメントと使用例をご覧ください (https://ironpdf.com/) よくある質問 C#でPDFファイルからテーブルをプログラム的に読み取るにはどうすれば良いですか? IronPDFの`ExtractAllText`メソッドを使用して、PDFドキュメントから生のテキストを抽出できます。抽出後、C#でこのテキストを解析し、テーブルの行とセルを識別することで構造化データを効率よく抽出できます。 C#でPDFからテーブルデータを抽出するための手順は何ですか? このプロセスには、IronPDFライブラリのインストール、`ExtractAllText`メソッドを使用してテキストを取得、テキストを解析してテーブルを識別、および構造化データをCSVなどのフォーマットに保存する手順が含まれます。 C#でテーブルを含むスキャンされたPDFをどのように処理できますか? スキャンされたPDFの場合、IronPDFはOCR(光学式文字認識)を利用して、テーブルの画像をテキストに変換し、その後このテキストを解析して表形式データを抽出できます。 IronPDFはテーブル抽出を容易にするためにPDFを他のフォーマットに変換できますか? はい、IronPDFはPDFをHTMLに変換できます。これにより、開発者がHTML解析技術を使用できるため、テーブル抽出が簡略化されます。 IronPDFは複雑なPDFテーブルからデータを抽出するのに適していますか? IronPDFは、複雑なテーブルレイアウトを処理するために使用できるOCRおよび座標に基づくテキスト抽出の高度な機能を提供しており、セルの結合や不一致の区切り記号を含む場合にも対応します。 IronPDFを.NET Coreアプリケーションに統合するにはどうすれば良いですか? IronPDFは.NET Coreアプリケーションと互換性があります。Visual StudioでNuGetパッケージマネージャーを介してライブラリをインストールすることで統合できます。 C# で PDF 操作に IronPDF を使用するメリットは何ですか? IronPDFはPDFの作成、編集、抽出、OCRやさまざまなフォーマットへの変換を含む多機能な機能を提供しており、.NET開発者にとって強力なツールです。 PDFからテーブルデータを抽出する際の一般的な課題は何ですか? 複雑なテーブルレイアウト、たとえば結合セル、画像として埋め込まれたテーブル、不一致の区切り文字などを処理することは、解析戦略やOCRを必要とするかもしれません。 PDF処理でIronPDFを使用し始めるにはどうすれば良いですか? NuGetパッケージマネージャーを通じて、またはIronPDFのWebサイトからダウンロードして、IronPDFライブラリをインストールします。このセットアップは、C#プロジェクトでのPDF処理能力を利用するために重要です。 IronPDFを使用するにはライセンスが必要ですか? IronPDFは開発用に無料ですが、商用展開で透かしを削除するにはライセンスが必要です。完全な機能をテストするための無料の試用ライセンスが利用できます。 PDF から表を抽出する場合、IronPDF は .NET 10 と互換性がありますか? はい。IronPDF は .NET 10 (および .NET 9、8、7、6、Core、Standard、Framework) をサポートしているため、すべてのテーブル抽出機能は .NET 10 アプリケーションで変更なしで動作します。 カーティス・チャウ 今すぐエンジニアリングチームとチャット テクニカルライター Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。 関連する記事 更新日 2026年1月22日 .NETでIronPDFを使ってPDFドキュメントを作成する方法:完全ガイド C#で開発者向けにPDFファイルを作成する効果的な方法を発見します。コーディングスキルを向上させ、プロジェクトを効率化します。この記事を今すぐお読みください! 詳しく読む 更新日 2026年1月21日 VB.NETでPDFファイルをマージする方法:完全なチュートリアル IronPDF で PDF をマージします。シンプルな VB.NET コードを使用して、複数の PDF ファイルを1つのドキュメントに結合する方法を学びます。ステップバイステップの例が含まれています。 詳しく読む 更新日 2026年1月21日 C# PDFWriter チュートリアル:.NETでPDFドキュメントを作成する このステップバイステップガイドで開発者がC# PDFWriterを使用してPDFを効率的に作成する方法を学びます。記事を読んでスキルを向上させましょう! 詳しく読む QRコードをPDFに変換する方法C#チュートリアル: IronPDFを...
更新日 2026年1月22日 .NETでIronPDFを使ってPDFドキュメントを作成する方法:完全ガイド C#で開発者向けにPDFファイルを作成する効果的な方法を発見します。コーディングスキルを向上させ、プロジェクトを効率化します。この記事を今すぐお読みください! 詳しく読む
更新日 2026年1月21日 VB.NETでPDFファイルをマージする方法:完全なチュートリアル IronPDF で PDF をマージします。シンプルな VB.NET コードを使用して、複数の PDF ファイルを1つのドキュメントに結合する方法を学びます。ステップバイステップの例が含まれています。 詳しく読む
更新日 2026年1月21日 C# PDFWriter チュートリアル:.NETでPDFドキュメントを作成する このステップバイステップガイドで開発者がC# PDFWriterを使用してPDFを効率的に作成する方法を学びます。記事を読んでスキルを向上させましょう! 詳しく読む