影刀RPA新手教程:OCR识别发票完全指南——自动读取发票信息并填表
做财务的李姐每天要处理几十张发票。收到的发票截图、扫描件,得一个一个手动录入到系统里:发票号、开票日期、金额、税额。
她说:“字倒是看得见,但一个一个敲太慢了,还总是看串行。”
我告诉她:影刀的OCR功能不只是看验证码,看发票更是一把好手。
准备工作:拿到一张发票图片
首先你需要一张发票的图片文件。可以是截图、pdf导出、手机拍照,格式jpg或png都行。
把图片放到电脑上一个固定的位置,比如:C:\fapiao\fapiao_001.png。
如果你是批量处理,建议把所有发票放在同一个文件夹下,命名有规律一点,方便后面写循环读取。
安装与配置:通用文字识别指令
影刀的OCR功能不需要额外安装任何东西。在指令面板左侧搜索"通用文字识别",拖到画布上就能用。
但你需要注意一点:OCR调用的是影刀AI引擎,需要联网。免费版每个月有赠送额度,一般够日常使用。如果额度用完会提示"超出使用次数",需要到个人中心充值。
我第一次用的时候没注意额度,流程跑到一半突然报错,排查了半天才发现是额度没了。
变量是什么:先把发票数据存起来
在开始识别之前,先创建几个变量来存结果。
变量就像一个带标签的盒子。你创建一个叫fapiao_no的变量,意思是"发票号",然后把OCR读出来的发票号放进去。以后想用这个发票号的时候,直接用fapiao_no就行了。
创建变量的方法:在影刀左侧的"变量管理"面板点"添加变量",填变量名和初始值。初始值可以写""(空字符串),等OCR识别后再赋值。
需要创建的变量:
- fapiao_no:发票号码
- fapiao_date:开票日期
- fapiao_amount:金额
- fapiao_tax:税额
网页自动化与元素定位:打开发票识别的入口
虽然OCR本身不需要网页,但我们最终是要把发票信息填到系统的网页表单里。
店群矩阵自动化突破运营极限!
先用"打开网页"指令,打开你的发票录入系统的网址。
然后用"等待元素出现"指令,等表单加载完成。CSS选择器可以写成:input[name=“invoice_no”]。注意,这里的name是网页里input标签的name属性,不是发票号本身。
我踩过一个坑:表单加载完了,但输入框被一个加载动画遮住了。影刀尝试输入文字时报"元素不可交互"。解决方法是加一步等待,等加载动画消失后再操作。
OCR识别发票:核心步骤
现在我们用"通用文字识别"指令来读发票。
配置参数很简单:
- 图片路径:C:\fapiao\fapiao_001.png
- 结果保存至:all_text
运行后,all_text变量里的内容大概是这样的:
增值税电子普通发票 发票号码:12345678 开票日期:2025年06月15日 金额:¥1,280.00 税额:¥38.40 税价合计:¥1,318.40一堆文字混在一起。我们得从中提取出需要的信息。
正则表达式:从一堆文字中提取关键信息
正则表达式听起来吓人,其实就是一套"从文字里找东西"的规则。
比如你要找发票号,发票号码都是数字,一般是8位。正则写成:\d{8}。\d表示数字,{8}表示正好8个。
在影刀里用"正则匹配"指令:
- 源文本:all_text
- 匹配模式:\d{8}
- 结果保存到:fapiao_no
提取日期要稍微复杂一点:\d{4}年\d{2}月\d{2}日。意思是4个数字+年+2个数字+月+2个数字+日。
提取金额用:¥[\d,]+.\d{2}。解释一下:
- ¥ 匹配人民币符号
- [\d,]+ 匹配数字和逗号一次或多次(比如1,280)
- .\d{2} 匹配小数点后两位
数据处理:清洗提取出来的内容
提取出来的日期是"2025年06月15日",但系统表单要求格式是"2025-06-15"。
用"替换文本"指令分两步处理:
第一步:把"年"替换成"-“,把"月"替换成”-"
第二步:把"日"替换成空
金额也有同样的问题:¥1,280.00要去掉¥和逗号,只保留1280.00。
用Python指令处理更灵活:
amount=GetVar("fapiao_amount_raw")amount=amount.replace("¥","").replace(",","")SetVar("fapiao_amount",amount)流程控制:如果OCR没读到怎么办
OCR不一定一次就读对。发票照片光线不好、发票折痕太多,都可能导致识别不全。
用If判断来检查:
- 如果 fapiao_no 是空字符串,弹出提示"发票号码识别失败,请手动输入"
- 否则,继续后续步骤
还可以加一个For次数循环做重试。重试3次,每次用不同的OCR识别类型(影刀支持"通用文字识别"和"通用文字识别(高精度版)",前者免费,后者更准但要消耗额度)。
写入Excel:把识别结果保存到表格
很多财务流程是:把发票信息录入Excel,再批量导入系统。
影刀的Excel操作指令很全。先用"打开Excel"打开一个文件,再用"写入单元格"把数据写到指定位置。
假设Excel表头是:发票号、日期、金额、税额、税价合计。数据从第2行开始写:
- 写入A2:fapiao_no
- 写入B2:fapiao_date
- 写入C2:fapiao_amount
- 写入D2:fapiao_tax
如果是批量处理多张发票,用一个循环:
For 每一张发票图片 in 发票文件夹 OCR识别 数据清洗 写入Excel下一行鼠标键盘操作:当网页表单需要鼠标聚焦
有些网页表单,必须先用鼠标点一下输入框,才能输入文字。这时候用"点击元素"指令:
- 目标元素:用XPath定位,//input[@name=‘invoice_no’]
- 点击方式:单击
temu店群自动化报活动案例
点完之后再加一个"输入文本"指令。顺序不能反。
进阶技能:把OCR识别封装成子流程
如果你有多个流程都需要OCR识别发票,可以把这个功能做成子流程。
主流程调用子流程时,传入发票图片路径,子流程返回一个字典,包含发票号、日期、金额、税额。
子流程里的代码和主流程一样写,没有任何区别。唯一的区别是子流程可以设置输入参数和输出参数。
平台实战:完整流程串一遍
完整流程分8步:
- 打开系统网页
- 等待表单加载完成
- 在发票文件夹里找到所有发票图片
- 循环每张图片
- OCR识别发票内容
- 正则提取发票号、日期、金额、税额
- 数据清洗(格式化日期和金额)
- 逐项填写到网页表单并提交
这样一个流程跑下来,李姐原来需要1小时的工作,现在3分钟就搞定了。
系统联动:识别后的通知
发票录入完成后,可以用飞书机器人发一条通知。在"系统联动"指令组里找"飞书机器人-发送消息",配置好Webhook地址。
消息内容可以这样写:
“今日已处理N张发票,发票号范围:XXX~XXX,总金额:XXXX元”
Webhook地址需要在飞书群里添加机器人后获取。如果不会配置,可以在home.linyan.cloud上搜索飞书机器人教程。
工程化规范
多张发票处理时,给每张发票的识别结果加个成功/失败标记。在Excel里加一列"识别状态",成功的写"成功",失败的写"失败——需人工核对"。
变量命名要有规律,fapiao_前缀统一:fapiao_no、fapiao_date、fapiao_amount。
常见报错与解决
“超出OCR使用次数”:到个人中心查看额度,充值或切换识别类型。
“正则匹配为空”:检查发票截图是否清晰,尝试换一种识别类型。数字识别失败时,手动打印all_text日志,看看OCR到底返回了什么。
“XPath定位不到输入框”:用浏览器F12检查网页结构,确认input标签的属性值是否正确。有些动态生成的表单,id和name会变化,需要用其他属性定位。
#影刀RPA #RPA教程 #影刀新手教程 #OCR发票识别 #发票自动化 #财务自动化 #正则表达式
作者:林焱