有些数据,明明就在屏幕上,你用“获取元素文本”就是拿不到——图片里的文字、验证码、截图中的表格、Canvas画布上的数字。网页不是把什么都写在HTML里的。
这时候就轮到截图和OCR出场了。影刀RPA内置了截图指令和OCR文字识别能力,可以把“看得到但抓不到”的数据提取出来。
我也是从“元素抓不到就卡死”的阶段过来的。后来发现很多数据根本不需要去扣XPath——截图+OCR,直接读出来就行。但OCR这条路坑也不少——内置OCR免费但准确率一般、第三方要配置API、识别出来的文字还要再做正则提取。今天把截图和OCR的完整方案讲一遍。
一、什么场景需要截图+OCR
以下几种情况,XPath和元素定位都不好用:
| 场景 | 说明 | 示例 |
|---|
| 图片里的文字 | 数据以图片形式展示 | 部分老系统、图表、海报 |
| Canvas画布 | 文字渲染在Canvas里 | 数据可视化图表 |
| 验证码 | 图形验证码需要识别 | 登录时的数字/字母验证码 |
| 桌面应用 | Windows桌面程序的文字 | ERP、财务软件界面 |
| 防采集网站 | 文字不以文本形式存在 | 部分电商平台的价格 |
一个重要原则:能用元素捕获就别用OCR。OCR的识别率不是100%,文字模糊或背景复杂时准确率会下降。截图+OCR是“最后一招”,不是第一选择。
二、影刀的截图指令:两种方式
影刀RPA里截图相关的指令主要有两类:
方式一:截屏(桌面/窗口截图)
指令位置:右侧指令面板搜索“截屏”。
参数设置:
| 参数 | 选项 | 说明 |
|---|
| 截屏来源 | 屏幕/窗口对象/当前激活窗口/动态选择 | 选“动态选择”可以手动框选区域 |
| 提取区域 | 全部/指定部分区域 | “指定部分区域”按
Ctrl+Alt+X框选 |
| 保存截屏至 | 剪切板/文件 | 选“文件”需设置保存路径 |

# 影刀RPA - 截屏指令示例
# 场景:截取桌面指定区域并保存
# 指令:截屏
# 截屏来源:动态选择(可在当前窗口自行选择需要截取的部分)
# 提取区域:指定部分区域(按Ctrl+Alt+X框选)
# 保存截屏至:文件
# 保存路径:C:\截图\screenshot_{{timestamp}}.png
方式二:网页截图(浏览器专用)
指令位置:右侧指令面板搜索“网页截图”。
网页截图比普通截屏多了“整个网页”的选项——可以截取有滚动条的长页面。
# 影刀RPA - 网页截图示例
# 场景:截取整个商品详情页
# 指令:网页截图
# 网页对象:{{浏览器对象}}
# 截图区域:整个网页(有滚动条也会全部截下来)
# 保存文件夹:C:\截图\
# 使用自动随机文件名:✅ 勾选
三种截图区域的区别:
| 截图区域 | 说明 | 适用场景 |
|---|---|---|
| 网页元素 | 对指定元素截图 | 只截验证码图片、某个表格 |
| 网页可见区域 | 截当前浏览器可视区域 | 快速截图,不需要滚动 |
| 整个网页 | 截整个页面(含滚动条以下) | 商品详情页、长文章 |
踩坑提醒:影刀的“截屏”指令截的是当前屏幕可见区域,不是整个页面。如果需要截取“首屏以下”的内容,需要用“网页截图”指令选“整个网页”,或者先滚动再截图。
三、截图保存路径的动态命名
截图保存时最怕覆盖——上一张还没用,下一张就把同名文件盖掉了。
推荐做法:用时间戳做文件名。
# 影刀RPA - 动态截图路径示例
# 1. 获取当前时间戳
获取当前时间("yyyyMMdd_HHmmss") → 时间戳
# 2. 拼接文件路径
文件路径 = "C:/RPA_Logs/截图/error_" + 时间戳 + ".png"
# 3. 执行截图
截屏(保存路径=文件路径)

