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.
- package/dist/build.js +1 -1
- package/dist/cli.js +1 -1
- package/dist/mcp/doc-tools.js +1 -1
- package/dist/mcp/docs-service.js +1 -1
- package/dist/mcp/types.d.ts +1 -1
- package/dist/mcp/types.js +1 -1
- package/dist/project.js +1 -1
- package/docs/AGENTS.md +3 -2
- package/docs/SKILL.md +2 -1
- package/docs/apilua/action.md +1013 -0
- package/docs/apilua/appleocr.md +281 -0
- package/docs/apilua/cloud.md +183 -0
- package/docs/apilua/config.md +181 -0
- package/docs/apilua/cryptoUtils.md +253 -0
- package/docs/apilua/device.md +485 -0
- package/docs/apilua/dotocr.md +230 -0
- package/docs/apilua/file.md +554 -0
- package/docs/apilua/global.md +654 -0
- package/docs/apilua/hid.md +1126 -0
- package/docs/apilua/hotUpdate.md +167 -0
- package/docs/apilua/http.md +427 -0
- package/docs/apilua/image.md +1177 -0
- package/docs/apilua/ime.md +283 -0
- package/docs/apilua/logger.md +294 -0
- package/docs/apilua/media.md +283 -0
- package/docs/apilua/mysql.md +445 -0
- package/docs/apilua/netCard.md +224 -0
- package/docs/apilua/node.md +264 -0
- package/docs/apilua/opencv.md +870 -0
- package/docs/apilua/paddleocr.md +324 -0
- package/docs/apilua/pip.md +359 -0
- package/docs/apilua/system.md +686 -0
- package/docs/apilua/tomatoocr.md +461 -0
- package/docs/apilua/tts.md +330 -0
- package/docs/apilua/ui.md +1033 -0
- package/docs/apilua/utils.md +222 -0
- package/docs/apilua/yolo.md +324 -0
- package/docs/apilua/yolocls.md +276 -0
- package/docs/mcp-agent-description.md +5 -4
- package/docs/quick/vscode/createProject.md +84 -0
- package/docs/quick/vscode/packProject.md +17 -0
- 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
|
+
```
|