基于AI+企微的智能报销系统

一、总体架构

基于 AI+企业微信的智能报销系统,主要结合当前主流的智能体,对接企业微信的报销流程,改进企业内部报销流程,提升报销效率。主要包含三部分内容,详细下图所示:

  1. 基于企业微信的自定义报销流程:可在企业微信企业管理后台完成报销流程定义以及报销模板发布,其中包含报销时需要提交的表单内容以及发票相关信息等;
  2. 基于 MaxKB 的发票智能识别 Agent:通过 AI 完成发票内容识别以及提交时发票文件处理。
  3. 报销入口应用:入口应用主要将发票批量传递给 Agent,Agent 则将识别归类好的发票传递给应用,用户在应用页面上进行确认修改,无误后直接提交,提交时应用调用企业微信的报销流程接口,完成报销发起/提交。

二、业务场景

AI 智能报销系统主要解决以下两种报销类型:

  1. 日常报销:员工日常的餐饮、团建、交通以及其他发票的报销,对应员工的日常报销申请流程;
  2. 差旅报销:员工非Base城市的差旅费用报销,企业内部包含出差申请、差旅补贴申请以及差旅费用报销申请等三个流程可一键提交报销,默认同时提交三个审批,差旅补贴申请是否提交可自选。

三、系统结构与功能介绍

3.1 报销流程构建

基于企业微信编辑日常报销、出差申请、差旅补贴、差旅报销申请单以及审批流程(此处可以结合企业内部的需求适当更改),确认申请单表单内容以及审批流程节点,如下图所示:

流程模版一:日常报销

流程模版二:出差申请报销

流程模版三:出差补贴申请

流程模版四:差旅报销申请

3.2 发票上传

通过企业微信工作台进入AI发票报销应用,首先选择报销类型,其中包含日常报销和客成差旅报销两类,业务场景如图所示,日常报销对应单一申请单,客成差旅报销对应三个申请单。

上传发票文件时需填写报销理由及事项说明。

3.3 AI 智能识别

AI 智能识别基于MaxKB企业级开源智能体平台构建,其中 Agent 核心工作流如下所示:

Agent 主要流程如下所示:

  1. Agent 基本信息设置:
    1. 开启文件上传:支持上传发票文件文档和图片;
    2. 接口传参数:
      1. corpid:企业ID;
      2. corpsecret:应用secret;
      3. media_ids:图片ID数组;
    3. 设置会话变量:;
      1. media_ids:图片ID数组;
  2. **获取企业微信应用token信息:**首先判断是否上传了规定文件(图片、PDF等),未通过指定回复:"请上传PNG、JPG、JPEG、PDF等格式的发票文件"。有正确上传文件则获取"access_token":访问企业微信API接口,使用公司ID、自建应用Secret获取access_token
  3. **JSON文件数组合并及格式化:**将上传内容输出为一个标准JSON数组。上传到智能体的发票文件实际上被上传到了 MaxKB 的 OSS 中,使用时以 JSON 数据以数组格式传递,此处将 PDF 和图片的 JSON 数组合并为一个数组。同时使用数据格式化处理工具,去掉数组中的无关内容,且将部分参数加上双引号使其符合规范;
  4. **循环逐个提取单张发票的JSON数据:**通过"循环节点",逐个提取单张发票的JSON数据。
  5. **发票上传企业微信并获取文件media_id:**从JSON数据中取出MaxKB的OSS链接,加上access_token,临时下载文件后通过企业微信接口上传到企业微信临时素材,得到发票文件的media_id;
  6. **上传失败异常处理:**由于上传到企业微信有概率出现问题导致传递失败未能获得media_id,此处添加了是否为空判定,若为空则再次上传一遍,确保发票文件有对应的media_id;
  7. **拼接更新media_ids会话变量:**得到media_id后,与当前的全局变量media_ids合并为一个数组,数组元素中间用逗号隔开,并通过"变量赋值"工具,将合并后的数组赋值给全局变量media_ids;
  8. **实现方式路径判断:**将上传的文件,分为三种情况处理:只有图片、只有PDF文件、图片和PDF文件均有,根据判断选择不同的文件处理过程。
  9. **图片发票处理过程:**视觉模型提取图片文字内容后按照要求的格式输出,语言模型将其转化为合适的MarkDown格式。
  10. **PDF发票处理过程:**内容提取工具提取PDF文字内容后,语言模型将其按照要求的格式输出,之后语言模型将其转化为合适的MarkDown格式。
  11. **输出内容:**输出全部固定格式的发票信息和发票文件对应的media_ids,用于后续提交审批时使用。

