影刀RPA完全指南:截图与OCR文字识别的四种方式对比
影刀RPA完全指南:截图与OCR文字识别的四种方式对比
网页元素能定位到的时候一切好说,但总有那么些场景——验证码、系统弹窗、客户端软件界面、远程桌面——这些地方没有DOM元素可定位,只能靠截图+OCR。"截图+OCR"这个组合在影刀RPA中是处理非浏览器场景的核心手段。
影刀RPA至少提供了四种获取和识别图像文字的方式,每种方式的适用场景、准确率和性能差异很大。选对了方案,识别率90%以上;选错了方案,跑一晚上全是乱码。
我也是从一个个坑里试出来的。最早用免费OCR,中文字符识别一塌糊涂;后来换封闭场景下的精准方案,才有了可用的自动化流程。

四种方案的全面对比
方案一:影刀内置截图 + 内置OCR
这是最基础的方案,适合规则文本的简单场景。
- 拖入「截图保存」指令(在「截图」分类下)。
- 选择截图区域:全屏、指定窗口、自定义坐标区域。
- 设置的保存路径,截图存为PNG文件。
- 拖入「OCR文字识别」指令,选择刚保存的截图文件。
- 在OCR结果中提取需要的文字内容。
- 返回结果包含文字内容和位置坐标。
优点:无需额外配置,拖指令就能用。
缺点:识别率一般,对非标准字体、倾斜文字、低对比度文字基本无效。
适用场景:常规网页上的文字、Windows系统对话框、文字清晰且字体标准的场景。
方案二:元素截图 + 指定区域OCR
拼多多店群自动化报活动上架!
只截取需要的区域,减少干扰信息,提升识别准确率。
- 用「获取元素位置」指令获取目标元素的坐标和尺寸。
- 用「截图保存」指令的「自定义区域」模式,填入元素坐标。
- 截图后先用影刀的「图像处理」指令做预处理:灰度化、二值化、放大。
- 预处理后再用「OCR文字识别」指令识别。
- 区域截图去掉了背景干扰,识别率大幅提升。
# 影刀Python节点:图像预处理提升OCR识别率
# 使用Pillow库做二值化和降噪处理
from PIL import Image, ImageFilter, ImageEnhance
img_path = get_variable("screenshot_path")
img = Image.open(img_path)
# 转为灰度图
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)
# 放大2倍(提高OCR对小字的识别率)
width, height = img.size
img = img.resize((width * 2, height * 2), Image.LANCZOS)
# 保存预处理后的图片
processed_path = img_path.replace('.png', '_processed.png')
img.save(processed_path)
set_variable("processed_image", processed_path)
方案三:调用百度OCR API
影刀内置OCR能力有限,需要高精度识别时推荐接入第三方OCR服务。百度OCR的通用文字识别接口免费额度够日常使用。
- 注册百度智能云账号,创建文字识别应用,获取API Key和Secret Key。
- 在影刀的Python节点中调用百度OCR的access_token接口获取Token。
- 读取截图文件的base64编码。
- 调用通用文字识别API传入图片数据。
- 解析返回的JSON结果,提取识别文字。
# 影刀Python节点:调用百度OCR API识别图片文字
# 注意:需要先点亮Python图标,并用pip install requests
import requests
import base64
import json
# 百度OCR配置(从影刀变量获取)
api_key = get_variable("baidu_api_key")
secret_key = get_variable("baidu_secret_key")
# 第一步:获取access_token
token_url = "https://aip.baidubce.com/oauth/2.0/token"
token_params = {
"grant_type": "client_credentials",
"client_id": api_key,
"client_secret": secret_key
}
token_resp = requests.post(token_url, params=token_params)
access_token = token_resp.json().get("access_token")
# 第二步:读取图片并Base64编码
image_path = get_variable("screenshot_path")
with open(image_path, "rb") as f:
image_base64 = base64.b64encode(f.read()).decode("utf-8")
# 第三步:调用通用文字识别接口
ocr_url = f"https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic"
ocr_params = {"access_token": access_token}
ocr_data = {
"image": image_base64,
"detect_direction": True, # 检测文字方向
"language_type": "CHN_ENG", # 中英文混合
"paragraph": False # 不按段落输出
}
ocr_resp = requests.post(ocr_url, params=ocr_params, data=ocr_data)
result = ocr_resp.json()
# 第四步:提取识别结果
words_list = []
for item in result.get("words_result", []):
words_list.append(item.get("words", ""))
recognized_text = "\n".join(words_list)
set_variable("ocr_result", recognized_text)
set_variable("ocr_confidence", json.dumps(result, ensure_ascii=False))
优点:识别率极高(95%+),支持中英文混合、竖排文字、手写体。
缺点:需要联网,有调用频率限制(免费版每天50000次),涉及费用(超出免费配额后)。

