news 2026/6/11 3:06:04

影刀RPA进阶教程_截图与OCR文字识别在自动化中的实战应用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
影刀RPA进阶教程_截图与OCR文字识别在自动化中的实战应用

影刀RPA进阶教程:截图与OCR文字识别在自动化中的实战应用——从识别验证码到提取页面文本

有些页面上的文字,不是真实的DOM元素,而是一张图片。

验证码是图片、电商主图上的水印是图片、部分老系统页面直接截成图片展示——这些场景下,「获取元素文本」完全没用。这时候就该截图+OCR了。

这篇文章讲清楚:影刀怎么截图、怎么调OCR、准确率怎么提升、以及不适合OCR的场景怎么绕开。


一、截图指令的四种用法

影刀的截图相关指令:

指令作用适用场景
截取元素截图截某个特定元素区域精准截取验证码、价格标签
截取全屏截图截整个网页可视区域截取整体页面做记录
截取区域截图按坐标截取(左上x,y,宽,高)精确控制范围
获取元素截图返回图片二进制数据后续OCR或保存使用

最常用的是「截取元素截图」,精准、文件小、后续OCR准确率高。

# 截取验证码图片截取元素截图("验证码图片元素")->验证码截图# 保存到本地保存图片(验证码截图,"D:\\captcha\\当前验证码.png")

二、OCR文字识别的两种方式

方式A:影刀内置OCR指令

拼多多店群自动化报活动上架!

影刀提供了「OCR识别」指令(需要企业版或创业版):

# 截取元素 → OCR识别截取元素截图("价格标签区域")->截图 OCR识别(截图)->识别文本 输出日志(f"识别到的价格:{识别文本}")

优点是不需要额外配置,缺点是对模糊文本的准确率一般。

方式B:Python调用百度/腾讯OCR API(推荐)

影刀的Python代码指令可以调第三方OCR服务,准确率远超内置OCR。

以百度OCR为例:

importrequestsimportbase64# 1. 读取截图并转base64withopen(r"D:\captcha\captcha.png","rb")asf:img_base64=base64.b64encode(f.read()).decode()# 2. 调百度OCR API(需先申请API Key)api_url="https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic"access_token="你的access_token"# 通过API Key和Secret Key获取response=requests.post(api_url,data={"image":img_base64},params={"access_token":access_token})result=response.json()# {'words_result': [{'words': '连衣裙'}, {'words': '¥128.00'}], ...}foriteminresult.get("words_result",[]):print(item["words"])

百度OCR每天有500次免费额度,个人使用完全够。

如果量更大,用腾讯OCR(每月1000次免费):

# 腾讯OCR的调用方式类似api_url="https://ocr.tencentcloudapi.com/"# 需要签名认证,建议用官方SDK,代码稍长但官方有示例![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/59c51a96e1e2468a8543b37c1c242cdb.png#pic_center)

三、提高OCR准确率的实战技巧

技巧1:先预处理再识别

不是截了图直接丢OCR就完事了。对图片做预处理能大幅提升准确率。

fromPILimportImage,ImageFilter,ImageEnhance# 使用PIL做图片预处理img=Image.open(r"D:\captcha\captcha.png")# 放大(小字识别率低的问题)img=img.resize((img.width*2,img.height*2),Image.LANCZOS)# 转灰度(去掉颜色干扰)img=img.convert("L")# 增强对比度(让文字更清晰)enhancer=ImageEnhance.Contrast(img)img=enhancer.enhance(2.0)# 二值化(黑白分明,去掉噪点)threshold=128img=img.point(lambdap:255ifp>thresholdelse0)img.save(r"D:\captcha\captcha_processed.png")

预处理后的图片再丢OCR,准确率提升非常明显。特别是对付带噪点的验证码和低清晰度的截图。

技巧2:分区域截取

不要截一整张大图丢OCR。把目标区域拆小,每个小块单独识别。

# 不要这样(整张页面丢OCR,识别结果混乱)截取全屏截图->整张图 OCR识别(整张图)->混乱的结果# 应该这样(每个价格标签单独截图)获取相似元素列表("商品价格标签")->价格列表 遍历列表(价格列表,价格标签):截取元素截图(价格标签)->小截图 OCR识别(小截图)->价格文本 输出日志(价格文本)

技巧3:识别后做正则校验

OCR不是100%准确的。识别完后用正则校验,过滤掉明显错误的结果。

importre OCR结果="价格¥12B.00 销量1O248"# 提取价格(只保留数字和小数点)价格列表=re.findall(r'[\d]+\.[\d]+',OCR结果)# 结果: ['12.00'] — 自动过滤掉了识别错的"12B.00"# 提取销量(只保留纯数字)销量列表=re.findall(r'\d+',OCR结果)# 结果: ['12', '00', '1', '248'] — 需要自己判断哪个是销量

四、OCR不适合的场景

OCR不是银弹,有些场景怎么调都搞不定:

TEMU店群矩阵自动化运营核价报活动


  1. 极度扭曲的验证码:字母字母连在一起,人眼看都费劲,OCR基本白给
  2. 图片上的彩色文字:文字和背景颜色相近,对比度低
  3. 旋转角度太大的文字:OCR一般只能处理±15度以内的倾斜

这些场景建议绕路:验证码走打码平台或人工处理,数据找API,不跟OCR死磕。


五、除了提取文字,截图还能干什么

用途1:流程执行留痕

关键步骤截图保存,出问题时快速定位:

# 关键操作前后都截图截取全屏截图->操作前截图 保存图片(操作前截图,f"D:\\日志\\{时间戳}_处理前.png")点击元素("提交按钮")截取全屏截图->操作后截图 保存图片(操作后截图,f"D:\\日志\\{时间戳}_处理后.png")

用途2:图片对比验证

用影刀的「图片对比」指令,验证操作结果:

截取元素截图("结果展示区")->当前截图# 与预期结果图对比图片对比(当前截图,"D:\\预期结果.png")->相似度 如果 相似度<0.9:# 相似度低于90%输出日志("操作结果不符合预期,请检查")发送飞书通知("异常提醒","流程执行结果异常")

六、推荐资源

  • 百度OCR:ai.baidu.com/tech/ocr — 免费500次/天,注册即用
  • 腾讯OCR:cloud.tencent.com/product/ocr — 免费1000次/月
  • Pillow文档(Python图片处理库):影刀的Python代码指令已内置Pillow,直接from PIL import Image即可

作者:林焱

本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/11 3:01:52

【Zephyr|ESP32-S3】基础学习:用UART串口中断+命令解析控制WS2812变色

【Zephyr|ESP32-S3】基础学习&#xff1a;用UART串口中断命令解析控制WS2812变色 哈喽&#xff0c;我是余火&#xff0c;一个普通的牛马打工人&#xff0c;目前正在学如何使用Zephyr RTOS。 上篇用定时器做了消抖和灯效节奏控制&#xff0c;上上篇用 GPIO 按键中断实现了按键…

作者头像 李华