自动化中经常会碰到“界面上明明看得到文字,但控件和 UIA 都取不到”的情况,例如远程桌面画面、游戏窗口、扫描件、图片报表和自绘界面。这时需要的不是继续发按键,而是先把图片里的文字识别出来。
这套 RapidOCR 封装面向 AutoHotkey v1,底层使用 RapidOcrOnnx、PaddleOCR 模型和 ONNX Runtime 完成本地识别。图片和模型都在本机处理,不依赖在线 OCR 接口,也不需要把截图上传到第三方服务。站内已有的 RapidOcr v2 小模型示例面向 v2,本篇整理的是 v1 调用封装和配套资源。
可以从哪些数据开始识别
- ocr_from_file:直接识别图片文件;
- ocr_from_binary:识别已经读入内存的图片二进制;
- ocr_from_bitmapdata:处理位图数据;
- ocr_from_mat:衔接已有的图像矩阵流程;
- 可只返回拼接后的文本,也可返回文本块、坐标、置信度和角度等完整结果。

识别参数怎么用
OcrParam 可以控制图片边距、最大边长、文本框阈值、展开比例和文字方向检测。新手先使用默认值即可,遇到小字、倾斜文字或背景复杂时,再逐项调整。阈值不是越低越好,过低会把纹理和图标也当成文字。
需要根据坐标点击文字时,应请求完整结果,而不是只取纯文本。识别框坐标可以继续用于画框、排序、筛选区域,或者和 WinCapture、GDI+ 截图流程组合。
运行前必须放齐的文件
目录中要有与 AHK 位数匹配的 RapidOcrOnnx.dll,还要保留检测模型、识别模型、方向分类模型和 ppocr_keys_v1.txt 字典。32 位 AHK 只能加载 32 位 DLL,64 位 AHK 只能加载 64 位 DLL。首次初始化模型会比普通字符串处理慢,建议在脚本启动阶段创建 OCR 对象并重复使用。
下载包里还整理了完整展示报告示例和 OCR Visualization Tool,可把识别文本块、坐标和置信度做成更直观的结果。文章里先放一个不含大型 HTML/JS 的基础 demo,方便新手确认环境是否正常。
本文移植自 thqby 的 ahk2_lib,由本站适配为 AutoHotkey v1 版本,原作者及项目版权归其所有。
源项目地址:https://github.com/thqby/ahk2_lib
打包库和示例的下载地址:
demo代码片段展示:
#Requires AutoHotkey v1.1
#NoEnv
#SingleInstance Force
SetBatchLines, -1
SetWorkingDir, %A_ScriptDir%
#Include <RapidOcr_v1>
try
{
ocr := new RapidOcr({models: A_ScriptDir "\models", numThread: 2})
param := new RapidOcr.OcrParam({doAngle: 1, mostAngle: 1})
result := ocr.ocr_from_file(A_ScriptDir "\test.jpg", param, true)
msg := "识别文本:`n" result.text
msg .= "`n`n文本块数量:" result.Length()
MsgBox, 64, RapidOcr v1, %msg%
}
catch e
{
MsgBox, 16, RapidOcr v1, % "识别失败:`n" e.Message
}
ExitApp

评论(0)