影刀RPA的“网页截图”指令自带“使用自动随机文件名”选项,勾上就会自动以时间戳命名,不用自己拼。
四、OCR文字识别:四种方案对比
截图拿到图片后,下一步是把图片里的文字“读”出来。影刀RPA提供了四种OCR方案:
| 方案 | 费用 | 准确率 | 配置难度 | 适用场景 |
|---|---|---|---|---|
| 内置OCR | 免费 | 80%-90% | 零配置 | 日常简单文字识别 |
| 百度OCR | 每日免费额度 | 95%+ | 需申请API Key | 发票、证件、复杂场景 |
| 腾讯OCR | 每月免费额度 | 95%+ | 需申请SecretId/Key | 同左 |
| 微信OCR | 免费 | 高 | 零配置 | 中英文混合、截图识别 |
日常简单文字识别用内置OCR够了。验证码或图片表格这种对准确率要求高的场景,建议配置百度或腾讯OCR。
方案一:内置OCR(零配置,免费)
指令位置:右侧指令面板搜索“通用文字识别”。
# 影刀RPA - 通用文字识别示例
# 1. 创建AI引擎(首次使用)
创建AI引擎(引擎类型="影刀") → ai_engine
# 2. 截取图片(或使用已有图片)
截屏(保存路径="C:/截图/temp.png")
# 3. 识别文字
通用文字识别(
AI引擎=ai_engine,
图片来源="文件",
图片路径="C:/截图/temp.png"
) → 识别结果
# 4. 打印结果
打印日志("识别结果:" + 识别结果)
方案二:百度/腾讯OCR(高准确率)
如果内置OCR识别率不够,可以配置第三方OCR。
配置步骤:
- 去百度AI开放平台或腾讯云申请OCR服务的API Key
- 在影刀RPA中创建AI引擎,选择“百度OCR”或“腾讯OCR”
- 填入API Key和Secret
- 后续使用方式和内置OCR一样
版本提醒:第三方OCR需要联网调用,有免费额度限制。百度OCR每月有2100次免费发票识别额度,其他类型的OCR也有免费额度。
方案三:微信OCR(推荐,零配置高准确率)
影刀RPA有一个魔法指令“微信OCR识别”,调用微信原生OCR能力。
优点:
- 自动获取微信路径,零配置开箱即用
- 中英文、数字混合识别能力强
- 无需打开微信窗口,后台静默运行
- 支持PNG、JPG、JPEG、BMP等常见格式
操作步骤:
- 右侧指令面板搜索“微信OCR识别”,拖入流程
- 设置“图片路径”:支持变量或绝对路径,如
C:\截图\订单.png - (可选)填写“微信OCR插件路径”和“微信安装路径”,不填则自动识别
- 设置输出变量名(默认是
result),后续可直接使用{{result}}
# 影刀RPA - 微信OCR识别示例
# 指令:微信OCR识别
# 图片路径:C:\截图\验证码.png
# 微信OCR插件路径:(留空,自动识别)
# 微信安装路径:(留空,自动识别)
# 输出到变量:ocr_result
# 后续使用识别结果
打印日志("识别的文字:" + ocr_result)
适用场景:截图识别、票据处理、聊天记录导出、验证码识别、表格图片转文本。
方案四:离线OCR(无需联网)
如果电脑不能联网,可以用“影刀离线OCR”指令。
注意:首次在电脑上运行时会下载依赖到本地。分享给别人时,对方电脑上首次运行可能会出现报错,需要先跑一遍完成下载。
五、验证码识别:三个实操方案
验证码是OCR最典型的应用场景。登录时弹出一个四位数字验证码,你不可能每次都手动输入。
方案一:影刀内置验证码识别
指令位置:右侧指令面板搜索“验证码识别”。
# 影刀RPA - 验证码识别示例
# 1. 捕获验证码图片元素(用网页截图指令)
网页截图(
截图区域="网页元素",
目标元素="验证码图片",
保存路径="C:/captcha.png"
)
# 2. 识别验证码
验证码识别(
识别引擎="影刀", # 或"图鉴"
图片路径="C:/captcha.png",
验证码类型="纯数字" # 或"纯字母""数英混合"
) → 验证码文本
# 3. 填入验证码
填写输入框(验证码输入框, 验证码文本)
支持的验证码类型:
- 纯数字
- 纯字母
- 数英混合
方案二:ddddocr(免费开源,推荐)
如果内置识别率不够,可以用开源的ddddocr库。
安装:
pip install ddddocr
在影刀里用Python代码指令调用:
# 影刀RPA - Python代码指令:ddddocr识别验证码
# 输入:验证码图片路径
# 输出:识别结果
import ddddocr
# 创建识别器
ocr = ddddocr.DdddOcr()
# 读取图片
with open("C:/captcha.png", 'rb') as f:
img_bytes = f.read()
# 识别
result = ocr.classification(img_bytes)
# 输出到影刀
print(result) # 打印识别结果
注意事项:
- ddddocr在不同验证码图片上识别效果不同,取决于图片质量和复杂程度
- 如果识别效果不理想,可以尝试对图片做预处理(灰度化、二值化、去噪)
方案三:魔法指令一键识别
影刀RPA的魔法指令可以一句话完成验证码识别。在魔法指令输入框输入:
帮我把这个验证码图片里的文字识别出来:C:/captcha.png
AI会自动生成可运行的OCR识别代码。
六、实战案例:从截图到数据提取的完整流程
以识别图片表格数据为例,走一遍完整流程:
需求:有一张商品价格截图(图片格式),要把里面的商品名称和价格提取出来,写入Excel。
# 影刀RPA - 截图OCR完整流程
# === 第1步:截图 ===
# 用“网页截图”截取包含表格的区域
网页截图(
网页对象={{浏览器对象}},
截图区域="网页元素",
目标元素="价格表格区域", # 提前捕获
保存文件夹="C:/截图/",
使用自动随机文件名=✅
) → 截图路径
# === 第2步:OCR识别 ===
# 用“微信OCR识别”读取图片文字
微信OCR识别(
图片路径=截图路径
) → ocr原始结果
# ocr原始结果示例:
# "商品名称 价格\n无线耳机 ¥49.00\n蓝牙音箱 ¥89.00\n运动手环 ¥199.00"
# === 第3步:数据清洗 ===
# 用Python代码指令提取结构化数据
# 影刀RPA - Python代码指令:解析OCR结果
# 输入:ocr原始结果(字符串)
# 输出:商品列表(二维列表)
import re
ocr_text = {{ocr原始结果}}
# 按换行分割
lines = ocr_text.strip().split('\n')
# 跳过表头(第一行)
data = []
for line in lines[1:]:
# 按空格或制表符分割
parts = re.split(r'\s+', line.strip())
if len(parts) >= 2:
# 提取商品名称和价格
name = parts[0]
# 提取价格中的数字
price_match = re.search(r'[\d.]+', parts[-1])
price = float(price_match.group()) if price_match else 0
data.append([name, price])
# 输出到影刀
print(data)
# === 第4步:写入Excel ===
# 影刀RPA - 写入数据
创建Excel() → excel对象
写入行数据到表格(excel对象, 行号=1, 数据=["商品名称", "价格"])
循环 遍历 {{清洗后数据列表}}
当前行 = 当前循环项
写入行数据到表格(excel对象, 行号=当前行号+1, 数据=当前行)
保存Excel(excel对象, "C:/商品价格表.xlsx")
七、三条核心建议
建议1:能用元素捕获就别用OCR
OCR是最后的手段,不是第一选择。 元素捕获稳定、准确、快速。OCR有识别率问题、有图片质量问题、有后续解析的麻烦。只有元素捕获确实拿不到数据时,才考虑截图+OCR。
建议2:优先用微信OCR
内置OCR免费但准确率一般,百度腾讯要配API。微信OCR免费、准确率高、零配置,是性价比最高的方案。唯一的条件是电脑上要安装微信。
建议3:OCR结果要配合正则提取
OCR识别的结果是一整段文字,不是结构化的数据。识别出来后一定要用Python正则提取目标字段,不能直接把OCR结果当最终数据用。
八、常见问题与易错速查
| 错误现象 | 可能原因 | 修复方法 |
|---|---|---|
| 截图保存失败 | 路径不存在或无写入权限 | 提前创建文件夹 |
| OCR识别结果为空 | 图片太模糊或格式不支持 | 换清晰图片,检查格式(PNG/JPG) |
| 微信OCR指令找不到 | 微信版本太旧 | 更新微信到最新版本 |
| 微信OCR一直执行没结果 | 验证码区域没框选对 | 检查截图区域是否正确框选 |
| 百度OCR报错No permission | API Key配置错了 | 检查API Key和Secret是否正确 |
| 识别出来的文字全是乱码 | 语言设置不对 | 检查识别语言是否匹配(中文/英文) |
| 验证码识别率低 | 验证码有干扰线或扭曲 | 换ddddocr或第三方OCR |
| 离线OCR首次运行报错 | 依赖还没下载完 | 先手动跑一次完成下载 |
九、推荐资源
- 影刀官方帮助中心:搜索“截屏”“网页截图”“通用文字识别”,有完整指令说明
- 影刀开发者社区:搜索“OCR”“验证码识别”,有大量实战问答和踩坑经验
- ddddocr GitHub:开源免费的验证码识别库,支持数字字母混合
- 百度AI开放平台:申请OCR API Key,每月有免费额度
一句话总结:截图与OCR的核心就三件事——用“截屏”或“网页截图”拿到图片、用“微信OCR”或“通用文字识别”读出文字、用Python正则从识别结果中提取结构化数据。能用元素捕获就别用OCR,不得不用时优先选微信OCR,零配置、免费、准确率高。
试试从截一张验证码图片并用微信OCR识别开始,感受一下“看得到就能读到”的能力。
#影刀RPA #RPA自动化 #OCR #截图 #验证码识别 #数据采集
作者:林焱
本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。