方案四:影刀魔法指令OCR
影刀的「魔法指令」是对第三方服务的封装,包括OCR识别。
- 在指令面板搜索框输入"魔法指令"。
- 找到「调用魔法指令」拖入流程。
- 在魔法指令列表中搜索"OCR"或"文字识别"。
- 选择具体的OCR服务(影刀内置了多个OCR提供方)。
- 按指令要求传入截图文件路径或图片URL。
优点:不需要写代码,不需要申请API密钥,影刀内置集成。
缺点:可能需要付费或消耗影刀积分,不同OCR提供方的识别效果差异大。
截图策略的选择

不同场景选不同截图方式,直接影响OCR效果。
全屏截图与窗口截图
| 截图方式 | 适用场景 | 注意事项 |
|---|---|---|
| 全屏截图 | 需要完整屏幕信息,如验证码在整个页面中 | 文件大,OCR需指定区域 |
| 指定窗口 | 针对特定应用窗口,如微信聊天窗口 | 窗口标题需精确匹配 |
| 自定义区域 | 精准截取文字区域,提升OCR识别率 | 需要提前知道坐标 |
截图的时机控制
这里很容易踩坑:页面还没加载完就截图,截到的是空白页或加载中的动画,OCR自然什么都识别不到。

- 截图前加「等待元素」指令,等待目标区域出现。
- 元素出现后再等500ms-1000ms(让渲染稳定)。
- 使用影刀的「截图保存」指令时选择"当前可见区域",避免截到屏幕外的内容。
实际应用场景
TEMU店群矩阵自动化运营核价报活动
场景:动态验证码自动识别
-
用「等待元素」等验证码图片加载完成。
-
用「截图保存」截取验证码图片区域。
-
调用百度OCR或影刀魔法指令识别验证码。
-
将识别结果填入输入框。
-

-
提交验证。
如果验证码太复杂(如滑块的),OCR方案就不适用了,需要改用专门的打码平台接入方案。
场景:Windows客户端数据采集
有些企业软件没有网页版,只有Windows客户端。此时只能用截图+OCR。
- 用「激活窗口」指令将目标窗口置顶。
- 用「截图保存」截取窗口特定区域。
- OCR识别出数据后,用「模拟按键」或「鼠标点击」做下一步操作。
- 循环以上步骤遍历所有数据行。
常见问题/易错速查
问题1:OCR识别中文全是乱码或问号
OCR引擎的语言设置不对。在影刀的OCR指令中检查「识别语言」参数,中文选「CHN」或「CHN_ENG」(中英文混合)。如果默认只有英文,需要额外安装中文语言包。
问题2:截图到的是空白区域
窗口被其他窗口遮挡或窗口处于最小化状态。在截图前用「激活窗口」指令把目标窗口置顶并恢复大小。如果在非桌面环境下运行(如远程桌面断开),截图功能会失效。
问题3:百度OCR提示"image format error"
图片Base64编码有问题。检查图片文件是否完整,Base64编码时是否包含了data:image前缀(API不需要前缀,只传纯Base64字符串)。
问题4:验证码OCR识别率极低
验证码本身就是设计来防OCR的。降低期望值,考虑改用打码平台(如超级鹰、图鉴)的影刀魔法指令集成。或者采用人工打码——影刀的流程可以用「输入框弹窗」指令暂停,让操作者手动输入验证码后继续。
推荐资源
- 百度智能云OCR控制台:查看调用量、剩余额度、API文档
- Pillow库官方文档:图像预处理的完整API参考
- 影刀魔法指令市场:搜索OCR相关魔法指令,查看用户评价和适用场景
作者:林焱
本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。
内容标签:#影刀RPA #截图 #OCR #文字识别 #百度OCR #图像预处理 #魔法指令 #验证码
更多推荐




所有评论(0)