如何在 .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:什么是桌面提取的最佳模式?**答: 以清洁模式开始为结构化表格. 原料模式可能有助于数据采矿或自定义混合物.

Pro 提示: 要重复提取物,按一下每个报告模板的分配逻辑 CSV JSON 最大限度的灵活性.

 中文