影刀RPA财务人员专属教程:发票识别到账对账到报表生成的自动化实战——财务人的RPA入门到实战
财务工作里重复劳动太多了。发票录入、银行流水对账、报表汇总——这些事情不用RPA也能做,但用RPA之后你每个月能省10-15个小时。这篇文章就是写给财务人员的,从发票OCR识别讲起,一直讲到自动生成财务报表,全部基于真实业务场景,跟着做一遍就能上手。
安装和认识影刀(财务视角)
财务人员的电脑上通常装了Office、财务软件(用友/金蝶)、报税系统。影刀RPA能在这些软件之间自动切换、自动操作,不需要这些软件提供API接口。
安装步骤跟普通用户一样:去官网下Windows版,安装包双击运行,手机号注册登录。但财务人员要注意一点:如果公司电脑有管理员权限限制(很多公司的财务电脑都有),需要找IT部门帮忙安装,或者申请临时管理员权限。我第一次帮财务部门的同事配影刀,就被权限卡住了,最后是用IT部门的通用管理员账号才装上的。

进来之后先认识三个区域:左侧是指令面板(所有能用的指令都在这里),中间是流程编排区(拖指令进来排列),右侧是元素库和变量区。财务人员最常用的指令都在"软件自动化"和"数据处理"两个分类里。
元素定位:财务软件的特殊性
财务软件(用友/金蝶/报税系统)大多是桌面端软件,不是网页,所以元素定位的方式跟网页自动化略有不同。
捕获元素: 点指令面板里的"捕获元素",鼠标移到财务软件的按钮上,会出现蓝色高亮框,点一下就把这个元素捕获到了。桌面端软件的元素捕获比网页稳定,因为桌面端元素的属性通常不会变。
XPath在桌面端的应用: 桌面端软件也可以用XPath,但语法跟网页略有不同。最常用的是按"自动化ID"定位://control[@AutomationId='btn-Save']。如果元素没有唯一的ID,可以用父元素定位://window[@name='用友U8']//button[text()='保存']。
CSS选择器不支持桌面端, 所以桌面端自动化只用XPath就够了。
常见坑: 财务软件经常有弹窗(“是否保存”“是否审核”),弹窗出现时机不确定,需要用"等待元素出现"指令,等弹窗上的"是"按钮出现了再点击。我第一次做用友自动录凭证的流程,就是没加等待,有时候能跑通有时候报错,排查了好久才发现问题。

变量与数据类型:财务数据的处理
财务数据通常有两种来源:一是从Excel里读出来的(银行流水、发票清单),二是从财务软件里抓出来的(凭证信息、报表数据)。
数字类型: 金额数据要用数字类型存储,不要用字符串。用字符串存金额的话,后面做加减汇总会出错。影刀里用"转为数字"指令可以把字符串格式的金额转成数字。注意逗号分隔符(1,000.00)要先把逗号去掉再转。
拼多多店群自动化报活动上架!
列表: 用来存一批凭证号、一批发票号。比如用"循环Excel内容"读出银行流水里的所有交易流水号,追加到列表里,后面用来跟财务软件里的凭证号做核对。
字典: 用来存"发票号→金额"的映射关系。从Excel里读出发票清单,用发票号做键、金额做值,存成字典。后面跟财务软件里的数据核对时,用发票号去字典里查金额,比用两个列表逐个比对效率高很多。
JSON: 如果公司的财务系统提供了API接口(现在很多SaaS财务软件都有),用"发送HTTP请求"调用API,返回的是JSON格式,用"JSON转对象"转成字典再处理。

