登录
推荐 文章 Go 技术 课程 下载 专题 AI
首页 >  科技周边 >  人工智能

多模态模型抽取合同表格怎么验收:版面切片、字段约束与人工复核

来源:17golang原创

时间:2026-08-25 03:14:13 289浏览 收藏

合同表格的难点通常不在“能不能识别文字”,而在于模型会把跨页表头、合并单元格和金额单位拼错。比如付款计划里“比例”“金额”“付款节点”分散在两页,直接让模型输出 JSON,结果看起来完整,回到原文却找不到对应位置。更稳的做法是先按版面切片,再让模型只填约定字段,最后用规则和原页证据验收。

要点速览
  • 先保留页码、表格编号和单元格邻接关系,再请求结构化字段。
  • 金额、日期、比例和必填项必须在模型输出后做独立校验。
  • 每个字段都要能回指原页或切片坐标,无法回指就进入人工复核。
  • 验收指标应区分字段正确、行列关系正确和证据完整,不能只看 JSON 是否能解析。

先把抽取接口的目标定成“可验收字段”

如果调用方只说“把合同表格提取出来”,接口就没有明确成功标准。一个适合验收的结果,至少要带上合同页码、表格名称、行号、字段名、规范化值和来源片段。模型负责理解视觉布局,程序负责检查类型、范围和必填关系。

{
  "table": "付款计划",
  "page": 7,
  "rows": [
    {
      "row_no": 1,
      "milestone": "合同签署后 10 日内",
      "ratio": 0.3,
      "amount": 150000,
      "currency": "CNY",
      "evidence": {"page": 7, "slice": "p7-table-02"}
    }
  ]
}

这里的 evidence 不是装饰字段。它让审阅者可以从结果回到第 7 页的原始切片,判断 0.3 是“30%”还是被相邻列带进来的数字。对于金额字段,建议同时保留展示值和规范化值,避免把“15 万元”直接变成没有单位的 15。

版面切片决定模型看见什么

整份合同直接送入模型,长表格容易出现两类问题:表头在上一页、数据在下一页时列关系丢失;页脚或正文中的数字被吸进当前行。切片时不要只按固定高度裁图,应优先围绕表格边界裁剪,并为跨页表格保留上一页表头和下一页第一行。

多模态模型抽取合同付款计划时的版面切片、表头保留与字段输出流程

可以把一次请求的输入元数据固定成 document_idpageslice_idtable_id。同一张表的多个切片使用同一个 table_id,这样后续合并行时不会把两个表的第 1 行混在一起。

  • 单页表格:保留表头、表尾和页码标记。
  • 跨页表格:复制表头上下文,给续表行分配连续行号。
  • 合并单元格:要求模型返回合并范围,不把空白单元格自动当成新值。

字段约束要覆盖类型、关系和业务边界

结构化输出只能保证结果符合 JSON 形状,不能保证模型读对了表格。收到结果后,至少做三层检查。

检查层示例失败处理
类型比例是 0 到 1 的数字,日期能解析标记字段错误,不自动修正
行列关系金额与付款节点来自同一行回看原切片,必要时重切
业务边界付款比例合计接近 1,币种不能为空转人工复核,不静默放行

以付款计划为例,ratio 合计不等于 1 不一定是模型错了,合同可能还有“尾款按实际结算”的开放项。规则应该把异常分成“可自动确认”和“需人工判断”,而不是见到不等于 1 就强行归一化。

错误处理:不要用空字段掩盖低置信结果

表格被扫描阴影遮住、页码缺失或列线不清时,模型可能返回一个语法正确但证据为空的对象。接口应区分输入问题、模型解析问题和业务校验问题,并在结果中保留状态。

{
  "status": "needs_review",
  "errors": [
    {"field": "amount", "code": "evidence_missing", "row_no": 2},
    {"field": "ratio", "code": "sum_out_of_range", "row_no": null}
  ]
}

不要把失败字段改成空字符串后继续进入合同系统。空值会让下游误以为“合同没有填写”,而不是“这次识别没有拿准”。对于同一切片的再次请求,要记录请求版本和输入摘要,避免人工复核时无法解释两次结果为什么不同。

人工复核应该围绕证据,而不是重新抄一遍

合同表格结构化结果与原页证据并排复核,标出金额、比例和行号异常

复核页面最有用的布局是左侧显示原始切片,右侧显示字段结果,中间突出异常字段。审阅者只需要确认三个问题:值是否来自正确的列,单位是否完整,行号和付款节点是否对应。确认后记录 reviewerreviewed_at 和修改原因,后续才能统计是切片问题还是字段约束问题。

  1. 先按 evidence.page 打开原始页面。
  2. 再按 slice_id 定位表格区域,检查表头和相邻行。
  3. 最后只修改有证据支持的字段,并保留模型原值。

验收指标要分开看,准确率不是一个数字

一套小规模回归集可以包含不同表格结构:单页表、跨页表、合并单元格、带单位金额和缺失字段。验收时分别统计字段值正确率、行列关系正确率、证据可回指率和异常拦截率。这样才能知道问题究竟来自视觉理解,还是来自后处理。

对生产数据,建议保留一批脱敏样本作为固定回归集;每次更换模型、提示词或切片策略都跑一遍。指标下降时先比较失败样本,不要只看平均分。平均分上升但跨页表全错,仍然不能上线。

常见问题

结构化输出能保证合同表格一定准确吗?

不能。它主要约束字段形状,版面理解、单位识别和行列对应仍需原页证据与规则校验。

为什么不直接把整份 PDF 交给模型?

整份输入适合先做文档级定位,但表格验收仍建议围绕页码和表格边界切片,否则跨页表头和相邻数字更容易串列。

金额识别错了应该自动重试还是人工修改?

先看证据是否存在。证据缺失或单位不明时进入人工复核;只有确认切片质量或输入格式问题时,才带着相同的记录信息重试。

把可回指证据作为放行条件

合同表格抽取的最小可靠闭环是:保留版面上下文,输出受约束字段,独立校验类型和关系,为每个值绑定原页证据,异常进入人工复核。模型换了、提示词换了,验收接口仍然可以用同一套字段和回归样本判断结果是否可用。

声明:本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>