在做自动化脚本(如挂机、数据采集、批量处理)时,经常会遇到一个问题:
👉 如何让按键精灵"看懂屏幕上的文字"?
答案就是:OCR 文字识别 + API 接口调用
本篇文章将手把手教你:
-
按键精灵如何调用 OCR 接口
-
从截图 → 识别 → 获取文字完整流程
-
可直接运行的脚本示例
-
常见问题与优化方案
一、什么是 OCR?为什么按键精灵需要它?
OCR(Optical Character Recognition)是将图片中的文字提取为可编辑文本的技术。
在按键精灵中的典型用途:
-
自动识别游戏文字(任务 / 状态)
-
自动读取软件界面信息
-
批量识别截图内容
-
自动化数据采集(电商 / 表单)
👉 如果你还不了解 OCR 基础,建议先看:
《文字识别通用OCR接口调用与功能说明》
https://blog.csdn.net/weixin_40809967/article/details/159715814?spm=1011.2415.3001.10575&sharefrom=mp_manage_link
二、实现思路
按键精灵实现 OCR 的流程如下:
👉 核心流程:
1️⃣ 截取屏幕图片
2️⃣ 转换为 Base64
3️⃣ 调用 OCR API
4️⃣ 获取返回结果(JSON)
5️⃣ 提取识别文本
三、OCR API 接口说明
接口支持:
-
通用文字识别
-
多语言识别
-
图片自动纠偏
-
高精度识别
👉 支持免费在线体验,API文档清晰,有各语言的示例代码:
https://market.shiliuai.com/general-ocr


四、按键精灵调用 OCR API 实战
1️⃣ 截图保存
' 截图保存到本地
Capture 0, 0, 800, 600, "C:\ocr.png"
2️⃣ 图片转 Base64(核心)
按键精灵本身不支持,需要借助组件或调用接口上传图片
👉 推荐方式(简单稳定):
直接上传图片(无需Base64)
3️⃣ HTTP 请求调用 OCR API
' ===========================
' API接入文档:https://market.shiliuai.com/doc/advanced-general-ocr
' ===========================
Import "Encrypt.dll"
VBSBegin
Function Base64Encode(filePath)
Set inStream = CreateObject("ADODB.Stream")
inStream.Type = 1
inStream.Open
inStream.LoadFromFile filePath
inStream.Position = 0
Set dom = CreateObject("MSXML2.DOMDocument")
Set elem = dom.createElement("tmp")
elem.dataType = "bin.base64"
elem.nodeTypedValue = inStream.Read
Base64Encode = elem.Text
inStream.Close
End Function
Function ocr_easy(appcode, imgPath)
url = "https://ocr-api.shiliuai.com/api/advanced_general_ocr/v1"
jsonBody = "{\"file_base64\":\"" & Base64Encode(imgPath) & "\"}"
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "POST", url, False
http.setRequestHeader "Authorization", "APPCODE " & appcode
http.setRequestHeader "Content-Type", "application/json"
http.send jsonBody
ocr_easy = http.responseText
End Function
VBSEnd
appcode = "你的APPCODE"
res = ocr_easy(appcode, "你的文件路径")
TracePrint res
4️⃣ 返回结果示例
' ===========================
' API接入文档:https://market.shiliuai.com/doc/advanced-general-ocr
' ===========================
成功示例:
{
'code': 200,
'msg': 'OK',
'msg_cn': '成功',
'success': True,
'file_id': file id,
'request_id': request id,
'data': data, 具体看下面
}
data = {
"page_count": 5, // int, 文件页面总数
"process_pages": 3, // int, 处理页面数
"status": 2, // int, 处理状态,0: 已加入队列, 1: 正在处理中, 2: 已完成,同步时此值为2
"wait_time": 0.0 // float, 大概还需等待时间,同步时此值为0
// 如果status==2:
"pages": [
{
"width": 2000, // int, 页面宽度
"height": 2500, // int, 页面高度
"prob_mean": 0.98, // float, [0, 1], 页面文字置信度平均值,若is_line,则不返回该项
"prob_std": 0.11, // float, 页面文字置信度标准差,若is_line,则不返回该项
"lines": [
{
"text": "你好", // string, 文字内容
"prob": 0.995, // float, [0, 1], 文字内容置信度
"keypoints": [[50, 20], [150, 20], [150, 60], [50, 60]] // list, [[xi, yi]], 文字区域角点位置,以左上角为起点,按顺时针排列;若is_line,则不返回该项
},
......
]
},
......,
]
}
5️⃣ 提取识别内容
Dim text
text = JSON取值(result, "data.text")
TracePrint "识别结果:" & text
五、完整脚本示例
' ===========================
' 按键精灵 OCR 自动识别示例
' API文档:https://market.shiliuai.com/doc/advanced-general-ocr
' ===========================
Dim imgPath, apiUrl, result, text
imgPath = "C:\ocr.png"
apiUrl = "https://ocr-api.shiliuai.com/api/advanced_general_ocr/v1"
' 1. 截图
Capture 0, 0, 800, 600, imgPath
Delay 500
' 2. 调用OCR接口
result = HttpPost(apiUrl, "file=@" & imgPath)
' 3. 输出返回结果
TracePrint result
' 4. 提取识别文字
text = JSON取值(result, "data.text")
TracePrint "识别内容:" & text
六、常见问题(一定要看)
❌ 1. 识别不准?
原因:
-
图片模糊
-
分辨率低
-
截图区域不准确
👉 解决方案:
结合这篇优化:《图片变清晰 API 实战》
❌ 2. 返回为空?
-
图片未成功上传
-
接口参数错误
❌ 3. 中文乱码?
👉 确保:
-
返回编码为 UTF-8
-
按键精灵解析方式正确
七、进阶玩法
你可以把 OCR + 你现有API组合起来👇
🚀 玩法1:OCR + 去水印
👉 自动处理图片 → 再识别文字
🚀 玩法2:OCR + 高清化
👉 模糊截图 → 提高清晰度 → 再识别
参考:《图片变清晰 API》
🚀 玩法3:自动化脚本系统
👉 实现:
-
自动识别
-
自动点击
-
自动执行任务
八、总结
通过本文你已经掌握:
✅ 按键精灵调用 OCR API 完整流程
✅ 截图 → 上传 → 识别 → 获取结果
✅ 可直接运行的脚本示例
📚 延伸阅读
🎯 最后
👉 如果你正在做自动化项目(按键精灵 / RPA / 脚本),OCR API 是必不可少的一环。
👉 建议直接去体验:石榴智能的文字识别API接口,支持免费测试,接入简单,几分钟即可跑通。