流程控制:对账逻辑的循环和判断
财务自动化里最常见的流程控制就是"对账":把银行流水跟财务软件里的凭证逐条核对,找出不匹配的。
ForEach列表循环: 最适用于对账场景。先把银行流水里的所有交易流水号存到列表A,把财务软件里的所有凭证号存到列表B,然后用ForEach循环列表A,每次循环判断当前流水号是否在列表B里。不在的话就是"银行有记录但财务软件里没有",需要标记出来。
If条件判断: 用来判断金额是否匹配。流水里的金额和凭证里的金额可能差几分钱(四舍五入的原因),所以判断条件应该写成"绝对值(流水金额-凭证金额) < 0.05",而不是直接判断相等。
Try-Catch: 财务软件操作经常遇到意外弹窗(“月末结账中,请联系管理员”),用Try-Catch包住操作财务软件的指令,报错就跳过当前凭证继续处理下一条,不要因为一条凭证的问题导致整个对账流程停掉。
While循环: 适用于"逐条审核凭证"的场景。只要还有未审核的凭证(可以用元素是否存在来判断),就继续循环。我现在的做法是:在财务软件里捕获"下一条"按钮,只要这个按钮存在就继续循环,不存在就说明所有凭证都审核完了。
网页自动化:报税系统和发票查验

现在大多数报税系统(增值税防伪税控、电子发票服务平台)都是网页版,所以网页自动化的技术同样适用于财务场景。
等待策略: 报税系统加载比较慢,尤其是查询历史发票的时候。用"智能等待"模式,或者手动加"等待元素出现"指令,等查询结果列表出现了再开始抓数据。
弹窗处理: 报税系统经常弹"会话超时,请重新登录",需要在流程里加"处理浏览器弹窗"指令,检测到这个弹窗就自动重新登录。重新登录的逻辑要包在Try-Catch里,防止密码错误导致无限循环。
翻页: 发票查询结果通常有多页,用"无限循环+disabled判断"的方式翻页(参考前面电商章节里的做法)。
数据处理:Excel和OCR
Excel读写: 财务人员最熟悉的工具就是Excel,所以RPA流程通常以Excel为起点和终点。从银行流水Excel里读数据→在财务软件里操作→把结果写回Excel。注意两个坑:一是"Can not convert Array to String"(把整行当字符串用),二是日期格式偏移8小时(用"时间加减"加回8小时)。

OCR文字识别: 发票通常是图片或PDF格式,需要先用OCR识别文字,再提取发票号、金额、日期等信息。影刀自带OCR能力,用"OCR识别"指令,截图(可以是指定区域)之后调用OCR接口识别文字。识别结果是列表格式,每个识别到的文字块是一个列表项。
提取发票信息的技巧:发票上的信息是固定位置布局的,可以用"按坐标区域截图"分别截取"发票号区域"“金额区域”“日期区域”,然后分别OCR识别,这样比识别整张发票再解析文字更准确。我第一次做发票识别的时候就是识别整张发票,然后把所有文字混在一起,提取特定字段很麻烦,后来改成按区域截图识别,准确率提升了很多。
鼠标键盘和图像自动化
财务软件里有些按钮无法用元素定位点击(比如某些老版本的用友U8),这时候用坐标点击。
模拟模式vs驱动模式: 财务软件通常在受控的办公电脑上运行,模拟模式一般够用。但如果公司的IT策略比较严格,可能检测到了模拟操作并拦截,这时候切换成驱动模式(需要安装虚拟键盘驱动)。
图像识别: 财务软件里的某些图标按钮(比如"审核通过"的勾选图标)没有文字,无法用XPath按文字定位,用图像识别点击。用wait_appear等待图标出现→用click点击图标中心位置。
进阶技能:HTTP请求和Python协同

HTTP请求/API对接: 现在很多企业的财务系统都提供了API(比如用友的开放平台、金蝶云星空API),用"发送HTTP请求"指令调用API,可以直接读取凭证数据、写入凭证,不需要模拟界面操作,稳定性高很多。
调用财务系统API的注意点:1. 通常需要先获取accessToken(用"发送HTTP请求"调用鉴权接口),之后的每个请求都要在Header里带上这个token;2. 财务系统对数据格式要求严格,日期格式要用YYYY-MM-DD,金额格式要用字符串形式(防止精度丢失);3. 每次调用之后加适当等待,防止触发频率限制。
Python协同: 财务数据处理有时候用影刀指令写很麻烦,比如要把银行流水按日期、金额、交易方三个维度做交叉核对,用Python的pandas库几行代码就搞定。用法是在影刀里用"执行Python代码"指令,可以写Python代码也可以调用已经写好的.py文件。
我平时用Python协同主要做三件事:一是复杂的数据清洗和核对(比影刀指令灵活),二是调用影刀没有的第三方财务库(比如某些银行的专用接口),三是生成Excel透视表报表(用pandas生成之后再写回Excel)。
OCR: 前面已经讲过了,这里补充一点:如果发票量很大(每天几百张),不要用影刀一条一条识别,先把发票图片打包上传到影刀的OCR批量识别接口,一次性识别完再处理结果。
平台实战:用友、金蝶、报税系统

