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转载请注明出处。

相关新闻

Dev-C++中文版教学手册:C语言入门的零配置实践指南

Dev-C++中文版教学手册:C语言入门的零配置实践指南

简介:本资源是一份面向C/C编程初学者与高校计算机基础课程学习者的Dev-C中文版入门操作手册,聚焦集成开发环境的安装配置、代码编辑、编译调试等核心实践环节,有效解决新手在IDE使用中常见的界面语言切换、源文件保存规范、编译错误定位、程序…

2026/10/9 21:15:56 阅读更多 →
mysql-connector-net-6.8.3-noinstall.zip:老系统连MySQL的实战手册

mysql-connector-net-6.8.3-noinstall.zip:老系统连MySQL的实战手册

简介:MySQL Connector/Net 6.8.3 是 MySQL 官方提供的 .NET 数据库驱动,支持 C#、VB.NET 等语言通过 ADO.NET 接口连接 MySQL 服务器,适用于需要免安装部署的桌面应用与服务端项目。这份 noinstall 压缩包共 21 个文件,大小仅 3.4…

2026/10/11 2:31:27 阅读更多 →
ASP.NET+SQL Server教材订购系统课程设计:从建库到答辩全流程

ASP.NET+SQL Server教材订购系统课程设计:从建库到答辩全流程

简介:这是一套基于ASP.NET与SQL Server的《数据库课程设计》教材在线征订系统完整项目,面向需要完成课程设计或综合实习的高校计算机专业学生。系统以教材科管理员和任课教师为核心角色,覆盖课程与班级信息维护、教师提交教材订购申请、管理员…

2026/10/9 21:14:54 阅读更多 →

最新新闻

自建Docker镜像仓库完整指南:从选型到落地的踩坑总结

自建Docker镜像仓库完整指南:从选型到落地的踩坑总结

在容器化落地走到一定规模之后,几乎每个团队都会遇到一个绕不开的基础设施问题:镜像仓库。项目标题就四个字“docker镜像仓库”,但真正动手自建过的人都知道,这四个字背后藏着选型、存储、安全、性能、运维一长串的决策链。这篇就…

2026/10/11 2:44:13 阅读更多 →
RoboMaster机器人硬件设计从电源到CAN总线再到电机驱动的排查指南

RoboMaster机器人硬件设计从电源到CAN总线再到电机驱动的排查指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 2:44:13 阅读更多 →
错误面板可优化清单记录

错误面板可优化清单记录

代码阅读总结 这是中望CAD插件里质检结果展示的 UserControl(QCResultUserControl),基于WinForm,核心功能: 两个构造:无参构造用于插件启动预创建控件;带dwg路径构造直接加载图纸质检数据UI&…

2026/10/11 2:44:13 阅读更多 →
C语言算法分析

C语言算法分析

本文通过讲解洛谷中珠心算测验的解题思路带编程小白了解C语言算法&#xff0c;同时会介绍一些函数知识和字符的使用方法&#xff0c;希望大家能够通过这篇文章学到更多编程知识&#xff0c;从而可以更好地运行代码。 一、函数名称及作用 <string.h> 常用函数 函数 …

2026/10/11 2:44:13 阅读更多 →
华为鸿蒙免费戒烟工具—小羊戒烟

华为鸿蒙免费戒烟工具—小羊戒烟

午饭刚放下筷子&#xff0c;手又往烟盒那边伸——饭后一支烟像按了开关。有时硬生生忍住了&#xff0c;过一会儿却忘自己撑过几回&#xff1b;周末回想&#xff0c;只剩“好像少抽了”&#xff0c;本周到底比上周少几支、省了多少&#xff0c;说不清。我想把抽了几支、忍住几次…

2026/10/11 2:44:13 阅读更多 →
ArcGIS属性表字段添加与编辑实战:类型选择、计算器及维护指南

ArcGIS属性表字段添加与编辑实战:类型选择、计算器及维护指南

1. 字段类型没选对&#xff0c;后面全是坑&#xff1a;先把数据需求想明白前天帮同事处理一份小区地块数据入库&#xff0c;忙活半小时后发现面积字段精度对不上&#xff0c;明明算好是123.45平方米&#xff0c;属性表里却挂着123.450000001。我问他当时添加字段选了什么类型&a…

2026/10/11 2:43:12 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介&#xff1a;基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码&#xff0c;面向计算机相关专业课程设计与期末大作业学生&#xff0c;以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程&#xff0c;…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程&#xff1a;键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化&#xff0c;十个新手有八个栽在"往输入框里填东西"这件事上&#xff1a;要么填不进去&#xff0c;要么填了一半&#xff0c;要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程&#xff1a;阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀&#xff1a;什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面&#xff0c;跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介&#xff1a;基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码&#xff0c;面向计算机相关专业课程设计与期末大作业学生&#xff0c;以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程&#xff0c;…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程&#xff1a;键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化&#xff0c;十个新手有八个栽在"往输入框里填东西"这件事上&#xff1a;要么填不进去&#xff0c;要么填了一半&#xff0c;要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程&#xff1a;阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀&#xff1a;什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面&#xff0c;跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →