影刀RPA新手教程:OCR文字识别完全指南——让影刀读懂图片里的文字
影刀RPA新手教程:OCR文字识别完全指南——让影刀读懂图片里的文字
小张是个行政文员,每天有个烦人的工作——从系统里截图,再把截图里的编号手动敲进Excel。
一张两张还好,一天几十张,眼睛都花了,还经常敲错数字。
她问我:“有没有办法让电脑自己读图片里的字?”
我说有,这叫OCR。
什么是OCR,一句话讲清楚
OCR就是"光学字符识别"的缩写,说人话就是:让电脑看图片,把图片里的文字"读"出来变成能复制的文字。
你手机拍照、然后提取照片里的文字,用的就是OCR。影刀RPA自带OCR功能,不需要装额外的东西。
我第一次用OCR是在一个注册账号的流程里。网站有验证码,每次都要人工看、人工填。后来发现影刀能自动识别验证码,效率一下子提了十倍。
安装与配置
打开影刀RPA客户端,OCR功能是内置的,不需要单独安装插件。
但有个小细节要注意:OCR需要调用影刀的AI引擎,需要联网才能用。如果你在离线环境跑流程,OCR指令会报错。
在指令面板左侧搜索"OCR",你会看到好几个指令:验证码识别、通用文字识别、表格OCR等等。今天我们从最简单的"通用文字识别"开始。
准备工作:截取一张图片
我们得先让影刀拿到一张图片。最简单的方法是截图。
影刀有个指令叫"元素截图",在"网页自动化"分组里。点开它,配置两个参数:
目标元素:你要截哪个区域。可以用录制工具在页面上点一下,影刀会自动生成XPath。比如//img[@class=‘captcha’],意思就是找页面上class是captcha的那张验证码图片。
保存路径:截图存到哪里。写成"C:\temp\captcha.png"。
我当初踩过一个坑:保存路径的文件夹必须提前存在。影刀不会自动帮你创建文件夹,直接报错。所以要么手动创建temp文件夹,要么在执行指令之前加一步"新建文件夹"。
执行OCR识别
拼多多店群自动化报活动上架!
截图拿到了,接下来用"通用文字识别"指令。
这个指令的配置很简单,就两个关键参数:
- 图片路径:你刚才截图保存的位置,比如"C:\temp\captcha.png"。
- 结果保存到:选一个变量名,比如ocr_result。识别出来的文字会存到这个变量里。
点运行,如果你的验证码是清晰的标准字体的数字或字母,识别率能到95%以上。
我在项目中遇到过一个案例:验证码有干扰线,纯数字的验证码,用"通用文字识别"准确率只有60%左右。后来换成影刀专门的"验证码识别"指令,选了"纯数字1"类型,准确率直接飙到99%。
所以提醒一句:如果是验证码场景,别用通用文字识别,用专门的验证码识别指令。
变量与数据类型
OCR识别结果存在变量里。在影刀里,变量的概念很简单——就是一个装数据的容器。
刚才的ocr_result变量,它的数据类型是"字符串"。字符串就是一段文字,比如"AB3X"。
你可以用"日志输出"指令把变量的值打印出来,看看OCR到底读到了什么。在流程画布上加一个日志输出,输出内容填ocr_result,运行后就能在日志面板看到识别结果。
我调试OCR的时候,都会先打印日志,确认识别正确了,再继续往下写其他步骤。这个习惯帮我省了无数时间。
流程控制:判断OCR是否成功
OC识别不一定100%成功。有时候图片太模糊,识别结果可能是空字符串。
这时候需要用"If判断"指令来处理。逻辑很简单:
如果 ocr_result 不等于 空 就 把识别结果填入输入框 否则 就 刷新验证码,重新截图识别在影刀里,If判断是一个指令节点,有两个分支:条件满足走左边,条件不满足走右边。
条件表达式写成:ocr_result != “”。这里的!=是"不等于"的意思,""是两个英文双引号中间没东西,表示空字符串。
这就是流程控制的核心思想——让流程自己判断情况,而不是傻傻地一条道走到黑。
网页自动化:填入识别结果
OCR读出来了,下一步是把文字填到网页输入框里。
在"网页自动化"分组里找到"输入文本"指令。配置两个参数:
目标元素:用录制工具点击网页上的验证码输入框,影刀会自动生成类似//input[@name=‘captcha’]这样的XPath。
输入内容:填变量名ocr_result。
CSS选择器也能定位元素,比如input[name=“captcha”]。XPath和CSS两种方式都能用,看个人习惯。我一般先用录制工具生成XPath,如果XPath不稳定(比如id会变),再手写CSS选择器。
数据处理:清洗OCR结果
OCR识别出来的文字可能有干扰字符。比如验证码是"XY68",OCR可能识别成"X Y68"或"XY6B"。
这时候需要对结果做清洗。影刀有"替换文本"指令,可以用来去掉多余空格:
- 原始文本:ocr_result
- 查找内容:" "(一个空格)
- 替换为:“”(空,等于删除)
- 结果保存到:ocr_result_clean
如果需要更复杂的清洗,比如只保留数字,可以用Python指令写正则:
importre ocr_result=GetVar("ocr_result")clean=re.sub(r'[^0-9a-zA-Z]','',ocr_result)SetVar("ocr_result_clean",clean)这段代码的意思是:只保留数字和英文字母,其他字符全部删掉。
鼠标键盘与图像操作
有时候验证码图片不是一个直接的img标签,而是canvas画布动态生成的。这时候普通的"元素截图"截不到内容。
解决方案是用鼠标键盘操作:先点击验证码区域让它获得焦点,然后按Ctrl+A全选(如果支持复制的话),最后用剪贴板内容代替OCR。
也可以用影刀的"屏幕截图"指令,指定一个坐标区域直接截图,不依赖网页元素。这是图像识别的思路。
进阶技能:循环重试机制
OCR不是100%准确,所以需要加循环重试。
影刀的"For次数循环"可以设定重试次数。比如重试3次:
TEMU店群矩阵自动化运营核价报活动
- 循环3次
- 截图
- OCR识别
- 如果结果不为空且满足条件,跳出循环
- 否则,刷新验证码,继续循环
循环里用"跳出循环"指令,当识别成功时直接退出,不要无意义地继续跑。
平台实战:一个完整的验证码识别流程
我来串一遍完整的流程,你照着做就能看到效果:
- 打开网页(打开想要自动登录的网站)
- 截图验证码(元素截图,保存到本地)
- OCR识别(用验证码识别指令,选"纯数字1")
- 日志输出(打印识别结果,确认正确)
- If判断(结果不为空?是->第6步,否->回第2步刷新)
- 输入验证码(把识别结果填到输入框)
- 点击提交
一共7个节点,半小时就能跑通。当时我做完这个流程后,那种"让电脑替我看了"的成就感,到现在还记得。
整个流程如果要拆分,可以把"截图OCR"部分封装成子流程。主流程里调用子流程,传入验证码元素的XPath,返回识别结果。这就是子流程的思想。
系统联动
OCR识别结果不仅可以填到网页上,还能写进Excel、发飞书通知、存到数据库。
比如你做了一个批量注册的流程,可以把每次注册用到的验证码和识别结果记录到Excel里,方便后面分析哪些网站的验证码容易识别,哪些需要调整策略。
也可以接入飞书机器人:当OCR连续失败3次时,发送一条飞书消息通知人工介入。这个功能在home.linyan.cloud上有详细的配置模板,可以参考。
工程化规范
写好的流程要规范化命名。变量名要见名知义,不要用a、b、c这种。ocr_result、captcha_path这种就很清晰。
指令节点也要加上注释。右键节点,选"添加注释",写上这个步骤在做什么。团队协作时别人一看就懂。
常见报错与解决方案
OCR识别结果为空的解决:
- 检查图片路径是否正确,文件是否存在
- 确认网络连接正常,OCR需要联网
- 试试调整截图区域,确保文字清晰可见
XPath定位不到验证码元素:
- 检查页面是否iframe嵌套,需要先切换到iframe
- 用CSS选择器代替XPath试试
- 增加"等待元素出现"指令,等页面加载完再截图
#影刀RPA #RPA教程 #影刀新手教程 #OCR文字识别 #自动化办公 #Python自动化 #网页自动化
作者:林焱
