影刀RPA图像识别实战教程:验证码+滑块+图文识别全攻略——从原理到落地
影刀RPA图像识别实战教程验证码滑块图文识别全攻略——从原理到落地做RPA流程的时候总会遇到一些无法用元素定位点击的场景验证码、滑块、动态图标按钮——这些时候就需要用图像识别了。我第一次用图像识别的时候识别率只有30%排查了一下午才发现是浏览器缩放没设成100%。这篇文章把图像识别的所有用法全部讲清楚。一、认识图像识别图像识别的原理很简单先截一张目标图片保存为图像元素运行时影刀会在屏幕上找跟这张图匹配的区域找到了就对它进行操作点击、悬停、双击等。但有几个前提条件必须满足不然识别率会很低第一浏览器缩放必须是100%第二截图的时候要截刚好包含目标的区域不要截太大第三目标区域的样式不能经常变比如按钮颜色会随机变的就不适合用图像识别。我第一次用图像识别就是没检查浏览器缩放设成了125%截图看着没问题但运行时一直识别不到排查了一下午。二、图像识别的API四合一影刀里图像识别相关的指令有5个全部要掌握wait_appear等待目标图片出现。比如验证码弹出来了你要等验证码图片出现了再识别不能一打开页面就截。用法wait_appear(验证码图片, timeout10)最多等10秒。click点击图片中心位置。识别到图片之后默认是点击图片的中心位置。大部分情况这够用了但有些按钮的点击区域不在中心比如关闭按钮在弹窗的右上角这时候用锚点9位置偏移。hover悬停在图片上。有些场景需要先把鼠标悬停在某个图标上才会弹出下拉菜单这时候用hover而不是click。dblclick双击图片。比较少用但有些场景需要双击才能触发比如某些老版本ERP的编辑按钮。锚点9位置偏移这是解决实际点击位置不对的关键功能。先找一个锚点元素用普通元素捕获的方式捕获然后计算目标位置相对于锚点的坐标偏移量用坐标点击。用法示例关闭按钮在弹窗的右上角先捕获弹窗容器作为锚点然后算好关闭按钮相对于锚点右上角的偏移量比如x偏移200像素y偏移-50像素用偏移点击指令。店群矩阵自动化突破运营极限窗口限定查找图像识别可以指定只在某个窗口里找避免找到其他窗口里的相似图片。比如你打开了两个浏览器窗口每个窗口都有相似的搜索按钮用窗口限定查找就能准确定位到当前操作的窗口里的那个。三、变量与数据类型图像识别视角图像识别的结果通常需要存起来用。识别结果是列表格式每个识别到的区域是一个列表项包含(x, y, width, height)四个值左上角坐标、宽度、高度。如果你要操作多个识别到的区域用循环列表逐个处理。我第一次用图像识别的时候不知道结果是列表直接把识别结果当成一个坐标来用一直报错后来才发现要用获取列表项取出具体的某一个识别结果。四、流程控制图像识别视角图像识别通常用在有可能出现、但不一定出现的场景所以一定要配合Try-Catch和If判断。标准写法先用wait_appear等待图片出现设一个合理的超时时间比如5秒如果等到了返回True再执行click操作如果没等到返回False或者超时就跳过不要报错停掉流程。我现在的做法是凡是涉及图像识别的指令全部包一层Try-Catch报错就跳过继续不中断整个流程。五、网页自动化图像识别视角网页自动化里图像识别通常用来处理元素捕获不到的场景。验证码先等验证码图片出现wait_appear然后用OCR识别图片里的文字再把识别结果填到验证码输入框。但验证码识别率不是100%需要在流程里加验证码识别失败的异常处理比如重试3次还失败就发通知让人工处理。滑块滑块验证通常需要按住滑块→拖拽到指定位置。用图像识别找到滑块和缺口的位置然后用鼠标拖拽指令从滑块位置拖到缺口位置。但滑块验证的识别和操作比较难成功率不高建议遇到滑块的时候让人工处理。动态图标按钮有些网页的按钮是图标比如收藏“分享”没有文字无法用XPath按文字定位用图像识别点击。六、数据处理图像识别视角图像识别本身不涉及数据处理但识别结果通常需要跟其他数据结合使用。比如你用图像识别找到了页面上所有已售罄的图标位置然后需要知道每个已售罄图标旁边是哪个商品名称这时候就要用获取元素文本指令传入图标的坐标偏移量去读旁边元素的文字。七、鼠标键盘图像识别是最常用的配合图像识别找到目标位置之后通常用鼠标操作来执行点击。模拟模式vs驱动模式图像识别点击通常用模拟模式就够了。但如果网站检测到了模拟操作并拦截切换成驱动模式。坐标点击如果没有用锚点9位置偏移图像识别默认是点击图片中心位置。如果点击位置不对改用偏移点击。八、进阶技能图像识别视角OCR文字识别图像识别只能找到图片位置不能识别图片里的文字。如果需要识别图片里的文字比如验证码、商品图片上的价格用OCR指令不是用图像识别。我第一次做验证码自动处理的时候搞不清楚图像识别和OCR的区别一直用图像识别试图读出验证码里的文字后来才知道要用OCR。Python协同如果你需要用图像识别做比较复杂的事情比如识别多个区域、计算偏移量、判断位置关系用Python的OpenCV库来处理图片比用影刀指令灵活很多。九、平台实战图像识别视角淘宝/拼多多登录的时候经常需要滑块验证用图像识别找到滑块和缺口位置然后用鼠标拖拽指令来完成验证。但成功率不高建议遇到滑块的时候让人工处理。temu店群自动化报活动案例小红书有些按钮是图标比如点赞“收藏”“分享”没有文字无法用XPath按文字定位用图像识别点击。独立站Shopify/WordPress主题不同按钮样式也不同用元素定位可能因为主题切换而失效用图像识别反而更稳定因为图标样子不变。十、系统联动图像识别视角图像识别通常不需要特别的系统联动但识别失败的时候需要发通知让人工处理。用发送飞书消息指令在图像识别连续失败N次之后发消息到飞书群告知某某流程的图像识别失败需要人工处理。十一、工程化和规范图像识别视角子流程封装如果流程里多处都要用图像识别比如每页都要处理已售罄图标封装成一个子流程传入要找的图标图片路径和超时时间两个参数返回是否找到True/False“和找到的坐标”。调试技巧图像识别最常用的调试方法是先截图看看找的对不对。在wait_appear之前用截图指令把当前屏幕截下来保存到本地然后看看图片里的目标区域是否清晰、是否跟之前保存的图像元素一致。我每次图像识别出问题第一步就是去截图文件夹里看截图90%的情况一眼就能看出问题缩放不是100%、目标区域截太大了、目标样式变了等等。命名规范图像元素的命名要清晰比如img_captcha验证码图片、img_close_btn关闭按钮图标、img_sold_out已售罄图标。十二、速查表/常见报错现象原因解决办法图像识别一直找不到浏览器缩放不是100%把缩放设成100%找到了但点击位置不对默认点的是图片中心用锚点9位置偏移识别率很低低于50%截图截太大了重新截只截目标区域| 有时候能找到有时候不能 | 目标样式会变 | 换一种定位方式用XPath或CSS || OCR识别率很低 | 图片不清晰 / 倾斜 | 先裁剪截图区域确保平整 || 滑块验证一直失败 | 滑块验证太难自动处理 | 让人工处理流程里加人工介入逻辑 |更多图像识别的实战案例可以去 home.linyan.cloud 查看我平时整理了不少。#影刀RPA #图像识别 #验证码 #OCR #RPA教程#作者林焱。