Python Responses API视觉输入与本地金额校验最小实现

发布时间:2026/10/9 21:15:45
Python Responses API视觉输入与本地金额校验最小实现 把发票图片交给视觉模型确实能省掉手输但“模型说是 128.00 元”不等于系统该付款。更稳妥的做法是模型只产生候选字段本地程序以Decimal重算含税金额、检查币种和上限再把通过或拒绝的理由交给界面。你将得到一个可以复制的最小链路也能把同样的门禁迁移到合同、收据和质检单。OpenAI 的 Images and vision 文档说明 Responses API 可接收图像输入。本文用 REST 而非 SDK目的是让请求、超时和错误分支对初学者可见。模型 ID 请以目标账号的 Models 页面为准代码中的gpt-6是示例占位调用前替换为你账户可用模型。一致且未超限异常授权票据图片base64视觉请求模型返回JSON候选Decimal本地复算进入人工确认拒绝并显示原因环境准备与完整代码Python 3.10安装pip install requests设置export OPENAI_API_KEY...再运行python receipt_gate.py receipt.jpg。示例未在本次任务中实际调用线上 API已在本机完成语法检查。importbase64,json,os,sysfromdecimalimportDecimal,InvalidOperationimportrequests APIhttps://api.openai.com/v1/responsesdefgate(data:dict)-tuple[bool,str]:try:subtotalDecimal(str(data[subtotal]))taxDecimal(str(data[tax]))totalDecimal(str(data[total]))except(KeyError,InvalidOperation):returnFalse,字段缺失或金额不是数字ifdata.get(currency)!CNY:returnFalse,仅接受CNY票据iftotalDecimal(2000):returnFalse,超过自动处理上限ifabs(subtotaltax-total)Decimal(0.01):returnFalse,小计、税额与总额不一致returnTrue,允许进入人工确认defmain(path:str)-None:keyos.environ.get(OPENAI_API_KEY)ifnotkey:raiseSystemExit(请设置OPENAI_API_KEY)imagebase64.b64encode(open(path,rb).read()).decode()prompt识别票据严格只返回JSONsubtotal,tax,total,currencybody{model:gpt-6,input:[{role:user,content:[{type:input_text,text:prompt},{type:input_image,image_url:data:image/jpeg;base64,image}]}]}try:rrequests.post(API,headers{Authorization:fBearer{key},Content-Type:application/json},jsonbody,timeout30)r.raise_for_status()textr.json()[output][0][content][0][text]ok,reasongate(json.loads(text));print({approved:ok,reason:reason})except(requests.RequestException,KeyError,json.JSONDecodeError)ase:print({approved:False,reason:f调用或解析失败:{e}})if__name____main__:iflen(sys.argv)!2:raiseSystemExit(用法: python receipt_gate.py receipt.jpg)main(sys.argv[1])关键点有三个不要用浮点数算钱不要允许模型决定“批准”不要把原始票据和密钥写进日志。成功时预期输出{approved: True, reason: 允许进入人工确认}仍不是自动付款。常见失败一是图片太大或格式不被账户支持先压缩并核对视觉文档二是模型返回 Markdown 围栏而非 JSON应在生产中启用结构化输出或做更严格解析三是网络超时代码已设 30 秒生产环境还应重试并加幂等键四是发票有多税率不能沿用单一小计公式。它适合低风险预录入和人工前置核验不适合绕过财务审批、税务判断或未获授权的证件处理。下一步可把字段置信度、供应商白名单和审计 ID 写入数据库。5分钟练习把 2000 改成你的团队阈值并给gate增加“日期不得晚于今天”的规则。把它接进真实页面页面至少应该同时展示原图缩略图、模型原始候选、本地复算值和拒绝原因。不要只用一枚绿色“已通过”徽标使用者需要能看出是“识别到 128.00”“规则算出 128.00”还是“金额相差 0.02”。若模型无法读取图片保留上传记录并让用户补图若规则不通过允许修正字段但要求说明原因。对发票号、身份证号等敏感字段日志只保留哈希或局部掩码原图按组织保留期自动删除。批量场景可先排队、限制单用户并发并把同一文件的 SHA-256 作为幂等键避免重试造成重复报销草稿。官方文档Images and vision。你的业务里哪一个AI提取字段必须由本地规则二次确认关注「蜗牛聊AI」一起看懂技术变化背后的真正机会。本文首发于 java4u.cn转载请注明出处。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询