抽取之后的第二次归一
抽取拿到的是原文形态的字符串,归一化负责把它们变成程序可以直接用的值:日期转成 ISO 8601、金额去掉千分位与货币符号、单位换算到固定基准。关键设计是双字段输出——raw 保留原文值,normalized 给出规范值,两者并存。原始值一旦被覆盖,后续对账发现问题时就再也回不到原文了。
基本信息
| 字段结构 | {raw: 原文值, normalized: 规范值} |
|---|---|
| 日期 | 统一为 YYYY-MM-DD(如 2026年10月11日 → 2026-10-11) |
| 金额 | 去千分位与货币符号,保留 2 位小数,单位统一为元 |
| 数量 | 单位统一为件/台/个,原文单位保留在 raw 里 |
| 无法换算 | normalized 输出 null,不做猜测 |
典型使用场景
- 发票与对账单入库:金额必须去符号、去千分位才能参与计算
- 合同条款抽取:日期统一后可以跨文档排序与比较
- 设备参数汇总:功率、长度统一到同一量纲后才能跨批次统计
- CRM 数据清洗:电话号码、地址按统一格式落库
- 批处理校验:归一化之后重跑一遍格式校验,把异常样本挑出来
归一化输出约定
归一化输出约定
对抽取结果做归一化,每个字段输出两个值:
{"amount": {"raw": "1,280.00元", "normalized": 1280.00},
"date": {"raw": "2026年10月11日", "normalized": "2026-10-11"},
"qty": {"raw": "3 箱", "normalized": 3, "unit_note": "原文单位为箱"}}
规则:
- 日期统一为 YYYY-MM-DD
- 金额去千分位与货币符号,保留 2 位小数,单位统一为元
- 数量单位统一为件/台/个,原文单位保留在 raw
- 无法确定如何换算时 normalized 输出 null,并在 notes 说明
# 换算规则写进提示,不要在批处理中临时判断字段归一对照
| 字段 | 原文形态 | 归一化结果 |
|---|---|---|
| 日期 | 2026年10月11日 / 10/11/2026 | 2026-10-11 |
| 金额 | 1,280.00元 / ¥1280 | 1280.00 |
| 数量 | 3 箱 / 三台 | 3(原单位记在 raw) |
| 百分比 | 12.5% / 0.125 | 统一为一种口径后再入库 |
| 电话 | 138 0000 0000 | 138-0000-0000 |
让模型做单位换算(例如 kW 换成 W)在批处理里容易漏改或改错。更稳的分工是:模型只负责识别原文与提取数值,换算放到程序里用一套固定规则执行。
归一化后要再跑一遍格式校验(正则与范围),把「归一化后仍然不合规」的样本单独挑出来。这类样本往往说明字段识别本身有问题,而不是格式问题。