jokymouse.ocr API
jokymouse.ocr 模块通过 require("jokymouse.ocr") 加载,提供屏幕识字与文字查找能力。
local ocr = require("jokymouse.ocr") 可用函数
| 函数 | 签名 | 说明 |
|---|---|---|
| read | ocr.read(opts?) | 读取整屏或指定区域文字 |
| find_text | ocr.find_text(text, opts?) | 查找指定文字,找到时返回最佳命中行 |
read
local ocr = require("jokymouse.ocr")
local result = ocr.read({
region = { x = 100, y = 120, width = 500, height = 180 }
})
print(result.text)
for _, line in ipairs(result.lines) do
print(line)
end opts
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| region | table | nil | 限定识字区域 |
| trim | boolean | true | 是否去掉每行前后空白,并跳过空行 |
region 结构:
{
x = 100,
y = 120,
width = 500,
height = 180
} 返回结构
{
text = "立即开始\n奖励中心",
lines = {
{
text = "立即开始",
score = 0.98,
x = 320,
y = 540,
width = 88,
height = 24
}
}
} find_text
local ocr = require("jokymouse.ocr")
local hit = ocr.find_text("立即开始", {
region = { x = 100, y = 120, width = 500, height = 180 },
partial = false
})
if hit then
print(hit)
end opts
find_text 继承 read(opts?) 的全部字段,并额外支持:
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| partial | boolean | false | 是否允许包含匹配 |
| case_sensitive | boolean | false | 是否区分大小写 |
返回结构
找到时返回单行结果:
{
text = "立即开始",
score = 0.98,
x = 320,
y = 540,
width = 88,
height = 24
} 未找到时返回 nil。
模型文件
当前运行时默认会在以下位置寻找 OCR 模型目录 ocr/:
- 打包后的 app resources
- 开发态的
src-tauri/resources/ocr - 当前工作目录下的
resources/ocr
当前预期文件名:
PP-OCRv5_mobile_det.mnnPP-OCRv5_mobile_rec.mnnppocr_keys_v5.txt
如果模型未准备好,运行时会直接报出缺失路径和文件名,方便排查。
说明
- 第一版提供读取文字与查找文字能力,不含点击封装。
region强烈推荐和screen.find_image_one(...)配合使用,先缩小区域再 OCR,速度和准确率都会更稳。- 如果未授予屏幕录制权限,截图阶段会直接失败。