TEMU店群矩阵自动化运营核价报活动
用友U8: 桌面端软件,用元素捕获+模拟操作的方式自动化。最常见的场景是:自动录凭证(从Excel读取凭证信息→打开用友→逐条录入→保存)。注意点:录凭证之前要先选择凭证类别(收/付/转),这个下拉框有时候捕获不到,需要用"点击坐标"或者"键盘输入"的方式操作。
金蝶云星空: 网页版,可以用网页自动化的方式操作。金蝶的网页结构比较规范,元素定位相对容易。最常见的场景是:自动审核凭证(登录金蝶→查询待审核凭证→逐条审核→保存)。
报税系统(增值税防伪税控): 网页版,但需要USB税务盘插入才能登录。RPA流程里无法自动插入USB盘,所以这个步骤需要人工配合:先人工插入税务盘并登录,然后RPA接管后续操作(查询发票、导出报表、上传报税文件)。
系统联动:邮件和定时任务
邮件发送: 每个月结账完成之后,自动把财务报表作为附件发送到指定邮箱。用"发送邮件"指令,附件支持Excel、PDF格式。如果公司的邮箱需要SMTP认证,在"邮件配置"里填好SMTP服务器地址、端口、账号密码。

定时任务: 财务流程通常按月运行(比如每月5号自动对账、每月10号自动报税)。配置路径:影刀控制台→定时任务→新建任务→选择应用→配置Cron表达式(0 10 5 * * 表示每月5号上午10点)。注意设置"运行超时时间",财务流程通常数据量比较大,建议设2-3小时。
飞书消息通知: 对账完成之后,自动发消息到财务团队的飞书群,告知"本月对账完成,共处理XXX条记录,发现XX条异常"。用"发送飞书消息"指令,消息内容可以用变量拼接。
工程化和规范
子流程封装: 财务流程里,“登录财务系统”“导出Excel报表”“发送邮件通知"这几个步骤在多个流程里都会用到,封装成子流程,主流程里直接调用。子流程可以带参数,比如"发送邮件通知”,把收件人、主题、附件路径作为参数传入。
调试技巧: 财务流程最常用的调试方法是打断点。在"写入凭证"指令前打断点,运行时可以看到要写入的凭证数据是否完整、格式是否正确。在"发送HTTP请求"指令前打断点,可以看到API返回的完整内容,方便确认接口是否调通。
命名规范: 财务流程的变量名要特别清晰,因为财务数据不能出错。比如voucher_count(凭证数)、total_amount(总金额)、unmatched_records(不匹配记录列表),不要叫a、b、temp。
版本选择: 财务流程通常要处理大量数据,社区版每天30分钟的限制肯定不够用,需要升级到企业版。另外财务数据涉及公司机密,建议用私有化部署版本,数据不出公司内网。

速查表:财务场景常见报错
| 场景 | 报错 | 原因 | 解决办法 |
|---|---|---|---|
| Excel读取 | Can not convert Array to String | 列表直接当字符串用 | 用"获取列表项"取具体值 |
| 发票OCR | 识别率很低 | 截图不清晰 / 发票倾斜 | 先裁剪截图区域,确保发票平整 |
| HTTP请求 | 返回401 Unauthorized | accessToken过期 | 重新获取accessToken |
| 财务软件操作 | 元素找不到 | 弹窗遮挡 / 等待时间不够 | 加"等待元素出现"指令 |
| 定时任务 | 任务没有按时运行 | Cron表达式写错 | 检查表达式,用在线Cron工具验证 |
更多财务自动化场景和案例可以去 home.linyan.cloud 查看,我平时整理了不少实战内容。
#影刀RPA #财务自动化 #发票识别 #银行对账 #用友 #金蝶 #RPA教程
作者:林焱。


991

被折叠的 条评论
为什么被折叠?



