
PDF 数据提取 .NET:完整开发者指南
在.NET中使用IronPDF从PDF中提取文本、表格、表单和图像,只需几行代码——通过NuGet安装,加载您的PDF,并调用ExtractAllText(),即可在5分钟内开始。
PDF 文档在商业领域无处不在:发票、报告、合同和手册。 但通过编程方式从中获取关键信息可能很棘手。 PDF关注的是外观,而不是数据访问方式。 对于使用 C# 进行 OCR开发的开发人员来说,处理扫描文档时会面临独特的挑战。
对于.NET开发人员,IronPDF是一个强大的.NET PDF库,使从PDF文件中提取数据变得容易。 您可以直接从输入的 PDF 文档中提取文本、表格、表单字段、图像和附件。 无论您是自动化发票处理、构建知识库还是生成报告,这个库都能为您节省大量时间。处理扫描的 PDF 文件时,您可能还需要PDF OCR 文本提取功能来处理图像内容。
本指南将引导您完成提取文本内容、表格数据和表单字段值的实际示例,并在每个代码片段后进行解释,以便您可以将其应用到自己的项目中。 如果您还处理其他文档类型,您可能会发现探索读取扫描文档或将 TIFF 转换为可搜索的 PDF很有帮助。
如何开始使用 IronPDF?
通过NuGet包管理器安装IronPDF只需几秒钟。 打开包管理器控制台并运行:
对于更高级的安装方案,请查看NuGet包文档。 安装后,您可以立即开始处理输入的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);Imports IronPdf
' Load any PDF document
Dim pdf = PdfDocument.FromFile("document.pdf")
' Extract all text with one line
Dim allText As String = pdf.ExtractAllText()
Console.WriteLine(allText)这段代码加载 PDF 文件并提取其中的所有文本。 IronPDF自动处理复杂的PDF结构、表单数据和可能导致其他库问题的编码。 从PDF文档中提取的数据可以保存到文本文件,或进一步处理以进行分析。 对于更复杂的提取需求,您可能需要探索专门的文档处理技术。
实用技巧:您可以将提取的文本保存到 .txt 文件中以便稍后处理,或者解析它以填充数据库、Excel 表格或知识库。 这种方法适用于报告、合同或任何需要快速获取原始文本的 PDF 文件。 对于涉及表格的场景,请考虑学习如何读取文档中的表格以提取更结构化的数据。
提取出的文本是什么样的?

如何从特定页面提取数据?
现实世界中的应用程序通常需要精确的数据提取。 IronPDF提供多种方法来从PDF中特定页面中获取有价值的信息。 这种方法类似于OCR 区域特定提取,但适用于 PDF 文件。 在本例中,我们将使用以下PDF:

以下代码从该 PDF 中的特定页面提取数据,并将结果返回到我们的控制台。 处理多页文档时,您可能会发现多页 TIFF 处理技术对解决类似问题也很有用。
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()}");
}
}
}Imports IronPdf
Imports System
Imports System.Text.RegularExpressions
' Load any PDF document
Dim pdf = PdfDocument.FromFile("AnnualReport2024.pdf")
' Extract from selected pages
Dim pagesToExtract As Integer() = {0, 2, 4} ' Pages 1, 3, and 5
For Each pageIndex In pagesToExtract
Dim pageText As String = pdf.ExtractTextFromPage(pageIndex)
' Split on 2 or more spaces (tables often flatten into space-separated values)
Dim tokens = Regex.Split(pageText, "\s{2,}")
For Each token As String In tokens
' Match totals, invoice headers, and invoice rows
If token.Contains("Invoice") OrElse token.Contains("Total") OrElse token.StartsWith("INV-") Then
Console.WriteLine($"Important: {token.Trim()}")
End If
Next
Next本示例展示了如何从PDF文档中提取文本,搜索关键信息,并准备将其存储到数据文件或知识库中。 ExtractTextFromPage()方法保持文档的阅读顺序,使其非常适合文档分析和内容索引任务。 为了提高准确性,处理低质量 PDF 文件时,可以考虑使用图像优化滤镜。

在处理财务文件时,您可能会受益于财务语言包,以提高专业术语的准确性。 此外,进度跟踪可以帮助监控大批量文档的提取性能。
如何从PDF文件中提取表格?
PDF 文件中的表格没有原生结构——它们只是排列成表格形状的文本内容。 IronPDF在提取表格数据时保留布局,因此您可以将其处理成Excel或文本文件。 这类似于OCR图形提取,但专门针对表格内容进行了优化。 在这个例子中,我们将使用这个PDF文件:

