来源:互联网 更新时间:2026-07-06 13:50
有次做拼多多采集,商品价格死活取不到——页面源码里压根没有数字,价格是渲染在Canvas上的图片。XPath定位不到,文本提取是空的。
这时候就得换思路了——
影刀RPA内置了截图和OCR能力,可以把“看得到但抓不到”的数据提取出来。这篇文章把截图指令、OCR引擎选型、验证码识别、图片预处理、识别校验一次讲清楚。

以下几种情况,XPath和文本提取都不好用,得上OCR:


影刀的截图指令分两大类。

指令名称:


指令名称:
用变量占位符生成不重复文件名,避免覆盖:
C:截图screenshot_{{timestamp}}.png
{{timestamp}}会自动替换成当前时间戳,每次截图生成不同文件名。
截图完成后,拖入“
| 对比项 | 内置OCR | 百度OCR | 腾讯OCR | 微信OCR |
|---|---|---|---|---|
| 费用 | 免费 | 每月1000次免费 | 每月1000次免费 | 免费 |
| 准确率 | 80%-90% | 95%+ | 95%+ | 高 |
| 特殊字体 | 弱 | 强 | 强 | 强 |
| 配置复杂度 | 零 | 需申请API Key | 需申请SecretId/Key | 零 |

验证码识别是OCR最经典的场景。以下是完整操作流程。
用“
C:tempcaptcha.png。
如果验证码是桌面应用里的,用“
拖入“
C:tempcaptcha.png,识别结果存到变量验证码文本。
如果内置OCR识别率不高,换成百度OCR或微信OCR。
用“
验证码文本填到验证码输入框。
点击“提交”或“登录”按钮。
打开登录页
【循环-最多3次】:
截图验证码 → C:tempcaptcha.png
OCR识别(图片路径=C:tempcaptcha.png) → 验证码文本
输入文本(验证码输入框, 验证码文本)
点击提交按钮
等待登录结果(5秒)
如果登录成功:跳出循环
如果登录失败:刷新验证码,继续下一次
影刀内置OCR对简单文字还行,遇到扭曲、带干扰线的验证码就吃力了。
在影刀安装目录下的Python环境里运行:
pip install ddddocr
在“
# 影刀Python代码 - ddddocr验证码识别
# 输入变量:captcha_path(验证码图片路径)
# 输出变量:captcha_text(识别结果)
import ddddocr
def recognize_captcha(image_path):
ocr = ddddocr.DdddOcr()
with open(image_path, 'rb') as f:
img_bytes = f.read()
return ocr.classification(img_bytes)
captcha_text = recognize_captcha(captcha_path)
print(captcha_text)
{"captcha_path": "C:\temp\captcha.png"}${captcha_text}image = image.convert('RGB')预处理。
有些老系统的数据以图片表格形式展示,没办法用“获取元素文本”。用截图+OCR可以转成可编辑数据。
用“
拖入“
表格文本。
识别结果是纯文本,需要用正则或Python代码提取结构化数据:
# 影刀Python代码 - 解析OCR识别的表格文本
# 输入变量:ocr_text(OCR识别结果)
# 输出变量:table_data(二维列表)
import re
# 按行分割
lines = ocr_text.strip().split('n')
table_data = []
for line in lines:
# 按多个空格或制表符分割
row = re.split(r's{2,}|t', line.strip())
if row:
table_data.append(row)
print(table_data)
用“
table_data逐行写入Excel。
OCR识别率低的时候,
在调用OCR之前,先用Python对图片做预处理:
# 影刀Python代码 - 图片预处理
# 输入变量:image_path(原始图片路径)
# 输出变量:processed_path(处理后图片路径)
from PIL import Image, ImageEnhance, ImageFilter
# 打开图片
img = Image.open(image_path)
# 1. 转为灰度(去除颜色干扰)
img = img.convert('L')
# 2. 增强对比度(让文字更清晰)
enhancer = ImageEnhance.Contrast(img)
img = enhancer.enhance(2.0)
# 3. 二值化(黑白分明)
threshold = 128
img = img.point(lambda p: p > threshold and 255)
# 4. 锐化(边缘更清晰)
img = img.filter(ImageFilter.SHARPEN)
# 保存预处理后的图片
processed_path = image_path.replace('.png', '_processed.png')
img.sa ve(processed_path)
print(processed_path)
| 问题 | 预处理方法 |
|---|---|
| 图片颜色复杂、有背景干扰 | 转灰度 + 二值化 |
| 文字模糊、边缘不清 | 锐化 + 对比度增强 |
| 图片太小、文字挤在一起 | 放大2倍(resize) |
| 图片有噪点 | 中值滤波去噪 |
OCR不是100%准确的。
import re
if re.match(r'^[A-Za-z0-9]{4,6}$', captcha_text):
# 格式正确,继续
else:
# 格式不对,重新识别
设置 重试次数 = 0
设置 最大重试 = 3
循环(重试次数 < 最大重试):
截图验证码
OCR识别 → 验证码文本
如果 验证码文本 符合格式要求:
填入验证码
提交
如果 提交成功:跳出循环
重试次数 = 重试次数 + 1
等待1秒(刷新验证码)
如果 重试次数 >= 最大重试:
发送告警通知("验证码识别失败,请人工介入")
有些电商平台的商品价格是图片形式展示的(防爬),用XPath取不到。完整流程如下:
A_Main(主流程)
├─ 【Step 1:打开商品详情页】
│ ├─ 打开网页(商品URL)
│ └─ 等待页面加载
│
├─ 【Step 2:截图价格区域】
│ ├─ 捕获价格图片元素 → 价格元素
│ ├─ 网页截图(截图区域=网页元素, 目标元素=价格元素)
│ └─ 保存到 C:tempprice_{{timestamp}}.png
│
├─ 【Step 3:图片预处理(Python)】
│ ├─ 执行Python代码:
│ │ ├─ 转灰度 + 二值化 + 锐化
│ │ └─ 输出:处理后的图片路径
│ └─ 输出变量:processed_path
│
├─ 【Step 4:OCR识别】
│ ├─ OCR文字识别(
│ │ 图片路径=processed_path,
│ │ 识别引擎=百度OCR, # 价格数字要求准确率高
│ │ 识别语言=中英混合
│ │ )
│ └─ 输出变量:price_text
│
├─ 【Step 5:提取数字】
│ └─ 执行Python代码(正则提取数字):
│ import re
│ match = re.search(r'[d.]+', price_text)
│ price = float(match.group()) if match else 0
│ print(price)
│
└─ 【Step 6:写入Excel】
└─ 追加一行数据到表格([商品名称, price, 采集时间])
https://github.com/sml2h3/ddddocr电视剧《小欢喜》剧情介绍
俄罗斯最大yandex入口外贸日报直达链接
二次元男生网名可爱(精选100个)
美好的简约网名男生(精选100个)
腾讯元宝怎么用来分析股票基金的基本面信息?
盖乐世社区怎么删除帖子?盖乐世社区个人发布内容撤回步骤
欧易OKX官方网站直达入口 2026欧易官方App安卓版v7.1.0下载安装
免费观看国外短视频的app有哪些 观看国外短视频的软件下载
wallpaper壁纸声音怎么开启
问题:CIA币好不?Cia Protocol币今日上线:价格预测、代币经济学和未来潜力
新浪人工智能热点小时报丨2026年06月20日02时_今日实时人工智能热点速递
国际贵金属走低,现货黄金价格跌0.49%
倒数日怎么注册 倒数日账号注册教程
滴滴顺风车新规上线:车主分为四挡 有人不能接50公里长途订单
短剧《嫡女她是山大王》剧情介绍
Bubbly无法连接服务器修复方法
本田CR-V支持哪些手机互联功能
币安Binance交易所官方入口 币安App下载安装与实名注册教程
玉米名字网名大全男生(精选100个)
失落城堡2打完魔王后如何继续玩
手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc