ms-vite-plugin 1.4.49 → 1.4.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/build.js +1 -1
  2. package/dist/cli.js +1 -1
  3. package/dist/mcp/doc-tools.js +1 -1
  4. package/dist/mcp/docs-service.js +1 -1
  5. package/dist/mcp/types.d.ts +1 -1
  6. package/dist/mcp/types.js +1 -1
  7. package/dist/project.js +1 -1
  8. package/docs/AGENTS.md +3 -2
  9. package/docs/SKILL.md +2 -1
  10. package/docs/apilua/action.md +1013 -0
  11. package/docs/apilua/appleocr.md +281 -0
  12. package/docs/apilua/cloud.md +183 -0
  13. package/docs/apilua/config.md +181 -0
  14. package/docs/apilua/cryptoUtils.md +253 -0
  15. package/docs/apilua/device.md +485 -0
  16. package/docs/apilua/dotocr.md +230 -0
  17. package/docs/apilua/file.md +554 -0
  18. package/docs/apilua/global.md +654 -0
  19. package/docs/apilua/hid.md +1126 -0
  20. package/docs/apilua/hotUpdate.md +167 -0
  21. package/docs/apilua/http.md +427 -0
  22. package/docs/apilua/image.md +1177 -0
  23. package/docs/apilua/ime.md +283 -0
  24. package/docs/apilua/logger.md +294 -0
  25. package/docs/apilua/media.md +283 -0
  26. package/docs/apilua/mysql.md +445 -0
  27. package/docs/apilua/netCard.md +224 -0
  28. package/docs/apilua/node.md +264 -0
  29. package/docs/apilua/opencv.md +870 -0
  30. package/docs/apilua/paddleocr.md +324 -0
  31. package/docs/apilua/pip.md +359 -0
  32. package/docs/apilua/system.md +686 -0
  33. package/docs/apilua/tomatoocr.md +461 -0
  34. package/docs/apilua/tts.md +330 -0
  35. package/docs/apilua/ui.md +1033 -0
  36. package/docs/apilua/utils.md +222 -0
  37. package/docs/apilua/yolo.md +324 -0
  38. package/docs/apilua/yolocls.md +276 -0
  39. package/docs/mcp-agent-description.md +5 -4
  40. package/docs/quick/vscode/createProject.md +84 -0
  41. package/docs/quick/vscode/packProject.md +17 -0
  42. package/package.json +2 -1
