自动化中经常会碰到“界面上明明看得到文字,但控件和 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
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。