IRONSOFTWAREHOME
使用IRONPDF

如何在 .NET 中从 PDF 中提取数据

Curtis Chau
Curtis Chau
Updated: 2026年4月21日

IronPDF 使从 .NET 中的 PDF 文档中提取文本、表格、表单字段和附件变得简单,只需几行代码即可完成,非常适合自动化发票处理、构建知识库或生成报告,而无需复杂的解析。

PDF文档在商业中无处不在; 现代例子包括发票、报告、合同和手册。 但是以编程方式从中提取重要信息可能很棘手。 PDF关注的是外观,而不是数据访问方式。

对于.NET开发人员,IronPDF是一个强大的.NET PDF库,使从PDF文件中提取数据变得容易。 您可以直接从 PDF 文档中提取文本、表格、表单字段、图片和附件。 无论您是自动化处理发票、构建知识库,还是生成报告,该库都能为您节省大量时间。

本指南将通过实际示例向您介绍如何提取文本内容、表格数据和表单字段值,并在每个代码片段之后进行说明,以便您可以将其适应到自己的项目中。

如何开始使用 IronPDF?

为什么安装如此快速?

通过 NuGet 包管理器安装 IronPDF 只需几秒钟。 打开包管理器控制台并运行:

PM > Install-Package IronPdf

对于 Windows 开发者而言,安装过程非常简单。 如果您部署在 LinuxmacOS 系统上,IronPDF 同样支持这些平台。 您甚至可以在 Docker 容器中运行 IronPDF,或将其部署到 AzureAWS

提取文本的最简单方法是什么?

安装完成后,您可以立即开始处理 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);

这段代码加载 PDF 文件并提取其中的所有文本。 IronPDF自动处理复杂的PDF结构、表单数据和可能导致其他库问题的编码。 从 PDF 文档中提取的数据可以保存到文本文件中,或进行进一步处理以供分析。

**实用提示:**您可以将提取的文本保存为.txt文件以便后续处理,或者解析它以填充数据库、Excel表格或知识库。 此方法适用于报告、合同或任何您只需要快速获取原始文本的PDF。 如需处理更复杂的提取场景,请查阅全面的解析指南

如何从特定的 PDF 页面中提取数据?

为何要针对特定页面而非提取所有内容?

现实世界中的应用程序通常需要精确的数据提取。 IronPDF 提供了多种方法,用于从特定页面中提取有价值的信息。 在本例中,我们将使用以下PDF:

using IronPdf;
// Load PDF from a memory stream if needed
byte[] pdfBytes = File.ReadAllBytes("report.pdf");
var pdfFromStream = PdfDocument.FromBytes(pdfBytes);
// Or load from a URL
var pdfFromUrl = PdfDocument.FromUrl("___PROTECTED_URL_32___");

如何在提取的文本中搜索关键信息?

以下代码从特定页面提取数据,并将结果输出到控制台。 此方法在处理多页 PDF 或需要拆分 PDF 进行处理时尤为有用:

using IronPdf;
using System;
using System.Text.RegularExpressions;

// 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()}");
        }
    }
}

本示例演示了如何从 PDF 文档中提取文本、搜索关键信息并将其准备好以供存储。 ExtractTextFromPage() 方法维护文档的阅读顺序,使其非常适合文档分析和内容索引任务。 对于高级文本处理,您甚至可以在 PDF 文件中进行文本搜索和替换。

如何从 PDF 文档中提取表格数据?

为何表格提取与普通文本不同?

PDF文件中的表格没有原生结构; 它们只是被定位得像表格的文本内容。 IronPDF在提取表格数据时保留布局,因此您可以将其处理成Excel或文本文件。 对于涉及 PDF 中图片的更复杂场景,您可能需要单独提取图片

如何将提取的表格转换为 CSV 格式?

using IronPdf;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;

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");

提取复杂表格时常见哪些问题?

PDF中的表格通常只是被定位得像网格的文本。 此检查有助于确定一行是否属于表格行或标题。 通过过滤掉页眉、页脚和无关文本,您可以从 PDF 中提取干净的表格数据,以便直接导入 CSV 或 Excel。

此工作流适用于 PDF 表单、财务文档和报告。 您稍后可以将提取的数据转换为 xlsx 文件,或将其合并到一个 ZIP 文件中。对于包含合并单元格的复杂表格,您可能需要根据列的位置调整解析逻辑。 处理扫描版 PDF 时,建议先使用 IronOCR 进行文本识别。

Excel 电子表格,展示已提取的产品数据,包含产品 A、B 和 C 的"项目"、"数量"、"价格"及"总计"列。 成功从 PDF 中提取了包含产品信息、数量、价格及计算总和的表格数据。

如何从 PDF 中提取表单字段数据?

为何要通过编程方式提取和修改表单字段?

IronPDF 还支持表单字段数据的提取和修改。 这在处理需要自动化处理的可填写 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");

若需进行更高级的表单处理,您还可以处理特定的字段类型:

// Work with different form field types
foreach (var field in pdf.Form)
{
    switch (field)
    {
        case TextFormField textField:
            Console.WriteLine($"Text field '{field.Name}': {textField.Value}");
            break;
        case CheckBoxFormField checkBox:
            Console.WriteLine($"Checkbox '{field.Name}': {checkBox.Value}");
            checkBox.Value = true; // Check the box
            break;
        case ComboBoxFormField comboBox:
            Console.WriteLine($"ComboBox '{field.Name}': {comboBox.Value}");
            // Set to first available option
            if (comboBox.Choices.Any())
                comboBox.Value = comboBox.Choices.First();
            break;
    }
}

何时应使用表单字段提取?

此代码片段从PDF中提取表单字段值,并允许您以编程方式更新它们。 这使得处理 PDF 表单并提取特定信息以供分析或生成报告变得轻而易举。 这对于自动化工作流程如客户入职、调查处理或数据验证非常有用。

常见的用例包括:

  • 自动化数字签名
  • 处理受密码保护的 PDF 文件
  • 提取数据以符合 PDF/A 标准
  • 构建自定义工作流

两份 PDF 表单的并排对比——左侧为包含示例数据(John Doe)的原始表单,右侧为包含新数据(Updated Value)的更新后表单,展示了 .NET 中的数据提取与修改功能。 展示使用 .NET 成功提取并修改 PDF 表单数据的对比图,底部可见的 Visual Studio 调试控制台显示了提取的客户信息。

我的下一个步骤是什么?

IronPDF使.NET中的PDF数据提取变得实用高效。 您可以从各种 PDF 文档中提取文本、表格、表单字段、图像和附件,包括通常需要额外 OCR 处理的扫描版 PDF。

无论您的目标是构建知识库、自动化报告工作流程,还是从财务PDF中提取数据,该库都为您提供了无需手动复制或易出错解析来完成任务的工具。 它简单、快捷,并可直接集成到 Visual Studio 项目中。 试一试; 这将为您节省大量时间,并避免处理 PDF 文件时常见的麻烦。

如需处理更复杂的场景,请参阅:

第一步:
arrow pointer

准备在您的应用程序中实现PDF数据提取了吗? IronPDF听起来是适合您的.NET库吗? 开始您的免费试用以用于商业用途。 请访问我们的文档,获取全面的指南和 API 参考

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

...
阅读更多

相关文章

Key in blue circle

立即获取免费的 30 天试用版密钥

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
预约您的免费现场演示
Booking Badge

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户