@@ -0,0 +1,485 @@
1
+ # 设备模块 (Device)
2
+
3
+ 设备模块提供了获取设备信息和设备操作的功能,包括电池信息、设备标识、屏幕信息、系统信息等。
4
+
5
+ ## 电池信息
6
+
7
+ ### getBatteryInfo - 获取设备的电池信息。
8
+
9
+ ```lua
10
+ ---@return any
11
+ function getBatteryInfo() end
12
+ ```
13
+
14
+ **返回值:**
15
+
16
+ | 参数名 | 类型 | 描述 |
17
+ | ------------ | ------- | ----------------------- |
18
+ | `level` | number | 电池电量百分比(0-100) |
19
+ | `isCharging` | boolean | 是否正在充电 |
20
+
21
+ **示例:**
22
+
23
+ ```lua
24
+ local device = require("device")
25
+ -- 获取电池信息
26
+ local battery = device.getBatteryInfo()
27
+ print("电池电量: " .. tostring(battery.level) .. "%")
28
+ print("充电状态: " .. tostring(battery.(isCharging) and "充电中" or "未充电"))
29
+ ```
30
+
31
+ ## 存储空间信息
32
+
33
+ ### getStorageSpace - 获取设备存储空间信息。
34
+
35
+ ```lua
36
+ ---@return any
37
+ function getStorageSpace() end
38
+ ```
39
+
40
+ **返回值:**
41
+
42
+ | 参数名 | 类型 | 描述 |
43
+ | ------- | ------ | --------------------------------------- |
44
+ | `total` | number | 总存储空间(单位 GB,按 10 进制计算) |
45
+ | `free` | number | 剩余可用空间(单位 GB,按 10 进制计算) |
46
+ | `unit` | string | 单位,固定返回 `"GB"` |
47
+
48
+ **示例:**
49
+
50
+ ```lua
51
+ local device = require("device")
52
+ local storage = device.getStorageSpace()
53
+ print("总存储: " .. tostring(storage.total) .. tostring(storage.unit))
54
+ print("剩余存储: " .. tostring(storage.free) .. tostring(storage.unit))
55
+ ```
56
+
57
+ ## 设备标识信息
58
+
59
+ ### getDeviceID - 获取设备的唯一标识符(ID)。
60
+
61
+ **注意事项:**
62
+
63
+ - 这个 ID 卸载重装 APP 后会改变。
64
+ - 更新 APP 后,不会改变。
65
+
66
+ ```lua
67
+ ---@return string
68
+ function getDeviceID() end
69
+ ```
70
+
71
+ **返回值:**
72
+
73
+ | 类型 | 描述 |
74
+ | ------ | ---------------- |
75
+ | string | 设备的唯一标识符 |
76
+
77
+ **示例:**
78
+
79
+ ```lua
80
+ local device = require("device")
81
+ -- 获取设备ID
82
+ local uuid = device.getDeviceID()
83
+ print("设备ID = " .. tostring(uuid))
84
+ ```
85
+
86
+ ### getServerDeviceId - 获取服务器设备 ID。
87
+
88
+ **注意事项:**
89
+
90
+ - 这个 ID 卸载重装后,只要签名没变,就不会改变。
91
+ - 如果要取唯一 ID 建议使用这个。
92
+
93
+ ```lua
94
+ ---@return string
95
+ function getServerDeviceId() end
96
+ ```
97
+
98
+ **返回值:**
99
+
100
+ | 类型 | 描述 |
101
+ | -------- | ------------------- |
102
+ | `string` | 服务器分配的设备 ID |
103
+
104
+ **示例:**
105
+
106
+ ```lua
107
+ local device = require("device")
108
+ -- 获取服务器设备ID
109
+ local serverDeviceId = device.getServerDeviceId()
110
+ print("服务器设备ID = " .. tostring(serverDeviceId))
111
+ ```
112
+
113
+ ### getECID - 获取设备 ECID。
114
+
115
+ ```lua
116
+ ---@return string
117
+ function getECID() end
118
+ ```
119
+
120
+ **返回值:**
121
+
122
+ | 类型 | 描述 |
123
+ | -------- | ---------------------------- |
124
+ | `string` | ECID 字符串 设备的唯一标识符 |
125
+
126
+ **示例:**
127
+
128
+ ```lua
129
+ local device = require("device")
130
+ -- 获取ECID
131
+ local ecid = device.getECID()
132
+ print("ECID = " .. tostring(ecid))
133
+ ```
134
+
135
+ ### getUDID - 获取设备 UDID。
136
+
137
+ ```lua
138
+ ---@return string
139
+ function getUDID() end
140
+ ```
141
+
142
+ **返回值:**
143
+
144
+ | 类型 | 描述 |
145
+ | -------- | ---------------------------- |
146
+ | `string` | UDID 字符串 设备的唯一标识符 |
147
+
148
+ **示例:**
149
+
150
+ ```lua
151
+ local device = require("device")
152
+ -- 获取UDID
153
+ local udid = device.getUDID()
154
+ print("UDID = " .. tostring(udid))
155
+ ```
156
+
157
+ ### getDeviceName - 获取设备名称。
158
+
159
+ ```lua
160
+ ---@return string
161
+ function getDeviceName() end
162
+ ```
163
+
164
+ **返回值:**
165
+
166
+ | 类型 | 描述 |
167
+ | -------- | -------- |
168
+ | `string` | 设备名称 |
169
+
170
+ **示例:**
171
+
172
+ ```lua
173
+ local device = require("device")
174
+ -- 获取设备名称
175
+ local deviceName = device.getDeviceName()
176
+ print("设备名称: " .. tostring(deviceName))
177
+ ```
178
+
179
+ ### getDeviceModel - 获取设备型号。
180
+
181
+ ```lua
182
+ ---@return string
183
+ function getDeviceModel() end
184
+ ```
185
+
186
+ **返回值:**
187
+
188
+ | 类型 | 描述 |
189
+ | -------- | -------- |
190
+ | `string` | 设备型号 |
191
+
192
+ **示例:**
193
+
194
+ ```lua
195
+ local device = require("device")
196
+ -- 获取设备型号
197
+ local model = device.getDeviceModel()
198
+ print("设备型号: " .. tostring(model))
199
+ ```
200
+
201
+ ## 屏幕信息
202
+
203
+ ### getScreenSize - 获取屏幕尺寸(缩放后的)。
204
+
205
+ **注意事项:**
206
+
207
+ - 该方法返回的屏幕尺寸是根据当前设备的屏幕分辨率除以缩放比例计算得到的。
208
+ - 注意该方法只会返回竖屏分辨率。
209
+
210
+ ```lua
211
+ ---@return any
212
+ function getScreenSize() end
213
+ ```
214
+
215
+ **返回值:**
216
+
217
+ | 参数名 | 类型 | 描述 |
218
+ | -------- | ------ | ---------------- |
219
+ | `width` | number | 屏幕宽度(像素) |
220
+ | `height` | number | 屏幕高度(像素) |
221
+
222
+ **示例:**
223
+
224
+ ```lua
225
+ local device = require("device")
226
+ -- 获取屏幕尺寸
227
+ local screenSize = device.getScreenSize()
228
+ print("屏幕尺寸: " .. tostring(screenSize.width) .. " x " .. tostring(screenSize.height))
229
+ ```
230
+
231
+ ### getScreenRealSize - 获取屏幕实际尺寸。
232
+
233
+ **注意事项:**
234
+
235
+ - 该方法返回的屏幕尺寸是根据当前设备的屏幕实际分辨率。
236
+ - 注意该方法只会返回竖屏分辨率。
237
+
238
+ ```lua
239
+ ---@return any
240
+ function getScreenRealSize() end
241
+ ```
242
+
243
+ **返回值:**
244
+
245
+ | 参数名 | 类型 | 描述 |
246
+ | -------- | ------ | ---------------- |
247
+ | `width` | number | 屏幕宽度(像素) |
248
+ | `height` | number | 屏幕高度(像素) |
249
+
250
+ **示例:**
251
+
252
+ ```lua
253
+ local device = require("device")
254
+ -- 获取屏幕实际尺寸
255
+ local screenRealSize = device.getScreenRealSize()
256
+ print("屏幕实际尺寸: " .. tostring(screenRealSize.width) .. " x " .. tostring(screenRealSize.height))
257
+ ```
258
+
259
+ ### getScreenScale - 获取屏幕缩放比例。
260
+
261
+ ```lua
262
+ ---@return number
263
+ function getScreenScale() end
264
+ ```
265
+
266
+ **返回值:**
267
+
268
+ | 类型 | 描述 |
269
+ | -------- | ------------ |
270
+ | `number` | 屏幕缩放比例 |
271
+
272
+ **示例:**
273
+
274
+ ```lua
275
+ local device = require("device")
276
+ -- 获取屏幕缩放比例
277
+ local scale = device.getScreenScale()
278
+ print("屏幕缩放比例: " .. tostring(scale))
279
+ ```
280
+
281
+ ### getScreenBrightness - 获取屏幕亮度。
282
+
283
+ ```lua
284
+ ---@return number
285
+ function getScreenBrightness() end
286
+ ```
287
+
288
+ **返回值:**
289
+
290
+ | 类型 | 描述 |
291
+ | -------- | ------------------------ |
292
+ | `number` | 屏幕亮度,范围 `0.0-1.0` |
293
+
294
+ **示例:**
295
+
296
+ ```lua
297
+ local device = require("device")
298
+ -- 获取屏幕亮度
299
+ local brightness = device.getScreenBrightness()
300
+ print("屏幕亮度: " .. tostring(brightness))
301
+ ```
302
+
303
+ ### setScreenBrightness - 设置屏幕亮度。
304
+
305
+ 设置设备屏幕亮度,亮度范围为 `0.0-1.0`。
306
+
307
+ ```lua
308
+ ---@param brightness number
309
+ ---@return boolean
310
+ function setScreenBrightness(brightness) end
311
+ ```
312
+
313
+ **参数说明:**
314
+
315
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
316
+ | ------------ | -------- | -------- | ------ | ---------------------------- |
317
+ | `brightness` | `number` | 是 | - | 目标屏幕亮度,范围 `0.0-1.0` |
318
+
319
+ **返回值:**
320
+
321
+ | 类型 | 描述 |
322
+ | --------- | ------------ |
323
+ | `boolean` | 是否设置成功 |
324
+
325
+ **示例:**
326
+
327
+ ```lua
328
+ local device = require("device")
329
+ -- 设置屏幕亮度到 50%
330
+ device.setScreenBrightness(0.5)
331
+ ```
332
+
333
+ ### getVolume - 获取系统音量。
334
+
335
+ ```lua
336
+ ---@return number
337
+ function getVolume() end
338
+ ```
339
+
340
+ **返回值:**
341
+
342
+ | 类型 | 描述 |
343
+ | -------- | ------------------------ |
344
+ | `number` | 系统音量,范围 `0.0-1.0` |
345
+
346
+ **示例:**
347
+
348
+ ```lua
349
+ local device = require("device")
350
+ -- 获取系统音量
351
+ local volume = device.getVolume()
352
+ print("系统音量: " .. tostring(volume))
353
+ ```
354
+
355
+ ### setVolume - 设置系统音量。
356
+
357
+ 设置系统音量,音量范围为 `0.0-1.0`。
358
+
359
+ ```lua
360
+ ---@param volume number
361
+ ---@return boolean
362
+ function setVolume(volume) end
363
+ ```
364
+
365
+ **参数说明:**
366
+
367
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
368
+ | -------- | -------- | -------- | ------ | ---------------------------- |
369
+ | `volume` | `number` | 是 | - | 目标系统音量,范围 `0.0-1.0` |
370
+
371
+ **返回值:**
372
+
373
+ | 类型 | 描述 |
374
+ | --------- | ------------ |
375
+ | `boolean` | 是否设置成功 |
376
+
377
+ **示例:**
378
+
379
+ ```lua
380
+ local device = require("device")
381
+ -- 设置系统音量到 50%
382
+ device.setVolume(0.5)
383
+ ```
384
+
385
+ ### getOrientation - 获取屏幕方向。
386
+
387
+ **注意事项**
388
+
389
+ - 该方法返回的方向,是靠截屏方法来更新的,如果没有截屏,该方法返回的方向可能是不准确的。
390
+ - 该方法取到的方向可能不准,建议使用截屏,靠截屏的图片宽高来确定方向
391
+
392
+ ```lua
393
+ ---@return string
394
+ function getOrientation() end
395
+ ```
396
+
397
+ **返回值:**
398
+
399
+ | 类型 | 描述 |
400
+ | -------- | ------------------------------------------------------- |
401
+ | `string` | 设备方向,`"PORTRAIT"` 竖屏模式,`"LANDSCAPE"` 横屏模式 |
402
+
403
+ **示例:**
404
+
405
+ ```lua
406
+ local device = require("device")
407
+ -- 获取屏幕方向
408
+ local orientation = device.getOrientation()
409
+ print("屏幕方向: " .. tostring(orientation))
410
+ ```
411
+
412
+ ## 系统信息
413
+
414
+ ### getOSVersion - 获取操作系统版本。
415
+
416
+ ```lua
417
+ ---@return string
418
+ function getOSVersion() end
419
+ ```
420
+
421
+ **返回值:**
422
+
423
+ | 类型 | 描述 |
424
+ | -------- | -------------------------- |
425
+ | `string` | 系统版本号(如 "16.7.11") |
426
+
427
+ **示例:**
428
+
429
+ ```lua
430
+ local device = require("device")
431
+ -- 获取系统版本
432
+ local osVersion = device.getOSVersion()
433
+ print("系统版本: iOS " .. tostring(osVersion))
434
+ ```
435
+
436
+ ### getLanIp - 获取设备的局域网 IP 地址。
437
+
438
+ ```lua
439
+ ---@return string
440
+ function getLanIp() end
441
+ ```
442
+
443
+ **返回值:**
444
+
445
+ | 类型 | 描述 |
446
+ | -------- | ------------------------------------ |
447
+ | `string` | 局域网 IP 地址(如 "192.168.1.100") |
448
+
449
+ **示例:**
450
+
451
+ ```lua
452
+ local device = require("device")
453
+ -- 获取局域网IP
454
+ local lanIp = device.getLanIp()
455
+ print("局域网IP = " .. tostring(lanIp))
456
+ ```
457
+
458
+ ## 设备操作
459
+
460
+ ### vibrate - 控制设备振动。
461
+
462
+ ```lua
463
+ ---@param duration number
464
+ ---@param intensity number
465
+ function vibrate(duration, intensity) end
466
+ ```
467
+
468
+ **参数说明:**
469
+
470
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
471
+ | ----------- | ------ | -------- | ------ | ---------------------------------------------- |
472
+ | `duration` | number | 是 | - | 振动持续时间,单位毫秒 |
473
+ | `intensity` | number | 是 | - | 振动强度,范围 0.0-1.0,0.0 为最弱,1.0 为最强 |
474
+
475
+ **示例:**
476
+
477
+ ```lua
478
+ local device = require("device")
479
+ -- 基础振动
480
+ device.vibrate(500, 0.5); -- 振动500ms,中等强度
481
+ -- 不同强度的振动
482
+ device.vibrate(200, 0.2); -- 轻微振动
483
+ device.vibrate(300, 0.8); -- 强烈振动
484
+ device.vibrate(100, 1.0); -- 最强振动
485
+ ```
@@ -0,0 +1,230 @@
1
+ # 点阵 OCR 模块 (dotOcr)
2
+
3
+ 点阵 OCR 模块基于图色工具生成的固定像素点阵字库,提供精确的文字识别与查找功能。字库保存在项目的 `res/fonts` 目录,使用前需先加载字库取得字库 ID,再复用该 ID 进行识别,使用完毕后释放。
4
+
5
+ 点阵模板按照制作时的原始像素尺寸匹配,不会自动缩放到其他分辨率。目标文字的字号、缩放比例或像素形状发生变化时,应制作对应的字库特征。
6
+
7
+ ## 功能概览
8
+
9
+ - **字库管理**: 加载、缓存和释放项目字库
10
+ - **文字识别**: 返回按阅读顺序排列的识别结果数组
11
+ - **文本查找**: 先识别再按行定位目标串,返回命中位置的绝对坐标
12
+ - **多源输入**: 支持屏幕截图、图片文件、URL 或 imageId
13
+ - **区域识别**: 支持指定区域的精确文字识别
14
+ - **绝对坐标**: 裁剪区域内的结果会映射回原图或全屏坐标
15
+ - **资源控制**: 完整的字库生命周期管理
16
+
17
+ ## 数据类型
18
+
19
+ ### OCRChar
20
+
21
+ 识别结果的数据结构,包含完整的文本信息和位置数据:
22
+
23
+ ```lua
24
+ ---@class OCRChar
25
+ ---@field text string
26
+ ---@field confidence number
27
+ ---@field x number
28
+ ---@field y number
29
+ ---@field ex number
30
+ ---@field ey number
31
+ ---@field width number
32
+ ---@field height number
33
+ ---@field centerX number
34
+ ---@field centerY number
35
+ ```
36
+
37
+ **数据结构说明:**
38
+
39
+ | 字段 | 类型 | 描述 |
40
+ | ------------------ | ------ | -------------------------------------------------------- |
41
+ | `text` | string | 识别出的文本内容;查找结果中为命中的目标字符串 |
42
+ | `confidence` | number | 识别置信度,范围 0-1,值越高表示识别越准确 |
43
+ | `x, y, ex, ey` | number | 文本区域的坐标,分别为左上角和右下角的 x、y 绝对坐标 |
44
+ | `width, height` | number | 文本区域的宽度和高度 |
45
+ | `centerX, centerY` | number | 文本区域的中心点绝对坐标 |
46
+
47
+ ## API 参考
48
+
49
+ ### 字库管理
50
+
51
+ #### loadFont - 加载并缓存点阵字库。
52
+
53
+ 加载字库是使用点阵识别功能的前提。建议在脚本初始化时加载一次并保存 `fontId`,后续识别时复用,不要每次识别都重新加载。
54
+
55
+ ```lua
56
+ ---@param fontPath string
57
+ ---@return string | nil
58
+ function loadFont(fontPath) end
59
+ ```
60
+
61
+ **参数:**
62
+
63
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
64
+ | ---------- | ------ | -------- | ------ | --------------------------------------------------------------------------- |
65
+ | `fontPath` | string | 是 | | 资源路径,运行时会自动处理 `res` 目录解析;常见写法如 `/fonts/default.json` |
66
+
67
+ **返回值:**
68
+
69
+ | 类型 | 描述 |
70
+ | ---------------- | ----------------------------------------- |
71
+ | `string \| nil` | 加载成功返回字库 ID 字符串,失败返回 nil |
72
+
73
+ **示例:**
74
+
75
+ ```lua
76
+ local dotocr = require("dotocr")
77
+ local fontId = dotocr.loadFont("/fonts/default.json")
78
+ if not fontId then
79
+ print("字库加载失败")
80
+ return
81
+ end
82
+ print("字库加载成功: " .. tostring(fontId))
83
+ ```
84
+
85
+ ### 文字识别
86
+
87
+ #### recognizeAbs - 执行点阵 OCR 识别,并将结果坐标映射为原图/全屏绝对坐标。
88
+
89
+ 传入裁剪区域时,返回坐标会映射回原图或全屏坐标,可直接用于点击。结果按行从上到下、同一行从左到右排列。颜色按字库各字自带的前景色/偏色匹配,无需额外传色。
90
+
91
+ ```lua
92
+ ---@param fontId string
93
+ ---@param input string
94
+ ---@param x number?
95
+ ---@param y number?
96
+ ---@param ex number?
97
+ ---@param ey number?
98
+ ---@param confidenceThreshold number?
99
+ ---@return OCRChar[]
100
+ function recognizeAbs(fontId, input, x, y, ex, ey, confidenceThreshold) end
101
+ ```
102
+
103
+ **参数:**
104
+
105
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
106
+ | --------------------- | ------ | -------- | ------ | --------------------------------------------------------------------------------------------- |
107
+ | `fontId` | string | 是 | | 字库 ID,通过 `loadFont` 获取 |
108
+ | `input` | string | 是 | | 输入源,支持 `"screen"`、图片文件路径、URL 或 imageId |
109
+ | `x` | number | 否 | 0 | 裁剪区域左上角 x 坐标;全屏识别传 0 |
110
+ | `y` | number | 否 | 0 | 裁剪区域左上角 y 坐标;全屏识别传 0 |
111
+ | `ex` | number | 否 | 0 | 裁剪区域右下角 x 坐标;全屏识别传 0;为 0 时使用图像宽度 |
112
+ | `ey` | number | 否 | 0 | 裁剪区域右下角 y 坐标;全屏识别传 0;为 0 时使用图像高度 |
113
+ | `confidenceThreshold` | number | 否 | 0.95 | 相似度下限;`<=0` 时按 `0.95`;低于阈值的字符会被过滤;`>0.95` 时要求像素完全一致 |
114
+
115
+ **返回值:**
116
+
117
+ | 类型 | 描述 |
118
+ | ----------- | ---------------------------------------------- |
119
+ | `OCRChar[]` | 识别结果数组,坐标为原图或全屏绝对坐标 |
120
+
121
+ **示例:**
122
+
123
+ ```lua
124
+ local dotocr = require("dotocr")
125
+ local chars = dotocr.recognizeAbs(fontId, "screen", 100, 200, 600, 280, 0.95)
126
+ print("识别数量: " .. tostring(#chars))
127
+ if #chars > 0 then
128
+ print("文本: " .. tostring(chars[1].text) .. ", 坐标: (" .. tostring(chars[1].x) .. ", " .. tostring(chars[1].y) .. ")")
129
+ action.click(chars[1].centerX, chars[1].centerY)
130
+ end
131
+ ```
132
+
133
+ ### 文本查找
134
+
135
+ #### findTextAbs - 查找目标文本,并将结果坐标映射为原图/全屏绝对坐标。
136
+
137
+ 先识别再按行定位目标串。传入裁剪区域时,返回坐标会映射回原图或全屏坐标,可直接用于点击。每个目标最多返回一次命中(最先匹配到的行),每项的 `text` 是目标字符串。
138
+
139
+ ```lua
140
+ ---@param fontId string
141
+ ---@param input string
142
+ ---@param targetTexts string[]
143
+ ---@param x number?
144
+ ---@param y number?
145
+ ---@param ex number?
146
+ ---@param ey number?
147
+ ---@param confidenceThreshold number?
148
+ ---@param exactMatch boolean?
149
+ ---@return OCRChar[]
150
+ function findTextAbs(fontId, input, targetTexts, x, y, ex, ey, confidenceThreshold, exactMatch) end
151
+ ```
152
+
153
+ **参数:**
154
+
155
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
156
+ | --------------------- | -------- | -------- | ------ | --------------------------------------------------------------------- |
157
+ | `fontId` | string | 是 | | 字库 ID,通过 `loadFont` 获取 |
158
+ | `input` | string | 是 | | 输入源,支持 `"screen"`、图片文件路径、URL 或 imageId |
159
+ | `targetTexts` | string[] | 是 | | 要查找的字符串数组,例如 `["商店", "背包"]` |
160
+ | `x` | number | 否 | 0 | 裁剪区域左上角 x 坐标;全屏识别传 0 |
161
+ | `y` | number | 否 | 0 | 裁剪区域左上角 y 坐标;全屏识别传 0 |
162
+ | `ex` | number | 否 | 0 | 裁剪区域右下角 x 坐标;全屏识别传 0;为 0 时使用图像宽度 |
163
+ | `ey` | number | 否 | 0 | 裁剪区域右下角 y 坐标;全屏识别传 0;为 0 时使用图像高度 |
164
+ | `confidenceThreshold` | number | 否 | 0.95 | 单字符识别相似度下限;语义同 `recognizeAbs` |
165
+ | `exactMatch` | boolean | 否 | false | `false` 为行内子串包含匹配;`true` 要求某一整行文本完全等于目标字符串 |
166
+
167
+ **返回值:**
168
+
169
+ | 类型 | 描述 |
170
+ | ----------- | ------------------------------------------------------ |
171
+ | `OCRChar[]` | 命中结果数组,坐标为原图或全屏绝对坐标 |
172
+
173
+ **示例:**
174
+
175
+ ```lua
176
+ local dotocr = require("dotocr")
177
+ local hits = dotocr.findTextAbs(
178
+ fontId,
179
+ "screen",
180
+ { "商店", "背包" },
181
+ 100,
182
+ 200,
183
+ 600,
184
+ 280,
185
+ 0.95,
186
+ false,
187
+ )
188
+ if #hits > 0 then
189
+ action.click(hits[1].centerX, hits[1].centerY)
190
+ end
191
+ ```
192
+
193
+ ### 资源管理
194
+
195
+ #### free - 释放指定字库的资源。
196
+
197
+ ```lua
198
+ ---@param fontId string
199
+ function free(fontId) end
200
+ ```
201
+
202
+ **参数:**
203
+
204
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
205
+ | -------- | ------ | -------- | ------ | --------------- |
206
+ | `fontId` | string | 是 | | 要释放的字库 ID |
207
+
208
+ **示例:**
209
+
210
+ ```lua
211
+ local dotocr = require("dotocr")
212
+ if fontId then
213
+ dotocr.free(fontId)
214
+ print("字库 " .. tostring(fontId) .. " 资源已释放")
215
+ end
216
+ ```
217
+
218
+ #### freeAll - 释放全部已加载点阵字库的资源。
219
+
220
+ ```lua
221
+ function freeAll() end
222
+ ```
223
+
224
+ **示例:**
225
+
226
+ ```lua
227
+ local dotocr = require("dotocr")
228
+ dotocr.freeAll()
229
+ print("所有点阵字库资源已释放")
230
+ ```