← 返回题目列表

如何用大模型做可靠的结构化信息抽取?

高频 中等 第 10 / 25 题 更新于 2026/09/17
大模型信息抽取JSON Schema数据质量

简化版

可靠抽取要先定义字段语义、类型、必填性、枚举、单位以及“缺失”和“无法判断”的表示,再使用结构化输出生成候选。服务端依次做 Schema、跨字段业务规则和来源证据校验;模型不得为凑齐字段猜值。长文要分块抽取、按实体键合并并处理冲突,最终保留字段级证据和置信状态,低可信记录转人工。

详细版

流程通常是:文档解析与版面恢复 → Schema 定义 → 候选抽取 → 字段标准化 → 规则验证 → 跨块合并 → 人工或回退。日期、金额和实体名称应同时保留原始文本与规范值,例如 raw: "下周五"normalized: "2026-09-18",避免无法追溯转换。

{"value": 199.0, "currency": "CNY",
 "source": {"page": 3, "span": "L18-L20"},
 "status": "extracted|missing|ambiguous"}

评测按字段分别计算 precision、recall、F1 和 exact match,并单测表格、OCR 错误、多实体、否定、跨页与冲突。结构合法率不能代替字段准确率;高风险字段如金额、账号和日期应使用规则或权威系统复核。

完整版教学

一、Schema 的难点首先是语义

date 到底是签署日、生效日还是到期日?amount 是否含税、使用什么币种?如果字段定义模糊,模型即使稳定返回 JSON,数据也无法使用。

Schema 文档应为每个字段写定义、允许来源、格式、单位、是否可空和冲突策略,并提供正反例。多种日期不能挤进一个笼统字段。

记忆钩子:先把人之间的字段含义说清,再要求模型稳定抽取;JSON 只能固定形状,不能消除概念歧义。

二、缺失、空值和歧义必须区分

文档没提到电话号码,与文档明确写“无联系电话”不同;出现两个无法判断主次的号码,也不是缺失。可使用状态枚举表达。

状态含义是否可填默认值
extracted有明确证据不需要
missing文档未提供通常不可以
explicit_none明确表示无按业务映射
ambiguous多个候选无法选择转人工或保留候选

强迫所有字段非空会诱导模型编造。业务确有默认值时,应由规则层填充并标注来源为 default,而不是伪装成文档抽取。

三、保留原值、规范值和证据

抽取“1.2 万元”时,规范值可能是 12000,但仍要保留原始文本、币种和位置。若单位转换错,可直接回到证据修正。

{"raw":"1.2万元","normalized":12000,
 "unit":"CNY","page":2,"start":418,"end":423}

证据区间还支持界面高亮和字段级审核。没有证据的规范值应降低信任或拒绝入库。

四、长文分块要保护实体边界

合同条款可能跨页,表头可能只出现在上一块。固定字符切分会让金额离开所属项目。应利用标题、段落、表格和页面布局切块,并设置有限重叠。

每块抽取时携带文档 ID、页码和局部实体上下文。合并阶段使用稳定实体键,而不是把所有块结果简单拼接。

假设 20 页文档分 10 块,每块重叠 10%,会增加约 10% token;若因此把跨块漏召回从 12% 降到 3%,通常值得,但要用数据验证。

五、跨块合并需要冲突策略

同一合同金额可能在封面、正文和附件各出现一次,且版本不同。合并时考虑字段来源优先级、生效范围、版本和时间,不能多数票决定。

对实体列表先做去重,再处理字段级冲突。冲突无法自动解决时保留所有候选及证据,状态设为 ambiguous。

规则示例:正文签章页优先于目录摘要,最新补充协议覆盖原合同,但只覆盖明确修改的字段。

六、验证分为结构、字段和关系

Schema 检查类型与枚举;字段规则检查日期格式、金额范围和校验码;跨字段规则检查开始日期早于结束日期、明细之和等于总额。

若明细为 100、200、300,总额抽成 650,所有字段都能通过类型验证,但关系校验发现 100+200+300 != 650。此时应核对证据,而不是任意改一个数字使其相等。

高风险字段可以双通道抽取或与 OCR/规则结果交叉比对,分歧时转人工。

七、指标要按字段和状态计算

整体记录准确率很严格,但能反映能否直接入库;字段 F1 则帮助定位问题。对可重复实体使用集合级 precision/recall,对规范化字段同时统计原文定位和标准值准确率。

100 个应抽字段中返回 90 个,其中 81 个正确,则 precision=81/90=90%,recall=81/100=81%。只报 90% 精确率会掩盖漏掉 19 个字段。

还要单独统计 hallucinated field rate、ambiguous 识别率和证据定位准确率。

八、人机协作聚焦高风险与低置信

审核界面展示原文高亮、抽取值、规范值、规则错误和冲突候选,让人快速判断。不要只给一张脱离文档的 JSON 表单。

主动学习可把经常被修正的样本加入回归集,但人工修正需经过质量检查,避免把操作错误当标签。高风险字段可全审,普通字段按置信与抽样审核。

上线后监控文档类型变化、OCR 质量、字段缺失率和人工修改率;这些漂移可能比模型版本更影响结果。

九、常见误区与追问

  • 误区:JSON Schema 通过就代表抽取准确。 Schema 只验证结构,无法证明值来自文档。
  • 误区:必填字段为空时让模型补一个最合理值。 这是生成,不是抽取,应标记缺失。
  • 误区:长文按固定 token 切分即可。 可能破坏表格、条款和实体边界。
  • 误区:重复候选取出现次数最多的值。 来源优先级与版本比数量更重要。
  • 误区:只看整体准确率就能定位问题。 应按字段、状态、文档类型和证据分别统计。
  • 追问:OCR 错误如何处理? 保存 OCR 置信与版面位置,关键字段回看图像或用规则交叉验证。
  • 追问:如何处理相对日期? 保留原文,并基于明确参考时间规范化;参考时间缺失则标歧义。
  • 追问:抽取结果怎样可审计? 每个字段保存文档版本、原始 span、规范化规则和处理版本。

十、加强记忆

结构化抽取记住“先定义、三态值、留证据、再合并、分层验”:先把字段含义和单位定义清楚,区分抽到、缺失和歧义;同时保存原文、规范值与位置;长文按结构切块,按实体和来源规则合并;最后依次做 Schema、字段和跨字段验证。评价用 precision 与 recall,而不是把 JSON 合法率当数据正确率。