影刀RPA 差旅报销自动化多平台账单汇总与审批提交作者林焱什么情况用什么差旅报销是个典型的多源数据聚合场景。员工出差用的平台五花八门——滴滴打车的行程单在滴滴App里高铁票在12306酒店发票在携程或美团飞机票在航旅纵横。财务人员每个月要把这些散落在不同平台的电子发票一张张下载、核验、录入ERP费时费力还容易漏。这时候用影刀RPA做差旅报销自动化就很对路。核心思路是用影刀依次打开各个平台的账单页面 → 批量下载电子发票 → OCR识别关键字段 → 自动填写报销单 → 提交审批流。本文覆盖的场景包括个人差旅员工出差后自行提交报销机器人帮忙汇总票据集中报销财务人员统一处理全公司差旅费机器人批量录入对公结算差旅平台月结账单自动对账先说清楚影刀本身不替代报销系统的审批逻辑它做的是数据搬运工的活——把散落各处的票据数据搬到报销系统里。怎么做第一步搭建项目结构在影刀中新建流程按功能拆成三个子流程拼多多店群自动化报活动上架主流程差旅报销 ├── 子流程1多平台票据采集滴滴/12306/携程/航旅纵横 ├── 子流程2发票OCR识别与字段提取 └── 子流程3报销系统自动填报每个子流程独立运行出问题只影响对应环节方便排错。第二步多平台票据采集以滴滴出行为例演示怎么批量下载行程单。影刀操作步骤1. 【打开网页】打开滴滴企业版登录页 2. 【填写】输入账号密码点击登录 3. 【等待元素】等待行程管理菜单出现 4. 【点击】进入行程管理 → 电子发票 5. 【循环】遍历发票列表对每条记录 6. ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/df9d86fcbd3a4f389c74fa85b90c1be6.png#pic_center) - 【点击】下载PDF按钮 - 【等待】文件下载完成 - 【移动文件】将下载文件重命名为滴滴_日期_金额.pdf并移到指定文件夹踩过的坑滴滴的发票页面默认只显示当月数据。你要先【点击】日期筛选器选最近三个月否则只下载到当前月的内容。另一个坑是下载按钮有时候点了没反应——不是网卡了是页面还在加载发票预览。解决办法是【等待元素】等待预览区域出现后再点下载。12306的高铁票处理类似但有一个额外操作【点击】进入我的→车票→报销凭证 【循环】遍历车票列表 - 【点击】每条车票的查看详情 - 【截图】截取车票详情页包含车次、日期、金额、起止站 - 【关闭】返回列表页12306的报销凭证页面只能截图不能直接下载PDF所以需要配合后面OCR识别步骤。第三步发票OCR识别影刀的【智能识别】指令支持增值税发票识别但滴滴行程单和高铁票不属于标准发票格式。建议用Python节点调百度OCR的通用文字识别API。fromaipimportAipOcr APP_ID你的APP_IDAPI_KEY你的API_KEYSECRET_KEY你的SECRET_KEYclientAipOcr(APP_ID,API_KEY,SECRET_KEY)defget_text_from_image(image_path):withopen(image_path,rb)asf:imagef.read()resultclient.basicAccurate(image)# 高精度版words_listresult.get(words_result,[])return\n.join([w[words]forwinwords_list])识别出文字后用正则提取关键字段importredefextract_trip_info(text):info{}# 日期date_matchre.search(r(\d{4}[-/年]\d{1,2}[-/月]\d{1,2}[日号]?),text)info[日期]date_match.group(1)ifdate_matchelse# 金额amount_matchre.search(r[¥]\s*(\d\.?\d*),text)info[金额]amount_match.group(1)ifamount_matchelse# 城市citiesre.findall(r([\u4e00-\u9fa5]{2,3}(?:市|站)),text)info[出发]cities[0]iflen(cities)0elseinfo[到达]cities[-1]iflen(cities)1elsereturninfo踩过的坑百度OCR的高精度版对红色印章和浅色背景的混合图识别率下降明显。如果发票上有红章盖住金额金额直接识别成乱码。解决办法是先对图片做预处理——把红通道去掉再送OCRfromPILimportImageimportnumpyasnpdefremove_red_stamp(image_path):imgImage.open(image_path).convert(RGB)arrnp.array(img)# 红色通道大于一定阈值就替换为白色mask(arr[:,:,0]180)(arr[:,:,1]100)(arr[:,:,2]100)arr[mask][255,255,255]returnImage.fromarray(arr)第四步报销系统自动填报拿到所有票据的字段信息后开始填报销单。影刀操作步骤1. 【打开网页】打开公司OA报销系统 2. 【登录】输入工号和密码 3. 【点击】新建报销单→差旅报销 4. 对采集到的每条票据 - 【点击】添加行程 - 【填写】日期字段、出发城市、到达城市 - 【填写】金额字段 - 【点击】上传附件→【上传文件】选择对应的PDF/图片 - 【点击】保存 5. 全部填完后【点击】提交审批进阶写法如果你公司的报销系统支持导入功能用Excel模板导入比逐行填写快得多。根据票据信息生成Excel文件然后【上传文件】到报销系统触发导入一步搞定。第五步对接审批流程影刀没法直接操作审批系统里的同意/拒绝按钮——这涉及权限问题。但可以做审批状态跟踪【打开网页】进入OA系统我的申请页面 【循环】遍历待审批的报销单 - 【获取文本】读取审批状态 - 如果超过3天仍为待审批→【发送邮件】提醒审批人 - [video(video-81NnSNIe-1784060312877)(type-csdn)(url-https://live.csdn.net/v/embed/526817)(image-https://v-blog.csdnimg.cn/asset/1d3c3709da119dd8c13ab01e9b282520/cover/Cover0.jpg)(title-TEMU店群矩阵自动化运营核价报活动)] - 如果状态为已驳回→【获取文本】读驳回原因【发送邮件】通知申请人修改有什么坑坑1多平台登录态冲突同时登录滴滴和携程如果两个平台共用同一个浏览器Cookie域可能互相踢登录。最佳实践是用影刀的【多浏览器】功能给每个平台分配独立的浏览器实例。坑2发票去重同一个行程可能在滴滴和携程都产生了账单报销时容易重复。一定要在采集阶段做去重——以日期金额城市三个字段组合去重相似度超过90%就只保留一条。坑3金额差异OCR识别的金额和实际发票金额可能有偏差特别是带小数点的。填单前加入校验逻辑如果OCR识别的总金额和手动录入总计差异超过5%暂停流程弹出提示让人工确认。坑4审批流频繁变动公司OA系统的报销表单字段可能会被HR不定期调整。如果是固定字段日期、金额、事由用【填写】指定CSS选择器比用坐标点击靠谱。如果是动态字段建议用Excel模板导入而非逐字段填写——模板格式一般不会频繁改。坑5附件上传超时一份PDF发票可能有几MB用影刀【上传文件】指令上传大文件时可能超时。建议先压缩PDF用Python的PyPDF2把文件控制在500KB以内再上传。总结差旅报销自动化的关键不在技术在流程梳理——你得先把数据来源、字段映射、去重规则理清楚代码才写得顺。建议先用手动跑通一次完整报销流程记录每一步的URL、字段名、等待时间然后再翻译成影刀指令。