如何使用 ChatGPT 和 .NET 从 PDF 中提取结构数据

如何使用 ChatGPT 和 .NET 从 PDF 中提取结构数据

在您的 .NET 应用程序中,通过从 PDF 中提取结构化数据(如表、表格或实体)并将其转换为机器可读的格式,解锁先进的自动化和人工智能工作流。

引入

从 PDF 文档中结构化数据提取是商业智能、报告和自动化场景的关键要求. 虽然 Aspose.PDF.Plugin 可在 .NET 中强大的文本提交,同时将其与 ChatGPT 相结合,可将信息分类、格式化为 JSON、CSV 或域名对象。

常用案例:

  • 账单数据提取会计自动化
  • 从研究论文中提取表格
  • 将扫描表格转化为结构化记录

步骤1:从 PDF 提取文本或表内容

首先,使用 TextExtractor 或者,对于表数据,在 Aspose.PDF.Plugin 中提供专门选项。

using Aspose.Pdf.Plugins;

var inputPath = @"C:\Docs\invoice.pdf";
var extractor = new TextExtractor();
var options = new TextExtractorOptions();
options.AddInput(new FileDataSource(inputPath));
var resultContainer = extractor.Process(options);
string rawText = resultContainer.ResultCollection[0].ToString();

步骤2:准备并发送邮件到 ChatGPT

您可以指示 ChatGPT 以 JSON 或 CSV 等结构化格式分配和返回数据。

string apiKey = "YOUR_OPENAI_API_KEY";
string prompt = $"Extract the following invoice data as JSON: {rawText}";
// Use HttpClient as in previous examples
  • 提示更好的结果:

  • 使用明确,明确的提示:“提取一个表的项目描述,价格和总数作为JSON。

  • 对于大型PDF文件,将文本提取并发送到逻辑部分(例如,一次表)。

步骤3:Parse and Validate AI Output

接收 ChatGPT 的回复后,使用 JSON (或 CSV) 插件分配结构化数据:

// Assume jsonData is a JSON string received from ChatGPT
var structuredData = JsonConvert.DeserializeObject<List<InvoiceItem>>(jsonData);

public class InvoiceItem
{
    public string Description { get; set; }
    public decimal Price { get; set; }
    public int Quantity { get; set; }
    public decimal Total { get; set; }
}

验证步骤:

  • 查看有效的数据类型(数字、日期等)
  • 记录或旗帜不完整/双重数据进行审查

步骤4:保存或使用提取的数据

  • 将结构化结果存储在数据库、Excel文件或下流处理系统中。
  • 可选,使用 Aspose.PDF.Plugin 的 TableGenerator 将结构化数据注入到 PDF 总结或报告中。

先进的场景和解决问题

  • ◎Batch 提取:

  • 通过多个PDF,并从所有文件中集成结构化数据。

  • 合并 OCR:

  • 对于扫描的 PDF,首先在文本提取之前使用 OCR 插件。

  • 错误处理:

  • 捕获和登录 API 错误、无效的 JSON 响应和未结构化的碎片。

最佳准确性和遵守的做法

  • 在向 ChatGPT 发送之前预清 PDF 文本,以删除头条/脚条。
  • 避免发送敏感文件,除非使用安全/授权的AI终点。
  • 对于关键数据提取,使用后处理验证步骤。

FAQ:通过ChatGPT进行结构化数据提取

**Q:我可以从PDF中提取哪些类型的结构化数据?**A:表,列表、名称字段和常规模式(如日期、数量、ID)。

**Q:这个方法可以同时处理多个PDF吗?**答:是的,Batch Extraction 支持 - 通过您的 PDF 设置并集成结果。

**Q:ChatGPT是否总是与表和数字准确?**答:为了获得最佳结果,使用准确的步骤,并验证代码中的所有输出。

 中文