如何使用 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是否总是与表和数字准确?**答:为了获得最佳结果,使用准确的步骤,并验证代码中的所有输出.

 中文