1. 摘要
用 SOLO 从零搭建了一套智能费用审核系统,能自动识别报销单、发票、支付截图,通过 11 条规则 + 9 条 AI 审计全面检测异常。其中支付截图造假检测采用 OpenCV 确定性算法 + 大模型宏观检测的双层架构,能精准识别数字字形篡改、小数点伪造、千分位异常等肉眼难以察觉的造假痕迹。原本人工审核一张报销单需要 15 分钟,现在 3 分钟即可完成。
2. 背景
我是一名财务兼产品,平时需要审核大量的报销单据。传统审核流程中,需要逐一核对报销单、发票、支付记录等多种单据,人工比对金额、日期、收款方等关键字段,不仅耗时耗力,而且容易因人为疏忽导致风险遗漏。
更棘手的是,支付截图造假手段日益精妙——PS 修改金额、拼接不同平台的界面元素、伪造数字字形等,肉眼几乎无法识别。我希望能用 AI 打造一个"火眼金睛"的审核助手,既能提效,又能堵住人工审核的漏洞。
3. 实践过程
任务拆解
我把整个系统拆解为四个核心模块:
-
OCR 识别模块:自动识别报销单、发票、支付截图的字段
-
规则审计模块:11 条纯代码校验规则
-
AI 审计模块:9 条智能审计规则
-
人工复核模块:高风险全量复核、中风险抽检、低风险免检
审计规则设计
规则审计(11 条,纯代码校验)
| 编号 | 名称 | 严重程度 | 检测内容 |
|---|---|---|---|
| R001 | 金额一致性 | 动态 | 发票总额 vs 报销金额 vs 支付总额,差额<5%通过,5-10%非否决,>10%否决 |
| R002 | 日期合理性 | 非否决 | 支付日期 ≤ 开票日期 ≤ 支付日期+7天容差 |
| R003 | 敏感类目 | 动态 | 发票货物名称命中敏感词库(高端烟酒、奢侈礼品等) |
| R004 | 收款方一致性 | 否决 | 发票销售方 = 支付收款单位 |
| R005 | 支付时间异常 | 非否决 | 22:00-06:00 夜间支付、周末支付 |
| R006 | 发票连号 | 否决 | 同一单据内发票号码连续递增 |
| R007 | 金额异常 | 非否决 | 金额在 9000-10000 区间且为整数(疑似拆分) |
| R008 | 供应商风险 | 否决 | 经营异常 / 新成立≤3月且≥1000元 / 小规模且≥5000元 |
| R009 | 拆分套票 | 非否决 | 同一销方≥3张小额发票,日期差≤3天 |
| R010 | 节假日开票 | 非否决 | 开票日期在法定节假日列表中 |
| R011 | 支付截图数据校验 | 否决 | 交易单号嵌入日期 vs 交易时间不一致;重复交易单号 |
AI 审计(9 条,大模型 + OpenCV)
| 编号 | 名称 | 严重程度 | 检测内容 |
|---|---|---|---|
| A001 | 招待标准合理性 | 非否决 | 人均消费是否超标,优先参考知识库标准 |
| A005-1 | 数字字形检测(9/6) | 否决 | OpenCV 凸性缺陷检测,深度比>33%判定伪造 |
| A005-2 | 小数点形状检测 | 否决 | OpenCV 圆形度检测,圆形度>0.80判定异常 |
| A005-3 | 千分位格式检测 | 否决 | 支付宝≥1000必须有千分位,微信不得有千分位 |
| A005-4a | 嫁接检测 | 否决 | 大模型检测跨平台字段(如微信出现支付宝特征) |
| A005-4b | UI排版/逻辑异常 | 非否决 | 大模型检测字体不一致、间距异常、色调异常 |
| A003 | 内容一致性 | 非否决 | 发票内容与报销说明语义匹配分析 |
| A004 | 经营范围匹配 | 否决 | 发票货物是否在供应商经营范围内 |
| A006 | 知识库合规兜底 | 否决 | 基于企业制度文档的合规性检查 |
风险等级判定规则
-
高风险:命中≥1项否决指标 -
中风险:无否决但命中≥1项非否决指标 -
低风险:所有审计项通过
SOLO 能力使用
| 能力 | 用途 |
|---|---|
| 代码生成 | 前端 Vue3 + 后端 FastAPI 完整代码 |
| 多模态模型 | OCR 识别、支付截图视觉检测 |
| 文档生成 | PRD 文档、部署指南、流程图 |
| 调试能力 | 定位并修复多个 Bug |
关键过程
① 支付截图造假检测的演进
这是整个项目最核心也最困难的模块,经历了多次方案迭代:
-
方案一(失败):像素扫描 + 放大,让模型看金额区域。结果模型识别到了美团 logo 而不是金额,放弃。
-
方案二(失败):百度 OCR 定位金额区域 → 放大 → 视觉模型判断。结果模型把真实截图误判为造假,不可靠。
-
方案三(成功):OpenCV 确定性算法 + 大模型宏观检测的双层架构
-
微观层:数字 9/6 字形检测(凸性缺陷深度 > 33% 判定伪造)、小数点形状检测(圆形度 > 0.80 判定异常)、千分位格式检测
-
宏观层(大模型):嫁接检测(跨平台字段)、UI 排版异常
-
② 踩过的坑
| 问题 | 解决方案 |
|---|---|
| 百度 OCR 限流 | 添加 1.1s 间隔,等待冷却 |
| OCR 识别到商品编号而非金额 | 正则过滤:只识别含小数点的金额格式 |
| PNG RGBA 转 JPEG 报错 | 先转换颜色模式再保存 |
| 千分位轮廓过滤太严格 | 放宽宽高比和面积限制 |
| A005-4a 提示词误报 | 明确列出检测项,禁止模型衍生 |
4. 成果展示
系统业务流程图 审计系统业务流程图 hosted at ImgBB — ImgBB
审计系统业务流程图
整个系统采用双引擎驱动(规则引擎 + 大模型 AI 审计),通过分级处置机制(高/中/低危漏洞差异化处理),实现了从上传→审计→复核→反馈优化的完整闭环。
核心页面
| 页面 | 功能 |
|---|---|
| 单据审计页 | 报销单录入、发票/支付记录表格、文件上传、OCR 识别、审计执行 |
| 审计历史页 | 历史记录查询、详情查看、报告导出 |
| 配置中心 | 敏感词库、规则参数、知识库管理 |
| 人工复核 | 数据看板、待复核列表、抽检管理 |
核心文档
-
PRD 文档(含流程图、页面原型、非功能需求)
-
部署指南(一键启动脚本)
-
审计主流程说明
视频演示
5. 效果与总结
提效数据
| 指标 | 人工 | 系统 |
|---|---|---|
| 单张报销单审核时间 | 15 分钟 | 3 分钟 |
| 支付截图造假识别率 | 依赖经验 | OpenCV 确定性检测 |
SOLO 在流程中的作用
-
生成了完整的前后端代码(Vue3 + FastAPI)
-
调试并修复了多个 Bug(OCR 限流、格式转换、阈值校准)
-
生成了专业的 PRD 文档、流程图、页面原型
-
提供了部署方案和一键启动脚本
可复用的方法
-
双层检测架构:OpenCV 确定性算法 + 大模型宏观判断,既保证精度又覆盖广度
-
规则引擎可配置化:敏感词、规则参数、严重程度全部可视化配置,无需改代码
-
A005 子规则拆分:将复杂检测拆解为独立子规则,便于独立优化和阈值调整
总结
这个项目让我深刻体会到:AI 不仅能提效,更能解决"人眼看不出来的问题"。支付截图造假检测从最初的"让模型看"到最终的"OpenCV + 大模型"双层架构,是不断试错、不断优化的结果。SOLO 在这个过程中既是开发助手,也是调试伙伴,让我一个财务+产品角色也能完成完整的系统开发。