按键精灵调用OCR接口实现屏幕文字识别(超详细新手实战教程) 前言在按键精灵自动化开发中传统的找图、找色、固定坐标判断局限性非常大场景文字变动、界面更新、分辨率变化都会导致旧脚本直接失效。而OCR文字识别是目前轻量化自动化最强的补充方案通过识别屏幕文字内容实现智能判断页面状态、自动读取文本、页面检测等功能。本文纯技术学习、办公自动化用途手把手教大家按键精灵如何通过HTTP接口调用OCR、解析屏幕文字、获取识别结果。一、技术原理简介1. 按键精灵执行截图命令截取当前屏幕画面2. 通过网络HTTP请求将图片上传至OCR识别接口3. 接口AI解析图片中的所有文字内容4. 脚本接收返回数据解析出纯文本内容5. 可用于页面判断、状态识别、文本读取等自动化逻辑二、环境准备1. PC版按键精灵2. 可用的OCR在线识别API接口代码中已提供3. 电脑有网络访问权限三、完整可运行源码纯OCR文字识别功能屏幕全屏截图 → 提交OCR接口 → 输出全部识别文字 纯字符串遍历解码Unicode(\uXXXX) Function DecodeUnicodeSimple(str) Dim result, i, pos, code, char result i 1 Do While i Len(str) If Mid(str, i, 2) \u And i 5 Len(str) Then code Mid(str, i 2, 4) char ChrW(CLng(H code)) result result char i i 6 Else result result Mid(str, i, 1) i i 1 End If Loop DecodeUnicodeSimple Replace(result, \\, \) End Function 从JSON中提取results字段并把\r\n换成换行 Function ExtractResultsAndFormat(jsonStr) Dim startTag, endTag, startPos, endPos, rawResults startTag results: endTag ,status: startPos InStr(jsonStr, startTag) If startPos 0 Then ExtractResultsAndFormat 未找到results字段 Exit Function End If startPos startPos Len(startTag) endPos InStr(startPos, jsonStr, endTag) If endPos 0 Then endPos InStr(startPos, jsonStr, ) End If If endPos 0 Then endPos Len(jsonStr) End If rawResults Mid(jsonStr, startPos, endPos - startPos) rawResults Replace(rawResults, \r\n, vbCrLf) rawResults Replace(rawResults, \n, vbCrLf) ExtractResultsAndFormat rawResults End Function 核心上传函数 Function HttpPostUploadFile(url, filePath, fileFieldName, apiKey) On Error Resume Next Dim decodedFullJson decodedFullJson Set fso CreateObject(Scripting.FileSystemObject) If Not fso.FileExists(filePath) Then decodedFullJson 文件不存在: filePath HttpPostUploadFile Array(decodedFullJson, decodedFullJson) Set fso Nothing Exit Function End If fileName fso.GetFileName(filePath) Set fso Nothing boundary ----Boundary Replace(Mid(CreateObject(Scriptlet.TypeLib).GUID, 2, 32), -, ) Set streamFile CreateObject(ADODB.Stream) streamFile.Type 1 streamFile.Open streamFile.LoadFromFile filePath fileData streamFile.Read streamFile.Close Set streamFile Nothing Set streamBody CreateObject(ADODB.Stream) streamBody.Type 1 streamBody.Open head -- boundary vbCrLf _ Content-Disposition: form-data; name fileFieldName ; filename fileName vbCrLf _ Content-Type: image/png vbCrLf vbCrLf Set st CreateObject(ADODB.Stream) st.Type 2 st.Charset UTF-8 st.Open st.WriteText head st.Position 0 st.Type 1 streamBody.Write st.Read st.Close Set st Nothing streamBody.Write fileData foot vbCrLf -- boundary -- vbCrLf Set st CreateObject(ADODB.Stream) st.Type 2 st.Charset UTF-8 st.Open st.WriteText foot st.Position 0 st.Type 1 streamBody.Write st.Read st.Close Set st Nothing streamBody.Position 0 Set http CreateObject(WinHttp.WinHttpRequest.5.1) http.Open POST, url, False http.SetRequestHeader Content-Type, multipart/form-data; boundary boundary http.SetRequestHeader X-OCR-API-Key, apiKey http.Send streamBody.Read If http.Status 200 Then Set st CreateObject(ADODB.Stream) st.Type 1 st.Open st.Write http.ResponseBody st.Position 0 st.Type 2 st.Charset UTF-8 rawStr st.ReadText st.Close Set st Nothing decodedFullJson DecodeUnicodeSimple(rawStr) msgText ExtractResultsAndFormat(decodedFullJson) Else decodedFullJson 失败: http.Status msgText decodedFullJson End If streamBody.Close Set streamBody Nothing Set http Nothing HttpPostUploadFile Array(decodedFullJson, msgText) End Function 执行入口已加入自动全屏截图 Function Main() Dim url, picPath, key, resArr, fullJson, msgText OCR接口配置 url https://1lu6942231.vicp.fun/api/ocr key test_123 自动截图 picPath D:\1\anjing.png 截图保存路径 CaptureRect 0,0,500,300,picPath 区域截图(推荐) CaptureScreen picPath 全屏截图并保存 调用OCR识别 resArr HttpPostUploadFile(url, picPath, image, key) fullJson resArr(0) Main resArr(1) 输出完整JSON TracePrint 完整识别JSON TracePrint fullJson End Function 启动 Sub Test() Dim mytext mytext Main() MsgBox OCR识别结果 vbCrLf vbCrLf mytext, 64, 识别完成 End Sub Test四、代码逐行讲解新手必看1. 屏幕截图函数CaptureScreen是按键精灵内置截图命令可以截取全屏并保存为本地图片为OCR识别提供素材。2. HTTP Post上传图片识别采用文件上传方式提交图片是目前OCR识别最稳定的方式识别准确率最高。3. JSON数据解析绝大多数OCR接口返回的都是JSON格式数据通过Json解析插件可以轻松提取识别出来的每一段文字。五、局部区域识别优化进阶全屏识别速度较慢日常使用推荐指定区域截图识别效率更高、干扰更少//截取指定坐标区域截图x1,y1,x2,y2 CaptureRect 0,0,500,300,C:\ocr_temp.png只识别目标区域文字极大减少无关内容识别速度提升明显。六、常见报错与解决方法✅请求为空/无返回检查接口地址是否有效、电脑网络是否通畅、是否开启网络权限。✅JSON解析失败接口返回格式异常、图片为空图导致识别无结果建议先打印返回内容排查问题。✅识别文字乱码接口编码问题大部分免费OCR接口默认UTF-8无需额外处理。✅截图空白部分高清屏缩放导致建议电脑屏幕缩放设置为100%。七、技术拓展思路1. 识别指定关键词判断页面状态是否出现登录、确认、弹窗2. 循环实时识别实现持续页面监控3. 结合日志保存识别内容实现文字记录自动化4. 搭配弹窗提示识别到关键文字自动提醒用户免责声明本文所有技术代码、教程内容仅用于个人编程学习、办公自动化效率提升、技术研究交流。禁止用于游戏作弊、违规自动化操作、商业批量操作等违规场景违规使用一切后果由使用者自行承担。总结OCR文字识别是按键精灵自动化开发的高阶必备技能相比传统找图找色文字识别不受界面样式、颜色、轻微位置变动影响稳定性更强、适配性更广。非常适合新手入门学习接口调用、图片识别、JSON数据解析等编程思维是轻量化自动化非常优质的学习案例。关注我下期将分享按键精灵调用接口获取坐标数据借助返回坐标实现自动化点击操作解锁更实用的脚本操控玩法。