Skip to main content
本教程面向信息提取场景,展示如何利用 xParse 作为数据底座,构建能够从非结构化文档中提取结构化信息(如发票、医疗票据、合同、简历、产品规格、API接口等)并自动整理的智能Agent。

场景介绍

业务痛点

在信息提取场景中,企业和开发者面临以下挑战:
  • 文档格式多样:需要处理发票、医疗票据、合同、简历、产品文档、技术文档等多种格式
  • 信息提取繁琐:需要从非结构化文档中提取结构化信息(发票信息、医疗费用、合同条款、个人信息、工作经历、产品参数、API接口等)
  • 数据标准化困难:不同来源的数据格式不统一,需要标准化处理
  • 批量处理需求:需要处理大量文档,手动提取效率低
  • 数据验证:提取的数据需要验证和校验,确保准确性
  • 财务合规:发票和医疗票据需要符合财务和税务要求
  • 法律风险:合同信息提取需要准确识别关键条款和风险点

解决方案

通过构建信息提取Agent,我们可以实现:
  • 自动化文档解析:使用 xParse Pipeline 自动解析各类文档
  • 智能信息提取:从文档中提取结构化信息(发票信息、医疗费用、合同条款、简历信息、产品规格、API接口等)
  • 数据标准化:将提取的信息转换为标准格式(JSON、CSV等)
  • 数据验证:验证提取的数据完整性和准确性
  • 批量处理:支持批量处理大量文档
  • 财务自动化:自动提取发票和医疗票据信息,支持财务系统对接
  • 合同分析:提取合同关键信息,识别重要条款和风险点

架构设计

核心流程
  1. 使用 xParse 解析文档,获得 elements 列表
  2. 聚合所有 elements 的 text 字段,形成完整文档文本
  3. 将完整文本直接输入大模型,通过精心设计的 prompt 提取结构化信息

环境准备

提示:X_TI_APP_IDX_TI_SECRET_CODE 参考 API Key,请登录 Textin 工作台 获取。示例中使用 通义千问 的大模型能力,其他模型用法类似。

Step 1:配置 xParse Pipeline

针对信息提取场景,我们只需要解析模块,无需分块和向量化:
  • 解析配置:解析文档,提取结构化元素,使用 textin 解析引擎提升精度和速度
  • 表格优化:确保表格结构完整提取(HTML格式-默认)
调用 xParse 得到解析后的结构化元素,聚合成完整文档文本,作为大模型信息提取的上下文:

Step 2:构建 LangChain Tools

首先,我们需要一个全局的文档文本存储,用于存储当前处理的文档内容:

Tool 1: 提取发票信息

Tool 2: 提取医疗票据信息

Tool 3: 提取合同信息

Tool 4: 提取简历信息

Tool 5: 提取产品规格

Tool 6: 提取API信息

Tool 7: 数据格式化

组装所有Tools

Step 3:配置 LangChain Agent

Step 4:完整示例代码

使用示例

示例1:提取发票信息

示例2:提取医疗票据信息

示例3:提取合同信息

示例4:提取简历信息

示例5:提取产品规格

示例6:提取API信息

最佳实践

  1. 解析优化:使用 TextIn 解析引擎,对表格和列表识别效果好
  2. 批量处理:支持批量处理多个文档,提高效率
  3. 格式标准化:将提取的数据转换为标准格式(JSON、CSV),便于后续处理
  4. 财务文档处理
    • 发票提取时重点关注发票代码、号码、金额等关键信息
    • 医疗票据提取时注意区分自费、医保支付等不同费用类型
    • 确保金额计算的准确性,支持财务系统对接
  5. 合同文档处理
    • 重点关注合同双方信息、合同金额、关键条款
    • 识别违约责任、争议解决等重要条款
    • 提取合同有效期,便于合同管理
  6. Prompt 优化:针对不同文档类型优化 prompt,明确提取字段和格式要求,提高提取准确率
  7. 错误处理:对提取失败的情况进行记录和人工复核,处理 JSON 解析错误
  8. 文档管理:在实际应用中,建议使用持久化存储(如数据库)管理文档文本,而不是内存字典
  9. 性能优化:对于长文档,可以考虑分段处理或使用流式处理,避免一次性加载过大的文本

常见问题

Q: 如何提高提取准确率?
A: 1) 优化文档格式,确保结构清晰;2) 优化 prompt,明确提取字段和格式要求;3) 使用 qwen-max 大模型进行提取,能更好地理解文档语义;4) 对提取结果进行验证和校验。
Q: 如何处理格式不统一的文档?
A: 1) 先统一文档格式;2) 使用多种提取策略;3) 人工校验和修正。
Q: 如何批量处理大量文档?
A: 1) 遍历文档目录,逐个调用 load_document() 加载文档;2) 并行处理多个文档(使用多线程或异步);3) 使用队列管理任务,避免内存溢出。
Q: 发票信息提取不准确怎么办?
A: 1) 确保发票图片清晰,OCR识别准确;2) 优化 prompt,明确发票字段的提取要求;3) 对于特殊格式的发票,可以在 prompt 中添加示例或特殊说明;4) 检查解析结果,确保 elements 中的文本完整。
Q: 医疗票据的费用明细如何提取?
A: 1) 优先使用表格识别功能提取费用明细表;2) 在 prompt 中明确费用明细的字段要求(项目名称、数量、单价、金额、医保类型等);3) 使用大模型提取,能更好地理解表格结构和语义;4) 区分医保支付、自费等不同费用类型。
Q: 合同关键条款如何识别?
A: 1) 在 prompt 中明确要求提取关键条款(如”违约责任”、“争议解决”等);2) 使用大模型理解合同语义,识别重要条款;3) 提取完整条款内容,不要截断。
Q: 文档太长导致大模型无法处理怎么办?
A: 1) 对于超长文档,可以按页面或章节分段处理;2) 只提取关键部分的信息;3) 使用支持更长上下文的模型;4) 考虑使用流式处理或分块提取策略。

相关文档