我们的目标是提取表格本身的数据,以展示 IronPDF 解析表格数据的能力。 对于更高级的表格提取场景,可以探索读取文档中的表格,它使用机器学习来处理复杂的表格结构。
using IronPdf;
using System;
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");Imports IronPdf
Imports System
Imports System.Text
Imports System.Text.RegularExpressions
Dim pdf = PdfDocument.FromFile("example.pdf")
Dim rawText As String = pdf.ExtractAllText()
' Split into lines for processing
Dim lines As String() = rawText.Split(ControlChars.Lf)
Dim csvBuilder As New StringBuilder()
For Each line As String In lines
If String.IsNullOrWhiteSpace(line) OrElse line.Contains("Page") Then
Continue For
End If
Dim rawCells As String() = Regex.Split(line.Trim(), "\s+")
Dim cells As String()
' If the line starts with "Product", combine first two tokens as product name
If rawCells(0).StartsWith("Product") AndAlso rawCells.Length >= 5 Then
cells = New String(rawCells.Length - 2) {}
cells(0) = rawCells(0) & " " & rawCells(1) ' Combine Product + letter
Array.Copy(rawCells, 2, cells, 1, rawCells.Length - 2)
Else
cells = rawCells
End If
' Keep header or table rows
Dim isTableOrHeader As Boolean = cells.Length >= 2 AndAlso (cells(0).StartsWith("Item") OrElse cells(0).StartsWith("Product") OrElse Regex.IsMatch(cells(0), "^INV-\d+"))
If isTableOrHeader Then
Console.WriteLine($"Row: {String.Join("|", cells)}")
Dim csvRow As String = String.Join(",", cells).Trim()
csvBuilder.AppendLine(csvRow)
End If
Next
' Save as CSV for Excel import
File.WriteAllText("extracted_table.csv", csvBuilder.ToString())
Console.WriteLine("Table data exported to CSV")PDF中的表格通常只是被定位得像网格的文本。 此检查有助于确定一行是否属于表格行或标题。 通过过滤掉页眉、页脚和无关文本,您可以从 PDF 中提取干净的表格数据,以便直接导入 CSV 或 Excel。 对于布局复杂的收据和发票,请查看AdvancedScan 扩展程序。
此工作流程适用于PDF表单、财务文件和报告。 之后您可以将 PDF 中的数据转换为 xlsx 文件,或者将它们合并到一个包含所有有用数据的 zip 文件中。 对于具有合并单元格的复杂表格,您可能需要根据列位置调整解析逻辑。 数据输出文档提供了有关如何处理结构化结果的详细指导。

为了提高表格提取的准确性,可以考虑使用计算机视觉技术在处理之前自动检测表格区域。 这种方法可以显著改善复杂布局的渲染效果。
如何提取表单字段数据?
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");Imports IronPdf
Imports System.Drawing
Imports System.Linq
Dim pdf = PdfDocument.FromFile("form_document.pdf")
' Extract form field data
Dim form = pdf.Form
For Each 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" Then
field.Value = "Updated Value"
End If
Next
' Save modified form
pdf.SaveAs("updated_form.pdf")此代码从 PDF 中提取表单字段值,并允许您以编程方式更新它们,从而可以轻松处理 PDF 表单并提取指定范围的信息以进行分析或生成报告。 这对于自动化工作流程如客户入职、调查处理或数据验证非常有用。 对于身份文件处理,请探索身份文件 OCR最佳实践。

在使用包含复选框和单选按钮的表单时,您可能需要为特殊字段类型实现类似于条形码和二维码读取的自定义逻辑。OcrResult类文档提供了有关处理各种结果类型的详细信息。
接下来我该怎么做?
IronPDF使.NET中的PDF数据提取变得实用高效。 您可以从各种PDF文档中提取图像、文本、表格、表单字段,甚至是提取附件,包括通常需要额外OCR处理的扫描PDF。 对于扫描文档,将IronPDF与IronOCR功能相结合,可提供全面的文档处理能力。
无论您是构建知识库、自动化报告工作流程,还是从财务 PDF 中提取数据,此库都能为您提供完成此操作所需的工具,而无需手动复制或容易出错的解析。 它简单、快捷,并可直接集成到 Visual Studio 项目中。 在部署方面, IronPDF支持多种平台,包括Windows 、 Linux 、 Docker以及AWS和Azure等云平台。
不妨一试——您很可能会节省时间,并避免处理 PDF 文件时通常会遇到的种种麻烦。 对于初创公司和小团队,许可选项包括可随需求增长而扩展的灵活计划。 您还可以探索在生产部署中实施许可证密钥的方法。
准备在您的应用程序中实现PDF数据提取了吗? IronPDF听起来是适合您的.NET库吗? 立即开始免费试用,体验全部功能;或者了解我们的商业用途许可选项。 请访问我们的文档,获取全面的指南和 API 参考。 如需快速实现,请查看我们的演示和代码示例,即可在几分钟内上手。
相关文章