3.4 日常报销确认并提交

上传的发票文件经 Agent 处理后,发票信息回传给报销应用并展示给用户,用户需确认报销信息填写是否完整,同时可以核对各个识别后的发票信息是否有误,确认无误后可以提交审批。如果出现错误,系统会提示错误,需要人工删除重新提交,其中错误包含以下几种场景:

  1. 发票抬头中的企业名称以及税号与本企业不一致;
  2. 个人抬头的发票个人不属于本企业;
  3. 发票报销时已经超过报销1年的期限;
  4. 不符合企业报销规则的发票,如普通员工智能报销二等座发票、飞机仅能做经济舱、酒店必须在华住旗下的经济型酒店。

发票有误,禁止提交审批

以上信息确认无误后提交,则应用调用企业微信报销流程API接口创建报销流程。

3.5 差旅报销确认并提交

上传的发票文件经 Agent 处理后,发票信息回传给报销应用并展示给用户,用户需确认报销信息填写是否完整(如客成差旅报销中的出差日期等),同时可以核对各个识别后的发票信息是否有误,确认无误后可以提交审批。如果出现错误,系统会提示错误,需要人工删除重新提交,其中错误包含以下几种场景:

  1. 发票抬头中的企业名称以及税号与本企业不一致;
  2. 个人抬头的发票个人不属于本企业;
  3. 发票报销时已经超过报销1年的期限;
  4. 不符合企业报销规则的发票,如普通员工智能报销二等座发票、飞机仅能做经济舱、酒店必须在华住旗下的经济型酒店。

发票有误,禁止提交审批

提交审批后,默认自动提交出差申请、出差补贴申请、差旅报销申请(其中出差补贴申请可自选是否提交):

3.6删除发票、继续上传发票

发票有误或不符合规范不能提交审批,用户可以删除这些发票,并将可提交上传的发票提交审批:

用户可点击发票信息下的"继续上传发票"按钮,在填写信息页面继续上传发票,后续提交审批:

3.7 报销流程审批

用户提交审批后,即可在企业微信中看到提交的申请单详情并后续跟踪审批状态完成最终报销。

四、总结

基于MaxKB和企业微信的AI报销应用解决了当前每次诸多发票整理过程的繁琐,同时通过合并出差申请单、出差补贴申请单以及差旅报销单改进优化了多个申请单提交的流程,大大提升了报销的效率,但是还存在一些需要改进的方面,简单罗列如下:

1、重复上传的发票需要进一步增加判断逻辑,确认无效发票;

2、根据批量提交的发票AI自动进行事项总结以及出差理由填写后续可以考虑进一步优化完善,解决用户多张发票分类上传;

3、出差日期等信息可以通过报销理由中尝试拆解填写;

4、如果企业内部需要使用,可以与企业内部项目管理平台、财务管理平台做对接,确保报销与销售合同关联。

其它不足之处欢迎大家评论区留言。

相关推荐
AI绘画哇哒哒9 小时前
【干货收藏】深度解析AI Agent框架:设计原理+主流选型+项目实操,一站式学习指南
人工智能·学习·ai·程序员·大模型·产品经理·转行
程序设计实验室9 小时前
AMD显卡也能畅玩AI画图!ROCm+ComfyUI部署全指南
ai·ai画图
bruce_哈哈哈12 小时前
Claude Code--Feishu-Skill-demo
ai
User_芊芊君子13 小时前
HCCL高性能通信库编程指南:构建多卡并行训练系统
人工智能·游戏·ai·agent·测评
慢半拍iii13 小时前
对比源码解读:ops-nn中卷积算子的硬件加速实现原理
人工智能·深度学习·ai·cann
慢半拍iii13 小时前
CANN算子开发实战:手把手教你基于ops-nn仓库编写Broadcast广播算子
人工智能·计算机网络·ai
User_芊芊君子13 小时前
CANN数学计算基石ops-math深度解析:高性能科学计算与AI模型加速的核心引擎
人工智能·深度学习·神经网络·ai
程序员泠零澪回家种桔子14 小时前
Spring AI框架全方位详解
java·人工智能·后端·spring·ai·架构
深鱼~14 小时前
数学计算加速利器:ops-math在昇腾平台的应用详解
ai·开源·cann
kjkdd14 小时前
6.1 核心组件(Agent)
python·ai·语言模型·langchain·ai编程