Gemini 抽取金额为什么会差一万倍:单位和币种的验收

2026-10-23

Gemini 抽取金额差一万倍,往往是值提取到了,单位没有跟着走。验收时应同时保留原始字符串、数量、单位、币种和规范金额。JSON 字段类型正确不代表金额语义正确,本文用合成金额表给出独立业务断言,不提供财务或投资判断。

一组必须覆盖的金额样本

原文数量单位币种规范值或处理
人民币1.20万元1.20万元CNY12000.00元
USD 1,234.501234.50元级单位USD1234.50 USD
(200.00)元200.00元待上下文按约定识别负数
1.234,50 EUR待地区规则待核EUR不盲目删标点
预算—缺失缺失缺失null,不填零
合计0元0元待上下文真零,保留

括号是否代表负数、逗号是否为千分位,要根据业务规则与文档地区明确。不能看到中文就默认人民币,也不能把任何逗号都删除。遇到“金额单位:万元”的表头,单位应作为表格上下文回连到每个格。

规范化放在确定性程序中

让模型保留原文和定位,识别候选数量与单位;程序依据白名单换算。万元乘10000,元乘1,未知单位进入隔离。币种缺失时保留未知,不自行汇率换算。若业务确实要换汇,汇率来源和时间属于另一套合同。

from decimal import Decimal
factors = {'元': Decimal('1'), '万元': Decimal('10000')}
def normalize(number, unit):
    value = Decimal(number)
    if not value.is_finite():
        raise ValueError('非法金额')
    return value * factors[unit]
assert normalize('1.20', '万元') == Decimal('12000.00')
assert normalize('0', '元') == Decimal('0')

这里假设 number 已按确认的地区规则解析成十进制字符串。不能直接把未经核查的 OCR 文本喂给函数,再把没有异常当成正确。小数位和舍入规则也必须先约定,保留原值,避免早期舍入造成汇总偏差。

核对原文、单位继承与算术三条链

第一条检查数字有没有少位、小数点有没有认错;第二条检查单位来自本格、表头还是段落说明;第三条检查乘数与符号。每个规范值都记录换算规则版本,人工纠正时保留原提取值。合计核对可以发现部分问题,但两项一正一负的错误可能抵消,不能只看总额一致。

金额为空、无法识别和真实零是三个状态,导入数据库时仍应保留区别。发现差一万倍后先检查单位链,不要直接把所有结果乘10000;同一文档可能不同表格使用不同单位。

上线门槛按风险设定

对支付、结算等高影响流程,金额与币种必须经过明确规则与复核,模型结果不能未经检查直接触发写入。普通资料整理也应至少抽查大额、负数、混合币种和表头单位变化的记录。本文样本只覆盖这些边界,不能证明所有票据格式都能正确处理。

跨页表格尤其容易继承错误单位:上一页金额为万元,下一页附表却标元。验收样本应包含这种单位切换,并要求每条值指向自己的单位来源。不要只在整份文档顶层保存一个单位,否则程序可能把后续所有表格都按同一倍数换算。

常见问题

Schema 规定 amount 是数字能解决吗? 它不能判断数字究竟是元还是万元。

用浮点数相加是否足够? 对需要精确十进制的金额计算应选择明确的十进制或整数最小单位方案。

总额对得上还要逐项查吗? 仍要查关键项,错误可能互相抵消。

继续处理相关问题

相关入口:Gemini 接入基础。

官方依据与核对日期

核对日:2026-10-23。Gemini 结构化输出:官方要求应用继续验证值并处理语义错误;Python Decimal:Decimal 支持十进制运算;精度和舍入需要明确配置。文中的流程、阈值和合成数据属于工程示例,不能代替当前账号、文件或运行环境的验收。

想系统学会用 AI?报名体系课或加入会员,照着学、照着用。

加微信,把这一页存到手机上

扫码加站长企业微信,会自动把这一页的链接发给你,方便在手机上接着看。AI 落地卡住了,也可以直接问。

去留微信

留言讨论

评论发布后会被人工复核,违规内容将被删除。

    还没有人评论,来说说你的看法

    如果发表没有反应,可以前往联系我们告诉我们。

    这个页面有问题?

    提交时会附带当前页面地址和浏览器信息,帮助我们定位问题。不填联系方式即为匿名。