影刀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为例:

import requests
import base64

# 1. 读取截图并转base64
with open(r"D:\captcha\captcha.png", "rb") as f:
    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'}], ...}

for item in result.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就完事了。对图片做预处理能大幅提升准确率。

from PIL import Image, 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 = 128
img = img.point(lambda p: 255 if p > threshold else 0)

img.save(r"D:\captcha\captcha_processed.png")

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

在这里插入图片描述

技巧2:分区域截取

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

# 不要这样(整张页面丢OCR,识别结果混乱)
截取全屏截图 -> 整张图
OCR识别(整张图) -> 混乱的结果

# 应该这样(每个价格标签单独截图)
获取相似元素列表("商品价格标签") -> 价格列表
遍历列表(价格列表, 价格标签):
    截取元素截图(价格标签) -> 小截图
    OCR识别(小截图) -> 价格文本
    输出日志(价格文本)

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

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

在这里插入图片描述

import re

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学习手册》系列文章之一,内容源于实操经验的整理与分享。

内容概要:本文围绕基于三电平ANPC构网型逆变器的虚拟同步控制策略展开研究,提出了一种融合DPWMA调制、正负序分离锁相电网电压前馈的复合控制策略,并通过Simulink仿真实现系统建模多工况验证。研究表明,ANPC三电平拓扑具备开关损耗均衡、中点电位稳定和输出谐波低等优势,结合DPWMA调制可显著提升稳态电能质量;正负序分离锁相技术有效应对电网不平衡工况,确保并网电流对称性功率稳定性;电网电压前馈控制则增强系统动态响应能力,抑制电压骤变或负载切换引起的冲击。整体策略在稳态精度、电网适应性和动态抗扰方面表现优异,适用于新能源并网工业大功率变流场景。; 适合人:具备电力电子、自动控制或电气工程相关背景,从事新能源发电、微电网、逆变器控制等方向的科研人员及研究生。; 使用场景及目标:①用于高比例新能源接入下的并网逆变器控制策略设计;②解决电网不平衡、电压扰动等复杂工况下的并网稳定性问题;③优化逆变器动态响应性能电能质量,提升系统可靠性。; 阅读建议:建议结合文中提供的Simulink仿真模型控制框图,逐步复现各模块功能,重点关注DPWMA调制实现、正负序分解算法前馈-反馈协同控制逻辑,同时可通过修改电网参数测试系统鲁棒性,深化对控制机理的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值