如何在 .NET 中从 PDF 中提取结构数据和表格
如何在 .NET 中从 PDF 中提取结构数据和表格
从PDF中提取表格和结构化数据是分析师、会计师和任何与报告或财务报告工作的人的常见任务. .NET 的 Aspose.PDF.Plugin 提供检测、分配和出口平板文本、CSV 或 JSON 等表的编程选项.
在 PDF 文本中识别表格
- 簡單的 PDF: 包含清晰的細胞邊界(表、空間或線位)的表格最容易提取.
- 视觉检查: 提取原始或纯粹的文本,并检查一致的序列/列模式.
- Heuristic Parsing: 使用逻辑(例如,常规表达式,分数)来识别从提取的文本中可能的行和列.
示例:以 CSV 形式出口表
using Aspose.Pdf.Plugins;
using System.IO;
string input = @"C:\Docs\financial-report.pdf";
var extractor = new TextExtractor();
var options = new TextExtractorOptions(TextExtractorOptions.TextFormattingMode.Pure);
options.AddInput(new FileDataSource(input));
string extracted = extractor.Process(options).ResultCollection[0].ToString();
// Simple parsing: Assume rows separated by '\n', columns by tabs or spaces
var rows = extracted.Split('\n');
using (var writer = new StreamWriter(@"C:\Docs\extracted-table.csv"))
{
foreach (var row in rows)
{
var columns = row.Split(new[] {'\t', ' '}, StringSplitOptions.RemoveEmptyEntries);
writer.WriteLine(string.Join(",", columns));
}
}示例:以 JSON 出口表
using System.Text.Json;
var table = rows
.Where(r => r.Trim().Length > 0)
.Select(r => r.Split(new[] {'\t', ' '}, StringSplitOptions.RemoveEmptyEntries))
.ToList();
File.WriteAllText(@"C:\Docs\extracted-table.json", JsonSerializer.Serialize(table));限制与先进提示
- 混合/分裂细胞: 大多数编程提取物无法可靠地检测合并或多环细节;可能需要手动审查或自定义逻辑.
- 复杂表: 图像、图形或不规则配置的表需要先进的粘贴或视觉表提取工具.
- 准确性: 提取是最好的,简单,有结构的表格;总是检查输出,并为您的数据调整分布逻辑.
用例
- 财务分析和审计(提取板、支出表)
- 调查和反馈数据(大批回复表)
- 数据迁移从遗产PDF到数据库或Excel
经常提出的问题
**问:合并细胞可以自动检测或处理吗?**答:不可靠 - 混合/分裂的细胞通常需要手动纠正或视觉检查后提取.
**问:数据提取总是百分之百准确的吗?**A:不 - 结果取决于表结构、格式化和 PDF 始终审查提取的表格,必要时使用自定义规则或脚本清理.
**Q:什么是桌面提取的最佳模式?**答: 以清洁模式开始为结构化表格. 原料模式可能有助于数据采矿或自定义混合物.