ms-vite-plugin 1.4.10 → 1.4.12
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/docs/api/appleocr.md +78 -0
- package/docs/api/global.md +49 -0
- package/docs/api/node.md +3 -0
- package/docs/api/paddleocr.md +63 -11
- package/docs/api/pip.md +191 -11
- package/docs/api/yolo.md +58 -18
- package/docs/api/yolocls.md +272 -0
- package/docs/apicn/appleocr.md +78 -0
- package/docs/apicn/global.md +49 -0
- package/docs/apicn/node.md +6 -0
- package/docs/apicn/paddleocr.md +59 -7
- package/docs/apicn/pip.md +191 -11
- package/docs/apicn/yolo.md +50 -9
- package/docs/apicn/yolocls.md +272 -0
- package/docs/apipython/appleocr.md +75 -0
- package/docs/apipython/g.md +53 -0
- package/docs/apipython/node.md +4 -1
- package/docs/apipython/overview.md +1 -1
- package/docs/apipython/paddleocr.md +54 -4
- package/docs/apipython/pip.md +203 -11
- package/docs/apipython/yolo.md +37 -7
- package/docs/apipython/yolocls.md +269 -0
- package/docs/httpapi/api.md +284 -1
- package/package.json +1 -1
- package/webview/assets/index-C8WE_Bef.js +2 -0
- package/webview/assets/rolldown-runtime-_TIqcEvS.js +1 -0
- package/webview/assets/vendor-modules-lYh5b13U.js +93553 -0
- package/webview/index.html +3 -2
- package/webview/assets/index-CFwoQXO_.js +0 -13
- package/webview/assets/vendor-modules-Oqi8dZEn.js +0 -42198
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
# YOLO 图像分类模块 (YoloCls)
|
|
2
|
+
|
|
3
|
+
YOLO 图像分类模块基于 YOLOv8-cls / YOLO11-cls / YOLO26-cls 分类模型和 NCNN 框架,提供整图分类、区域分类和模型资源管理能力。
|
|
4
|
+
|
|
5
|
+
## 功能概览
|
|
6
|
+
|
|
7
|
+
- **模型管理**: 加载和释放 YOLOv8-cls / YOLO11-cls / YOLO26-cls NCNN 模型
|
|
8
|
+
- **图像分类**: 对屏幕截图、图片文件、HTTP 图片或图片 ID 执行整图分类
|
|
9
|
+
- **区域分类**: 先裁剪指定区域,再对裁剪结果执行分类
|
|
10
|
+
- **结果处理**: 返回 Ultralytics `Probs` 风格的完整概率、top1、top5 和对应置信度
|
|
11
|
+
- **资源控制**: 支持释放单个模型或释放全部已加载模型
|
|
12
|
+
|
|
13
|
+
## 适用场景
|
|
14
|
+
|
|
15
|
+
- 判断当前屏幕或图片属于哪个业务类别
|
|
16
|
+
- 对截图中的固定区域进行状态识别
|
|
17
|
+
- 对自定义 YOLO-cls 模型导出的 NCNN 模型执行端侧推理
|
|
18
|
+
|
|
19
|
+
## 数据结构
|
|
20
|
+
|
|
21
|
+
### YoloClsProbs
|
|
22
|
+
|
|
23
|
+
YOLO 分类概率结果,字段命名与 Ultralytics `Probs` 保持一致。
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
interface YoloClsProbs {
|
|
27
|
+
data: number[]; // 所有类别概率,下标即类别 ID
|
|
28
|
+
top1: number | null; // 概率最高的类别 ID
|
|
29
|
+
top5: number[]; // 概率最高的 5 个类别 ID
|
|
30
|
+
top1conf: number | null; // top1 对应的概率
|
|
31
|
+
top5conf: number[]; // top5 对应的概率
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**字段说明:**
|
|
36
|
+
|
|
37
|
+
| 字段名 | 类型 | 描述 |
|
|
38
|
+
| ---------- | ---------------- | ---------------------------------------------------------- |
|
|
39
|
+
| `data` | `number[]` | 所有类别概率数组,下标即类别 ID |
|
|
40
|
+
| `top1` | `number \| null` | 概率最高的类别 ID;分类失败时为 `null` |
|
|
41
|
+
| `top5` | `number[]` | 概率最高的 5 个类别 ID,按概率从高到低排序 |
|
|
42
|
+
| `top1conf` | `number \| null` | `top1` 对应的概率;分类失败时为 `null` |
|
|
43
|
+
| `top5conf` | `number[]` | `top5` 对应的概率,顺序与 `top5` 一致 |
|
|
44
|
+
|
|
45
|
+
**结果说明:**
|
|
46
|
+
|
|
47
|
+
- `top1` 等于 `top5[0]`,`top1conf` 等于 `data[top1]`。
|
|
48
|
+
- 当模型类别数少于 5 时,`top5` 和 `top5conf` 的长度会小于 5。
|
|
49
|
+
- 分类失败时返回空结果:`data`、`top5`、`top5conf` 为空数组,`top1` 和 `top1conf` 为 `null`。
|
|
50
|
+
|
|
51
|
+
## API 参考
|
|
52
|
+
|
|
53
|
+
### 模型管理
|
|
54
|
+
|
|
55
|
+
#### load - 加载 YOLO 分类模型(支持 YOLOv8-cls / YOLO11-cls / YOLO26-cls)
|
|
56
|
+
|
|
57
|
+
加载模型是使用图像分类能力的前提。支持 Ultralytics 官方 YOLOv8-cls、YOLO11-cls、YOLO26-cls 导出的 NCNN 分类模型,常见模型名使用 `-cls` 后缀,例如 `yolov8n-cls`、`yolo11n-cls`、`yolo26n-cls`。
|
|
58
|
+
|
|
59
|
+
```typescript
|
|
60
|
+
function load(
|
|
61
|
+
paramPath: string,
|
|
62
|
+
binPath: string,
|
|
63
|
+
nc?: number,
|
|
64
|
+
useGpu?: boolean
|
|
65
|
+
): string | null;
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**参数:**
|
|
69
|
+
|
|
70
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
71
|
+
| ----------- | ------- | -------- | ------ | -------------------------------------------------- |
|
|
72
|
+
| `paramPath` | string | 是 | | NCNN 模型的 param 文件路径 |
|
|
73
|
+
| `binPath` | string | 是 | | NCNN 模型的 bin 文件路径 |
|
|
74
|
+
| `nc` | number | 否 | 0 | 模型类别数量;传 `0` 或省略时按模型输出自动推断,显式传入但不匹配时分类返回空结果 |
|
|
75
|
+
| `useGpu` | boolean | 否 | false | 是否使用 GPU 推理 |
|
|
76
|
+
|
|
77
|
+
**返回值:**
|
|
78
|
+
|
|
79
|
+
| 类型 | 描述 |
|
|
80
|
+
| ---------------- | ----------------------------------------- |
|
|
81
|
+
| `string \| null` | 加载成功返回模型 ID 字符串,失败返回 null |
|
|
82
|
+
|
|
83
|
+
**示例:**
|
|
84
|
+
|
|
85
|
+
```javascript
|
|
86
|
+
// 模型文件通常放在 res 目录
|
|
87
|
+
const modelId = yoloCls.load(
|
|
88
|
+
"yolo11n_cls_ncnn_model/model.ncnn.param",
|
|
89
|
+
"yolo11n_cls_ncnn_model/model.ncnn.bin",
|
|
90
|
+
1000, // ImageNet 分类模型通常为 1000 类
|
|
91
|
+
false
|
|
92
|
+
);
|
|
93
|
+
|
|
94
|
+
if (modelId) {
|
|
95
|
+
logi(`YOLO 分类模型加载成功,ID: ${modelId}`);
|
|
96
|
+
} else {
|
|
97
|
+
logi("YOLO 分类模型加载失败,请检查模型文件路径和格式");
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### 图像分类
|
|
102
|
+
|
|
103
|
+
#### classify - 对输入图像执行分类
|
|
104
|
+
|
|
105
|
+
对整张输入图像执行分类,返回完整概率数组和 top1/top5 结果。
|
|
106
|
+
|
|
107
|
+
```typescript
|
|
108
|
+
function classify(
|
|
109
|
+
modelId: string,
|
|
110
|
+
img: string,
|
|
111
|
+
targetSize?: number
|
|
112
|
+
): YoloClsProbs;
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
**参数:**
|
|
116
|
+
|
|
117
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
118
|
+
| ------------ | ------ | -------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
119
|
+
| `modelId` | string | 是 | | 模型 ID(通过 `load` 获取) |
|
|
120
|
+
| `img` | string | 是 | | 图像输入源:<br>- `"screen"` - 使用当前屏幕截图<br>- `string` - 图片文件路径或 HTTP 图片地址<br>- `imageId` - 图片 ID(通过 image 模块获取) |
|
|
121
|
+
| `targetSize` | number | 否 | 224 | 分类输入大小,应与模型训练或导出时的输入尺寸一致 |
|
|
122
|
+
|
|
123
|
+
**返回值:**
|
|
124
|
+
|
|
125
|
+
| 类型 | 描述 |
|
|
126
|
+
| -------------- | --------------------------------------------------- |
|
|
127
|
+
| `YoloClsProbs` | Ultralytics `Probs` 风格分类结果,包含 top1/top5 等 |
|
|
128
|
+
|
|
129
|
+
**示例:**
|
|
130
|
+
|
|
131
|
+
```javascript
|
|
132
|
+
const modelId = yoloCls.load(
|
|
133
|
+
"yolo11n_cls_ncnn_model/model.ncnn.param",
|
|
134
|
+
"yolo11n_cls_ncnn_model/model.ncnn.bin",
|
|
135
|
+
1000,
|
|
136
|
+
false
|
|
137
|
+
);
|
|
138
|
+
|
|
139
|
+
if (!modelId) {
|
|
140
|
+
logi("模型加载失败");
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
const probs = yoloCls.classify(
|
|
145
|
+
modelId,
|
|
146
|
+
"screen", // 使用当前屏幕
|
|
147
|
+
224 // 分类模型常用输入尺寸
|
|
148
|
+
);
|
|
149
|
+
|
|
150
|
+
if (probs.top1 !== null) {
|
|
151
|
+
logi(`top1 类别ID: ${probs.top1}`);
|
|
152
|
+
logi(`top1 置信度: ${(probs.top1conf * 100).toFixed(2)}%`);
|
|
153
|
+
} else {
|
|
154
|
+
logi("分类失败或无有效结果");
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
for (let i = 0; i < probs.top5.length; i++) {
|
|
158
|
+
logi(
|
|
159
|
+
`top${i + 1}: 类别ID=${probs.top5[i]}, 置信度=${probs.top5conf[i].toFixed(4)}`
|
|
160
|
+
);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// 如需读取某个类别的原始概率,可直接访问 data[classId]
|
|
164
|
+
const classId = 0;
|
|
165
|
+
if (probs.data.length > classId) {
|
|
166
|
+
logi(`类别 ${classId} 概率: ${probs.data[classId].toFixed(4)}`);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
yoloCls.free(modelId);
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
#### classifyRegion - 对指定区域执行分类
|
|
173
|
+
|
|
174
|
+
先从输入图像中裁剪指定区域,再对裁剪结果执行分类。适合只关心屏幕某个固定区域状态的场景。
|
|
175
|
+
|
|
176
|
+
```typescript
|
|
177
|
+
function classifyRegion(
|
|
178
|
+
modelId: string,
|
|
179
|
+
img: string,
|
|
180
|
+
x?: number,
|
|
181
|
+
y?: number,
|
|
182
|
+
ex?: number,
|
|
183
|
+
ey?: number,
|
|
184
|
+
targetSize?: number
|
|
185
|
+
): YoloClsProbs;
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
**参数:**
|
|
189
|
+
|
|
190
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
191
|
+
| ------------ | ------ | -------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
192
|
+
| `modelId` | string | 是 | | 模型 ID(通过 `load` 获取) |
|
|
193
|
+
| `img` | string | 是 | | 图像输入源:<br>- `"screen"` - 使用当前屏幕截图<br>- `string` - 图片文件路径或 HTTP 图片地址<br>- `imageId` - 图片 ID(通过 image 模块获取) |
|
|
194
|
+
| `x` | number | 否 | 0 | 裁剪区域左上角 x 坐标 |
|
|
195
|
+
| `y` | number | 否 | 0 | 裁剪区域左上角 y 坐标 |
|
|
196
|
+
| `ex` | number | 否 | 0 | 裁剪区域右下角 x 坐标 |
|
|
197
|
+
| `ey` | number | 否 | 0 | 裁剪区域右下角 y 坐标 |
|
|
198
|
+
| `targetSize` | number | 否 | 224 | 分类输入大小,应与模型训练或导出时的输入尺寸一致 |
|
|
199
|
+
|
|
200
|
+
**返回值:**
|
|
201
|
+
|
|
202
|
+
| 类型 | 描述 |
|
|
203
|
+
| -------------- | --------------------------------------------------- |
|
|
204
|
+
| `YoloClsProbs` | Ultralytics `Probs` 风格分类结果,包含 top1/top5 等 |
|
|
205
|
+
|
|
206
|
+
**示例:**
|
|
207
|
+
|
|
208
|
+
```javascript
|
|
209
|
+
const regionProbs = yoloCls.classifyRegion(
|
|
210
|
+
modelId,
|
|
211
|
+
"screen",
|
|
212
|
+
100,
|
|
213
|
+
100,
|
|
214
|
+
500,
|
|
215
|
+
400,
|
|
216
|
+
224
|
|
217
|
+
);
|
|
218
|
+
|
|
219
|
+
if (regionProbs.top1 !== null) {
|
|
220
|
+
logi(
|
|
221
|
+
`区域分类 top1=${regionProbs.top1}, 置信度=${regionProbs.top1conf.toFixed(4)}`
|
|
222
|
+
);
|
|
223
|
+
}
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### 资源管理
|
|
227
|
+
|
|
228
|
+
#### free - 释放指定模型资源
|
|
229
|
+
|
|
230
|
+
释放指定分类模型占用的资源。
|
|
231
|
+
|
|
232
|
+
```typescript
|
|
233
|
+
function free(modelId: string): void;
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
**参数:**
|
|
237
|
+
|
|
238
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
239
|
+
| --------- | ------ | -------- | ------ | --------------- |
|
|
240
|
+
| `modelId` | string | 是 | | 要释放的模型 ID |
|
|
241
|
+
|
|
242
|
+
**示例:**
|
|
243
|
+
|
|
244
|
+
```javascript
|
|
245
|
+
if (modelId) {
|
|
246
|
+
yoloCls.free(modelId);
|
|
247
|
+
logi(`YOLO 分类模型 ${modelId} 资源已释放`);
|
|
248
|
+
}
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
#### freeAll - 释放所有模型资源
|
|
252
|
+
|
|
253
|
+
释放所有已加载的 YOLO 分类模型资源。
|
|
254
|
+
|
|
255
|
+
```typescript
|
|
256
|
+
function freeAll(): void;
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
**示例:**
|
|
260
|
+
|
|
261
|
+
```javascript
|
|
262
|
+
yoloCls.freeAll();
|
|
263
|
+
logi("所有 YOLO 分类模型资源已释放");
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
## 使用注意事项
|
|
267
|
+
|
|
268
|
+
- `targetSize` 默认值为 224,常见 YOLO-cls 模型使用该尺寸;自定义模型请填写训练或导出时使用的输入尺寸。
|
|
269
|
+
- `nc` 传 `0` 或省略时会根据模型输出自动推断类别数量;显式传入但和模型输出不匹配时返回空结果。
|
|
270
|
+
- `classifyRegion` 中 `x/y/ex/ey` 全部为 `0` 时表示不裁剪,直接对整张图分类。
|
|
271
|
+
- 裁剪区域必须位于图像范围内,并且 `ex > x`、`ey > y`。
|
|
272
|
+
- 分类结果中的类别 ID 需要结合训练时的类别列表解释;本模块只返回类别 ID 和概率。
|
package/docs/apicn/appleocr.md
CHANGED
|
@@ -131,6 +131,32 @@ const 屏幕识别结果 = $苹果OCR.识别("screen", 0, 0, 1920, 1080);
|
|
|
131
131
|
logi(`屏幕识别结果: ${JSON.stringify(屏幕识别结果)}`);
|
|
132
132
|
```
|
|
133
133
|
|
|
134
|
+
#### 识别绝对坐标
|
|
135
|
+
|
|
136
|
+
执行 OCR 识别,并将结果坐标映射为原图/全屏绝对坐标。
|
|
137
|
+
|
|
138
|
+
参数与 `识别` 相同。传入裁剪区域时,返回坐标可直接用于全屏点击。
|
|
139
|
+
|
|
140
|
+
```typescript
|
|
141
|
+
function 识别绝对坐标(
|
|
142
|
+
输入源: 字符串,
|
|
143
|
+
图片边界框左上角x坐标?: 数字,
|
|
144
|
+
图片边界框左上角y坐标?: 数字,
|
|
145
|
+
图片边界框右下角x坐标?: 数字,
|
|
146
|
+
图片边界框右下角y坐标?: 数字,
|
|
147
|
+
识别语言数组?: 数组<字符串>,
|
|
148
|
+
): 数组<OCR识别结果>;
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
**示例:**
|
|
152
|
+
|
|
153
|
+
```javascript
|
|
154
|
+
const 绝对坐标结果 = $苹果OCR.识别绝对坐标("screen", 100, 100, 500, 300);
|
|
155
|
+
if (绝对坐标结果.length > 0) {
|
|
156
|
+
$点击(绝对坐标结果[0].centerX, 绝对坐标结果[0].centerY);
|
|
157
|
+
}
|
|
158
|
+
```
|
|
159
|
+
|
|
134
160
|
### 数字识别
|
|
135
161
|
|
|
136
162
|
#### 识别数字
|
|
@@ -179,6 +205,31 @@ $打印信息日志(`识别到 ${数字识别结果.length} 个数字区域`);
|
|
|
179
205
|
});
|
|
180
206
|
```
|
|
181
207
|
|
|
208
|
+
#### 识别数字绝对坐标
|
|
209
|
+
|
|
210
|
+
执行数字 OCR 识别,并将结果坐标映射为原图/全屏绝对坐标。
|
|
211
|
+
|
|
212
|
+
参数与 `识别数字` 相同。传入裁剪区域时,返回坐标可直接用于全屏点击。
|
|
213
|
+
|
|
214
|
+
```typescript
|
|
215
|
+
function 识别数字绝对坐标(
|
|
216
|
+
输入源: 字符串,
|
|
217
|
+
图片边界框左上角x坐标?: 数字,
|
|
218
|
+
图片边界框左上角y坐标?: 数字,
|
|
219
|
+
图片边界框右下角x坐标?: 数字,
|
|
220
|
+
图片边界框右下角y坐标?: 数字,
|
|
221
|
+
): 数组<OCR识别结果>;
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
**示例:**
|
|
225
|
+
|
|
226
|
+
```javascript
|
|
227
|
+
const 绝对坐标数字结果 = $苹果OCR.识别数字绝对坐标("screen", 100, 100, 500, 300);
|
|
228
|
+
if (绝对坐标数字结果.length > 0) {
|
|
229
|
+
$点击(绝对坐标数字结果[0].centerX, 绝对坐标数字结果[0].centerY);
|
|
230
|
+
}
|
|
231
|
+
```
|
|
232
|
+
|
|
182
233
|
### 文本查找
|
|
183
234
|
|
|
184
235
|
#### 查找文本
|
|
@@ -231,3 +282,30 @@ $打印信息日志(`识别到 ${文本识别结果.length} 个文本区域`);
|
|
|
231
282
|
$打印信息日志(`中心点: (${result.centerX}, ${result.centerY})`);
|
|
232
283
|
});
|
|
233
284
|
```
|
|
285
|
+
|
|
286
|
+
#### 查找文本绝对坐标
|
|
287
|
+
|
|
288
|
+
查找目标文本,并将结果坐标映射为原图/全屏绝对坐标。
|
|
289
|
+
|
|
290
|
+
参数与 `查找文本` 相同。传入裁剪区域时,返回坐标可直接用于全屏点击。
|
|
291
|
+
|
|
292
|
+
```typescript
|
|
293
|
+
function 查找文本绝对坐标(
|
|
294
|
+
输入源: 字符串,
|
|
295
|
+
要查找的文本数组: 数组<字符串>,
|
|
296
|
+
图片边界框左上角x坐标?: 数字,
|
|
297
|
+
图片边界框左上角y坐标?: 数字,
|
|
298
|
+
图片边界框右下角x坐标?: 数字,
|
|
299
|
+
图片边界框右下角y坐标?: 数字,
|
|
300
|
+
识别语言数组?: 数组<字符串>,
|
|
301
|
+
): 数组<OCR识别结果>;
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
**示例:**
|
|
305
|
+
|
|
306
|
+
```javascript
|
|
307
|
+
const 绝对坐标命中 = $苹果OCR.查找文本绝对坐标("screen", ["确定"], 100, 100, 500, 400);
|
|
308
|
+
if (绝对坐标命中.length > 0) {
|
|
309
|
+
$点击(绝对坐标命中[0].centerX, 绝对坐标命中[0].centerY);
|
|
310
|
+
}
|
|
311
|
+
```
|
package/docs/apicn/global.md
CHANGED
|
@@ -392,6 +392,55 @@ if ($获取CPU自动限流()) {
|
|
|
392
392
|
}
|
|
393
393
|
```
|
|
394
394
|
|
|
395
|
+
### $设置CPU限流延迟
|
|
396
|
+
|
|
397
|
+
设置 CPU 限流单次 sleep 延迟范围(毫秒)。默认 `minMs=3`、`maxMs=30`。仅在 CPU 自动限流开启且触发限流时生效。
|
|
398
|
+
|
|
399
|
+
```typescript
|
|
400
|
+
declare function $设置CPU限流延迟(最小毫秒: 数字, 最大毫秒: 数字): { minMs: 数字; maxMs: 数字 };
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
**参数:**
|
|
404
|
+
|
|
405
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
406
|
+
| ---------- | ------ | -------- | ------ | ---------------------------------------- |
|
|
407
|
+
| `最小毫秒` | `数字` | 是 | - | 最低延迟(毫秒) |
|
|
408
|
+
| `最大毫秒` | `数字` | 是 | - | 最高延迟(毫秒);小于最小毫秒时自动对齐 |
|
|
409
|
+
|
|
410
|
+
**返回值:**
|
|
411
|
+
|
|
412
|
+
| 类型 | 描述 |
|
|
413
|
+
| --------------------------- | ------------------ |
|
|
414
|
+
| `{ minMs: 数字; maxMs: 数字 }` | 实际生效的延迟范围 |
|
|
415
|
+
|
|
416
|
+
**示例:**
|
|
417
|
+
|
|
418
|
+
```javascript
|
|
419
|
+
const 延迟 = $设置CPU限流延迟(3, 30);
|
|
420
|
+
$打印信息日志(`CPU 限流延迟: ${延迟.minMs}~${延迟.maxMs}ms`);
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
### $获取CPU限流延迟
|
|
424
|
+
|
|
425
|
+
获取 CPU 限流延迟范围(毫秒)。
|
|
426
|
+
|
|
427
|
+
```typescript
|
|
428
|
+
declare function $获取CPU限流延迟(): { minMs: 数字; maxMs: 数字 };
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
**返回值:**
|
|
432
|
+
|
|
433
|
+
| 类型 | 描述 |
|
|
434
|
+
| --------------------------- | ------------------ |
|
|
435
|
+
| `{ minMs: 数字; maxMs: 数字 }` | 当前最低与最高延迟 |
|
|
436
|
+
|
|
437
|
+
**示例:**
|
|
438
|
+
|
|
439
|
+
```javascript
|
|
440
|
+
const 延迟 = $获取CPU限流延迟();
|
|
441
|
+
$打印信息日志(`CPU 限流延迟: ${延迟.minMs}~${延迟.maxMs}ms`);
|
|
442
|
+
```
|
|
443
|
+
|
|
395
444
|
### $设置停止回调
|
|
396
445
|
|
|
397
446
|
设置停止回调函数(仅主线程调用)。
|
package/docs/apicn/node.md
CHANGED
|
@@ -23,6 +23,10 @@ function $创建节点选择器(params?: {
|
|
|
23
23
|
* 代表要获取节点的层级,越少速度越快,默认 50
|
|
24
24
|
*/
|
|
25
25
|
maxDepth?: 数字;
|
|
26
|
+
/**
|
|
27
|
+
* 抓取模式:模式 1、模式 2,默认模式 1
|
|
28
|
+
*/
|
|
29
|
+
mode?: 数字;
|
|
26
30
|
}): $节点选择器;
|
|
27
31
|
```
|
|
28
32
|
|
|
@@ -31,6 +35,7 @@ function $创建节点选择器(params?: {
|
|
|
31
35
|
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
32
36
|
| ---------- | ---- | -------- | ------ | --------------------------- |
|
|
33
37
|
| `maxDepth` | 数字 | 否 | 50 | 遍历的最大层级深度,默认 50 |
|
|
38
|
+
| `mode` | 数字 | 否 | 1 | 抓取模式。模式 1、模式 2,默认模式 1 |
|
|
34
39
|
|
|
35
40
|
**返回值:**
|
|
36
41
|
|
|
@@ -44,6 +49,7 @@ function $创建节点选择器(params?: {
|
|
|
44
49
|
// 创建选择器
|
|
45
50
|
const selector = $创建节点选择器({
|
|
46
51
|
maxDepth: 20, // 最大20层深度
|
|
52
|
+
mode: 1, // 默认模式 1
|
|
47
53
|
});
|
|
48
54
|
```
|
|
49
55
|
|
package/docs/apicn/paddleocr.md
CHANGED
|
@@ -64,20 +64,23 @@ interface OCR识别结果 {
|
|
|
64
64
|
#### 加载 V5 模型 - 初始化 PP-OCRv5 模型,这是使用 OCR 功能的前提。
|
|
65
65
|
|
|
66
66
|
```typescript
|
|
67
|
-
function 加载V5模型(最大边长?:
|
|
67
|
+
function 加载V5模型(最大边长?: 数字, useGpu?: 布尔值): 布尔值;
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
**参数:**
|
|
71
71
|
|
|
72
|
-
| 参数名 | 类型
|
|
73
|
-
| ---------- |
|
|
74
|
-
| `最大边长` | 数字
|
|
72
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
73
|
+
| ---------- | ------ | -------- | ------ | -------------------------------- |
|
|
74
|
+
| `最大边长` | 数字 | 否 | 640 | 输入图像的最大边长,默认值为 640 |
|
|
75
|
+
| `useGpu` | 布尔值 | 否 | false | 是否启用 GPU 加速 |
|
|
75
76
|
|
|
76
77
|
**返回值:**
|
|
77
78
|
|
|
78
|
-
| 类型 | 描述
|
|
79
|
-
| ------ |
|
|
80
|
-
| 布尔值 |
|
|
79
|
+
| 类型 | 描述 |
|
|
80
|
+
| ------ | --------------------------------------------------- |
|
|
81
|
+
| 布尔值 | 加载成功或模型已加载返回 `true`,否则返回 `false` |
|
|
82
|
+
|
|
83
|
+
重复调用 `加载V5模型` 时,如果模型已经加载,会直接返回 `true`,不会重新加载或应用新的参数。需要更换加载参数时,先调用 `释放资源()` 释放模型。
|
|
81
84
|
|
|
82
85
|
**示例:**
|
|
83
86
|
|
|
@@ -164,6 +167,30 @@ const urlResults = $PaddleOCR.识别(
|
|
|
164
167
|
$打印信息日志(`网络图片识别结果: ${JSON.stringify(urlResults)}`);
|
|
165
168
|
```
|
|
166
169
|
|
|
170
|
+
#### 识别绝对坐标 - 执行 OCR 识别,并将结果坐标映射为原图/全屏绝对坐标。
|
|
171
|
+
|
|
172
|
+
参数与 `识别` 相同。传入裁剪区域时,返回坐标可直接用于全屏点击。
|
|
173
|
+
|
|
174
|
+
```typescript
|
|
175
|
+
function 识别绝对坐标(
|
|
176
|
+
输入源: 字符串,
|
|
177
|
+
图片边界框左上角x坐标?: 数字,
|
|
178
|
+
图片边界框左上角y坐标?: 数字,
|
|
179
|
+
图片边界框右下角x坐标?: 数字,
|
|
180
|
+
图片边界框右下角y坐标?: 数字,
|
|
181
|
+
置信度阈值?: 数字,
|
|
182
|
+
): 数组<OCR识别结果>;
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
**示例:**
|
|
186
|
+
|
|
187
|
+
```javascript
|
|
188
|
+
const 绝对坐标结果 = $PaddleOCR.识别绝对坐标("screen", 100, 100, 500, 300);
|
|
189
|
+
if (绝对坐标结果.length > 0) {
|
|
190
|
+
$动作.点击(绝对坐标结果[0].centerX, 绝对坐标结果[0].centerY);
|
|
191
|
+
}
|
|
192
|
+
```
|
|
193
|
+
|
|
167
194
|
#### 查找文本 - 在识别结果中查找目标文本并返回对应子串坐标。
|
|
168
195
|
|
|
169
196
|
```typescript
|
|
@@ -238,6 +265,31 @@ const 区域命中结果 = $PaddleOCR.查找文本(
|
|
|
238
265
|
$打印信息日志(`区域命中数量: ${区域命中结果.length}`);
|
|
239
266
|
```
|
|
240
267
|
|
|
268
|
+
#### 查找文本绝对坐标 - 查找目标文本,并将结果坐标映射为原图/全屏绝对坐标。
|
|
269
|
+
|
|
270
|
+
参数与 `查找文本` 相同。传入裁剪区域时,返回坐标可直接用于全屏点击。
|
|
271
|
+
|
|
272
|
+
```typescript
|
|
273
|
+
function 查找文本绝对坐标(
|
|
274
|
+
输入源: 字符串,
|
|
275
|
+
目标文本数组: 数组<字符串>,
|
|
276
|
+
图片边界框左上角x坐标?: 数字,
|
|
277
|
+
图片边界框左上角y坐标?: 数字,
|
|
278
|
+
图片边界框右下角x坐标?: 数字,
|
|
279
|
+
图片边界框右下角y坐标?: 数字,
|
|
280
|
+
置信度阈值?: 数字,
|
|
281
|
+
): 数组<OCR识别结果>;
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
**示例:**
|
|
285
|
+
|
|
286
|
+
```javascript
|
|
287
|
+
const 绝对坐标命中 = $PaddleOCR.查找文本绝对坐标("screen", ["确定"], 100, 100, 500, 400, 0.6);
|
|
288
|
+
if (绝对坐标命中.length > 0) {
|
|
289
|
+
$动作.点击(绝对坐标命中[0].centerX, 绝对坐标命中[0].centerY);
|
|
290
|
+
}
|
|
291
|
+
```
|
|
292
|
+
|
|
241
293
|
### 资源管理
|
|
242
294
|
|
|
243
295
|
#### 释放资源 - 释放 OCR 模型占用的内存资源。
|