ms-vite-plugin 1.1.2 → 1.1.3
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 +6 -0
- package/dist/cli.js +91 -1
- package/dist/mcp/device-config.d.ts +55 -0
- package/dist/mcp/device-config.js +183 -0
- package/dist/mcp/docs-service.d.ts +65 -0
- package/dist/mcp/docs-service.js +168 -0
- package/dist/mcp/project.d.ts +16 -0
- package/dist/mcp/project.js +74 -0
- package/dist/mcp/tools.d.ts +18 -0
- package/dist/mcp/tools.js +825 -0
- package/dist/mcp/types.d.ts +32 -0
- package/dist/mcp/types.js +11 -0
- package/dist/mcp-server.d.ts +2 -0
- package/dist/mcp-server.js +86 -0
- package/dist/project.d.ts +89 -0
- package/dist/project.js +306 -0
- package/dist/version.d.ts +12 -0
- package/dist/version.js +63 -0
- package/docs/api/action.md +922 -0
- package/docs/api/appleocr.md +229 -0
- package/docs/api/config.md +122 -0
- package/docs/api/cryptoUtils.md +232 -0
- package/docs/api/device.md +374 -0
- package/docs/api/file.md +516 -0
- package/docs/api/global.md +617 -0
- package/docs/api/hid.md +1032 -0
- package/docs/api/hotUpdate.md +166 -0
- package/docs/api/http.md +548 -0
- package/docs/api/image.md +907 -0
- package/docs/api/ime.md +290 -0
- package/docs/api/logger.md +324 -0
- package/docs/api/media.md +248 -0
- package/docs/api/mysql.md +441 -0
- package/docs/api/netCard.md +200 -0
- package/docs/api/node.md +353 -0
- package/docs/api/paddleocr.md +246 -0
- package/docs/api/pip.md +242 -0
- package/docs/api/system.md +572 -0
- package/docs/api/thread.md +269 -0
- package/docs/api/tomatoocr.md +425 -0
- package/docs/api/tts.md +334 -0
- package/docs/api/ui.md +947 -0
- package/docs/api/utils.md +265 -0
- package/docs/api/yolo.md +310 -0
- package/docs/apicn/action.md +919 -0
- package/docs/apicn/appleocr.md +233 -0
- package/docs/apicn/config.md +120 -0
- package/docs/apicn/device.md +385 -0
- package/docs/apicn/file.md +511 -0
- package/docs/apicn/global.md +613 -0
- package/docs/apicn/hid.md +1033 -0
- package/docs/apicn/hotUpdate.md +170 -0
- package/docs/apicn/http.md +672 -0
- package/docs/apicn/image.md +924 -0
- package/docs/apicn/ime.md +290 -0
- package/docs/apicn/logger.md +332 -0
- package/docs/apicn/media.md +252 -0
- package/docs/apicn/mysql.md +445 -0
- package/docs/apicn/netCard.md +200 -0
- package/docs/apicn/node.md +362 -0
- package/docs/apicn/paddleocr.md +255 -0
- package/docs/apicn/pip.md +242 -0
- package/docs/apicn/system.md +575 -0
- package/docs/apicn/thread.md +269 -0
- package/docs/apicn/tts.md +338 -0
- package/docs/apicn/ui.md +933 -0
- package/docs/apicn/utils.md +265 -0
- package/docs/apicn/yolo.md +314 -0
- package/docs/apipython/action.md +901 -0
- package/docs/apipython/appleocr.md +226 -0
- package/docs/apipython/config.md +126 -0
- package/docs/apipython/cryptoUtils.md +246 -0
- package/docs/apipython/device.md +365 -0
- package/docs/apipython/file.md +476 -0
- package/docs/apipython/g.md +154 -0
- package/docs/apipython/hid.md +1059 -0
- package/docs/apipython/hotUpdate.md +154 -0
- package/docs/apipython/image.md +938 -0
- package/docs/apipython/ime.md +306 -0
- package/docs/apipython/logger.md +330 -0
- package/docs/apipython/media.md +221 -0
- package/docs/apipython/mysql.md +432 -0
- package/docs/apipython/netCard.md +219 -0
- package/docs/apipython/node.md +331 -0
- package/docs/apipython/overview.md +66 -0
- package/docs/apipython/paddleocr.md +211 -0
- package/docs/apipython/pip.md +231 -0
- package/docs/apipython/system.md +458 -0
- package/docs/apipython/tomatoocr.md +444 -0
- package/docs/apipython/tts.md +331 -0
- package/docs/apipython/ui.md +949 -0
- package/docs/apipython/utils.md +284 -0
- package/docs/apipython/yolo.md +281 -0
- package/package.json +8 -4
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
# 多线程模块 (Thread)
|
|
2
|
+
|
|
3
|
+
多线程模块提供了简单的多线程编程能力,允许您在后台执行任务而不阻塞主线程。配合 `sharedState` 全局对象,可以实现线程间的数据共享和通信。
|
|
4
|
+
|
|
5
|
+
## 功能概览
|
|
6
|
+
|
|
7
|
+
- **异步执行**: 使用 `thread.run` 快速启动新线程。
|
|
8
|
+
- **线程控制**: 支持取消线程、检查线程状态。
|
|
9
|
+
- **状态共享**: 使用 `sharedState` 在不同线程间共享数据。
|
|
10
|
+
|
|
11
|
+
## 注意事项
|
|
12
|
+
|
|
13
|
+
- **独立的执行环境**: 线程函数在独立的 JavaScript 环境中运行,无法访问主线程或其他作用域中的变量、函数或对象。
|
|
14
|
+
- **闭包限制**: 即使线程函数是闭包形式,它也无法捕获外部变量。传递给 `thread.run` 的函数会被转换并在新的上下文中执行。
|
|
15
|
+
- **数据通信**: 如果需要与主线程通信或使用外部数据,请使用 `sharedState` 全局对象。
|
|
16
|
+
- **文件名限制**:执行的线程 js 文件名称必须以 `_thread.js` 结尾,例如 `worker_thread.js`。
|
|
17
|
+
|
|
18
|
+
## API 参考
|
|
19
|
+
|
|
20
|
+
### Thread 模块
|
|
21
|
+
|
|
22
|
+
#### thread.run - 异步执行代码
|
|
23
|
+
|
|
24
|
+
启动一个新的线程来执行指定的 JS 文件。
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
function run(threadJsFileName: string): Thread;
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**参数:**
|
|
31
|
+
|
|
32
|
+
| 参数名 | 类型 | 描述 |
|
|
33
|
+
| ------------------ | -------- | ---------------- |
|
|
34
|
+
| `threadJsFileName` | `string` | 线程 js 文件路径 |
|
|
35
|
+
|
|
36
|
+
**返回值:**
|
|
37
|
+
|
|
38
|
+
| 类型 | 描述 |
|
|
39
|
+
| -------- | ------------ |
|
|
40
|
+
| `Thread` | 线程控制对象 |
|
|
41
|
+
|
|
42
|
+
**示例:**
|
|
43
|
+
|
|
44
|
+
```javascript
|
|
45
|
+
// 启动一个简单的线程
|
|
46
|
+
const t = thread.run("test_thread.js");
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
#### thread.stopAll - 停止所有线程
|
|
50
|
+
|
|
51
|
+
停止当前所有正在运行的子线程。
|
|
52
|
+
|
|
53
|
+
```typescript
|
|
54
|
+
function stopAll(): boolean;
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**返回值:**
|
|
58
|
+
|
|
59
|
+
| 类型 | 描述 |
|
|
60
|
+
| --------- | ------------ |
|
|
61
|
+
| `boolean` | 是否停止成功 |
|
|
62
|
+
|
|
63
|
+
**示例:**
|
|
64
|
+
|
|
65
|
+
```javascript
|
|
66
|
+
const stopped = thread.stopAll();
|
|
67
|
+
logi("Stopped all threads: " + stopped);
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
### Thread 对象
|
|
73
|
+
|
|
74
|
+
`thread.run` 返回的对象,用于控制特定线程。
|
|
75
|
+
|
|
76
|
+
#### 属性
|
|
77
|
+
|
|
78
|
+
| 属性名 | 类型 | 描述 |
|
|
79
|
+
| ------ | -------- | -------- |
|
|
80
|
+
| `name` | `string` | 线程名称 |
|
|
81
|
+
|
|
82
|
+
#### 方法
|
|
83
|
+
|
|
84
|
+
##### cancel - 取消线程
|
|
85
|
+
|
|
86
|
+
```typescript
|
|
87
|
+
cancel(): boolean;
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**返回值:** 是否取消成功。
|
|
91
|
+
|
|
92
|
+
**示例:**
|
|
93
|
+
|
|
94
|
+
```javascript
|
|
95
|
+
// t is the object returned by thread.run
|
|
96
|
+
t.cancel();
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
##### isCancelled - 检查是否已取消
|
|
100
|
+
|
|
101
|
+
```typescript
|
|
102
|
+
isCancelled(): boolean;
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**返回值:** 如果线程已被取消则返回 `true`,否则返回 `false`。
|
|
106
|
+
|
|
107
|
+
**示例:**
|
|
108
|
+
|
|
109
|
+
```javascript
|
|
110
|
+
if (t.isCancelled()) {
|
|
111
|
+
logi("此线程已被取消");
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
##### isExecuting - 检查是否正在执行
|
|
116
|
+
|
|
117
|
+
```typescript
|
|
118
|
+
isExecuting(): boolean;
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**返回值:** 如果线程正在运行则返回 `true`,否则返回 `false`。
|
|
122
|
+
|
|
123
|
+
**示例:**
|
|
124
|
+
|
|
125
|
+
```javascript
|
|
126
|
+
if (t.isExecuting()) {
|
|
127
|
+
logi("此线程正在运行");
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
### SharedState (状态共享)
|
|
134
|
+
|
|
135
|
+
`sharedState` 是一个全局对象,用于在主线程和子线程之间,或者不同子线程之间共享数据。
|
|
136
|
+
|
|
137
|
+
#### sharedState.set - 设置状态
|
|
138
|
+
|
|
139
|
+
设置一个共享状态值。
|
|
140
|
+
|
|
141
|
+
```typescript
|
|
142
|
+
set(key: string, value: any): void;
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
**参数:**
|
|
146
|
+
|
|
147
|
+
| 参数名 | 类型 | 描述 |
|
|
148
|
+
| ------- | -------- | -------- |
|
|
149
|
+
| `key` | `string` | 状态键名 |
|
|
150
|
+
| `value` | `any` | 状态值 |
|
|
151
|
+
|
|
152
|
+
**示例:**
|
|
153
|
+
|
|
154
|
+
```javascript
|
|
155
|
+
sharedState.set("count", 1);
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
#### sharedState.get - 获取状态
|
|
159
|
+
|
|
160
|
+
获取指定的共享状态值。
|
|
161
|
+
|
|
162
|
+
```typescript
|
|
163
|
+
get(key: string): any;
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
**参数:**
|
|
167
|
+
|
|
168
|
+
| 参数名 | 类型 | 描述 |
|
|
169
|
+
| ------ | -------- | -------- |
|
|
170
|
+
| `key` | `string` | 状态键名 |
|
|
171
|
+
|
|
172
|
+
**返回值:** 对应的状态值。
|
|
173
|
+
|
|
174
|
+
**示例:**
|
|
175
|
+
|
|
176
|
+
```javascript
|
|
177
|
+
const val = sharedState.get("count");
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
#### sharedState.withBatch - 批量操作
|
|
181
|
+
|
|
182
|
+
在回调中执行一系列状态操作,保证操作的原子性(视具体实现而定,通常用于在一个锁周期内完成多个操作)。
|
|
183
|
+
|
|
184
|
+
```typescript
|
|
185
|
+
withBatch(block: () => void): void;
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
**参数:**
|
|
189
|
+
|
|
190
|
+
| 参数名 | 类型 | 描述 |
|
|
191
|
+
| ------- | ------------ | -------------------- |
|
|
192
|
+
| `block` | `() => void` | 包含状态操作的代码块 |
|
|
193
|
+
|
|
194
|
+
**示例:**
|
|
195
|
+
|
|
196
|
+
```javascript
|
|
197
|
+
sharedState.withBatch(() => {
|
|
198
|
+
sharedState.set("a", 1);
|
|
199
|
+
sharedState.set("b", 2);
|
|
200
|
+
});
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
#### sharedState.clear - 清除所有状态
|
|
204
|
+
|
|
205
|
+
清除所有共享的状态数据。
|
|
206
|
+
|
|
207
|
+
```typescript
|
|
208
|
+
clear(): void;
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
**示例:**
|
|
212
|
+
|
|
213
|
+
```javascript
|
|
214
|
+
sharedState.clear();
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
## 综合示例:线程通信
|
|
218
|
+
|
|
219
|
+
下面的示例展示了如何使用 `thread.run` 启动线程,并通过 `sharedState` 进行主线程与子线程之间的通信。
|
|
220
|
+
|
|
221
|
+
### 1. 子线程代码 (worker_thread.js)
|
|
222
|
+
|
|
223
|
+
```javascript
|
|
224
|
+
// worker_thread.js
|
|
225
|
+
logi("子线程开始工作");
|
|
226
|
+
|
|
227
|
+
for (let i = 1; i <= 5; i++) {
|
|
228
|
+
// 检查是否需要提前停止
|
|
229
|
+
if (!sharedState.get("isRunning")) {
|
|
230
|
+
logi("子线程检测到停止信号,退出");
|
|
231
|
+
break; // 或 return
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
sleep(1000); // 模拟耗时操作
|
|
235
|
+
|
|
236
|
+
// 更新进度到共享状态
|
|
237
|
+
sharedState.set("progress", i * 20);
|
|
238
|
+
logi(`子线程更新进度: ${i * 20}%`);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
logi("子线程工作完成");
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### 2. 主线程代码 (main.js)
|
|
245
|
+
|
|
246
|
+
```javascript
|
|
247
|
+
// main.js
|
|
248
|
+
|
|
249
|
+
// 1. 初始化状态
|
|
250
|
+
sharedState.set("progress", 0);
|
|
251
|
+
sharedState.set("isRunning", true);
|
|
252
|
+
|
|
253
|
+
// 2. 启动子线程执行耗时任务
|
|
254
|
+
const taskThread = thread.run("worker_thread.js");
|
|
255
|
+
|
|
256
|
+
// 3. 主线程监控进度
|
|
257
|
+
while (taskThread.isExecuting()) {
|
|
258
|
+
const progress = sharedState.get("progress");
|
|
259
|
+
logi(`主线程读取进度: ${progress}%`);
|
|
260
|
+
|
|
261
|
+
if (progress >= 100) {
|
|
262
|
+
break;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
sleep(500);
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
logi("任务结束");
|
|
269
|
+
```
|
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
# TomatoOCR 模块
|
|
2
|
+
|
|
3
|
+
TomatoOCR 模块提供基于 TomatoOCR 框架的文字识别和 YOLO 目标检测功能,支持多种识别模式和配置选项。
|
|
4
|
+
|
|
5
|
+
该 ocr 为付费插件, 具体资费请联系https://www.52tomato.com, 如果购买请选择插件版-快点 JS-IOS
|
|
6
|
+
|
|
7
|
+
## 功能概览
|
|
8
|
+
|
|
9
|
+
- **文字识别**: 支持多语言文字识别,包括中文、英文、数字、繁体、日语、韩语等
|
|
10
|
+
- **多种输入源**: 支持屏幕截图、文件路径、图像 ID 等多种输入方式
|
|
11
|
+
- **灵活配置**: 提供丰富的参数配置选项
|
|
12
|
+
- **点击点查找**: 根据文字内容查找可点击的位置
|
|
13
|
+
|
|
14
|
+
## API 参考
|
|
15
|
+
|
|
16
|
+
### 初始化方法
|
|
17
|
+
|
|
18
|
+
#### `initializeWithConfig`
|
|
19
|
+
|
|
20
|
+
初始化 TomatoOCR 引擎并设置基本配置。
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
function initializeWithConfig(
|
|
24
|
+
mode: string,
|
|
25
|
+
licenseData: string,
|
|
26
|
+
remark?: string
|
|
27
|
+
): {
|
|
28
|
+
deviceId: string;
|
|
29
|
+
expiryTime: string;
|
|
30
|
+
message: string;
|
|
31
|
+
status: string;
|
|
32
|
+
versionName: string;
|
|
33
|
+
} | null;
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**参数:**
|
|
37
|
+
|
|
38
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
39
|
+
| ------------- | ------ | -------- | ------ | ------------------------------------------------------------------ |
|
|
40
|
+
| `mode` | string | 是 | | 运行模式,debug:调试模型;删除或传别的任何值为正式模式 |
|
|
41
|
+
| `licenseData` | string | 是 | | 授权码 请传入你在 TomatoOCR 官网申请的授权码 购买依赖版-IOS 后获取 |
|
|
42
|
+
| `remark` | string | 否 | | 备注信息 |
|
|
43
|
+
|
|
44
|
+
**返回值:**
|
|
45
|
+
|
|
46
|
+
- 成功时返回包含设备信息的对象,失败时返回 null
|
|
47
|
+
|
|
48
|
+
| 参数名 | 类型 | 描述 |
|
|
49
|
+
| ------------- | ------ | -------- |
|
|
50
|
+
| `deviceId` | string | 设备 ID |
|
|
51
|
+
| `expiryTime` | string | 过期时间 |
|
|
52
|
+
| `message` | string | 消息 |
|
|
53
|
+
| `status` | string | 状态 |
|
|
54
|
+
| `versionName` | string | 版本名称 |
|
|
55
|
+
|
|
56
|
+
**示例:**
|
|
57
|
+
|
|
58
|
+
```typescript
|
|
59
|
+
// 不带备注
|
|
60
|
+
const result1 = tomatoOcr.initializeWithConfig(
|
|
61
|
+
"online",
|
|
62
|
+
"请传入你在 TomatoOCR 官网申请的授权码"
|
|
63
|
+
);
|
|
64
|
+
// 带备注
|
|
65
|
+
const result2 = tomatoOcr.initializeWithConfig(
|
|
66
|
+
"online",
|
|
67
|
+
"请传入你在 TomatoOCR 官网申请的授权码",
|
|
68
|
+
"测试环境"
|
|
69
|
+
);
|
|
70
|
+
logi(`结果1: ${JSON.stringify(result1)}, 结果2: ${JSON.stringify(result2)}`);
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 配置方法
|
|
74
|
+
|
|
75
|
+
#### `setHttpIntervalTime`
|
|
76
|
+
|
|
77
|
+
设置 HTTP 请求间隔时间。
|
|
78
|
+
|
|
79
|
+
```typescript
|
|
80
|
+
function setHttpIntervalTime(second: number): void;
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**参数:**
|
|
84
|
+
|
|
85
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
86
|
+
| -------- | ------ | -------- | ------ | ------------------------------------------------- |
|
|
87
|
+
| `second` | number | 是 | | 间隔秒数,设置网络请求间隔时间,非必设置。0-86400 |
|
|
88
|
+
|
|
89
|
+
**示例:**
|
|
90
|
+
|
|
91
|
+
```typescript
|
|
92
|
+
tomatoOcr.setHttpIntervalTime(3600);
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
#### `setRecType`
|
|
96
|
+
|
|
97
|
+
设置识别类型。
|
|
98
|
+
|
|
99
|
+
```typescript
|
|
100
|
+
function setRecType(recType: string): void;
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
**参数:**
|
|
104
|
+
|
|
105
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
106
|
+
| --------- | ------ | -------- | ------ | ---------------------------------------------------------------------------------- |
|
|
107
|
+
| `recType` | string | 是 | | 识别类型,模型类型,默认 ch-3.0,除此之外还有 ch-2.0, ch, cht, japan, korean, number |
|
|
108
|
+
|
|
109
|
+
**示例:**
|
|
110
|
+
|
|
111
|
+
```typescript
|
|
112
|
+
// 普通中英文识别,3.0版模型
|
|
113
|
+
tomatoOcr.setRecType("ch-3.0");
|
|
114
|
+
// 普通中英文识别,2.0版模型
|
|
115
|
+
tomatoOcr.setRecType("ch-2.0");
|
|
116
|
+
// 普通中英文识别,1.0版模型
|
|
117
|
+
tomatoOcr.setRecType("ch");
|
|
118
|
+
// 繁体
|
|
119
|
+
tomatoOcr.setRecType("cht");
|
|
120
|
+
// 日语
|
|
121
|
+
tomatoOcr.setRecType("japan");
|
|
122
|
+
// 韩语
|
|
123
|
+
tomatoOcr.setRecType("korean");
|
|
124
|
+
// 数字模型
|
|
125
|
+
tomatoOcr.setRecType("number");
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
#### `setDetBoxType`
|
|
129
|
+
|
|
130
|
+
设置检测框类型。
|
|
131
|
+
|
|
132
|
+
```typescript
|
|
133
|
+
function setDetBoxType(detBoxType: string): void;
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**参数:**
|
|
137
|
+
|
|
138
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
139
|
+
| ------------ | ------ | -------- | ------ | ---------------------------------------------------------------------------------- |
|
|
140
|
+
| `detBoxType` | string | 是 | | 检测框类型,默认"rect": 由于手机上截图文本均为矩形文本;"quad":可准确检测倾斜文本 |
|
|
141
|
+
|
|
142
|
+
**示例:**
|
|
143
|
+
|
|
144
|
+
```typescript
|
|
145
|
+
// 矩形文本
|
|
146
|
+
tomatoOcr.setDetBoxType("rect");
|
|
147
|
+
// 倾斜文本
|
|
148
|
+
tomatoOcr.setDetBoxType("quad");
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
#### `setDetScaleRatio`
|
|
152
|
+
|
|
153
|
+
设置输入图片缩放大小的参数,非必设置,默认为 1.0。值范围 0.1-10.0 之间,如果图太小,可能出现检测不到的情况,则尝试放大图片,如设置 2.0;如果图太大,可能出现检测不到一起的情况,则尝试缩小图片,如设置 0.5
|
|
154
|
+
|
|
155
|
+
```typescript
|
|
156
|
+
function setDetScaleRatio(detScaleRatio: number): void;
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
**参数:**
|
|
160
|
+
|
|
161
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
162
|
+
| --------------- | ------ | -------- | ------ | -------------- |
|
|
163
|
+
| `detScaleRatio` | number | 是 | | 检测框缩放比例 |
|
|
164
|
+
|
|
165
|
+
**示例:**
|
|
166
|
+
|
|
167
|
+
```typescript
|
|
168
|
+
tomatoOcr.setDetScaleRatio(0.5);
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
#### `setDetUnclipRatio`
|
|
172
|
+
|
|
173
|
+
设置检测框展开比例。
|
|
174
|
+
|
|
175
|
+
```typescript
|
|
176
|
+
function setDetUnclipRatio(detUnclipRatio: number): void;
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
**参数:**
|
|
180
|
+
|
|
181
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
182
|
+
| ---------------- | ------ | -------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
183
|
+
| `detUnclipRatio` | number | 是 | | 设置检测模型框选文本范围大小的参数,非必设置,默认为 1.9。值范围 1.6-2.5 之间,值越大框选范围越大,值越小框选范围越小;当框选到了,但识别得分较低,就可以调整该参数改善准确率。 |
|
|
184
|
+
|
|
185
|
+
**示例:**
|
|
186
|
+
|
|
187
|
+
```typescript
|
|
188
|
+
tomatoOcr.setDetUnclipRatio(1.9);
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
#### `setRecScoreThreshold`
|
|
192
|
+
|
|
193
|
+
设置识别分数阈值。
|
|
194
|
+
|
|
195
|
+
```typescript
|
|
196
|
+
function setRecScoreThreshold(recScoreThreshold: number): void;
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
**参数:**
|
|
200
|
+
|
|
201
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
202
|
+
| ------------------- | ------ | -------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
203
|
+
| `recScoreThreshold` | number | 是 | | 设置识别模型过滤得分的参数,非必设置,默认 0.1。由于返回的识别结果数据太多太乱,可以通过设置该参数,过滤一些得分较低不准的数据,使得结果看起来更加简练。 |
|
|
204
|
+
|
|
205
|
+
**示例:**
|
|
206
|
+
|
|
207
|
+
```typescript
|
|
208
|
+
tomatoOcr.setRecScoreThreshold(0.1);
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
#### `setReturnType`
|
|
212
|
+
|
|
213
|
+
设置返回类型。
|
|
214
|
+
|
|
215
|
+
```typescript
|
|
216
|
+
function setReturnType(returnType: string): void;
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
**参数:**
|
|
220
|
+
|
|
221
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
222
|
+
| ------------ | ------ | -------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
223
|
+
| `returnType` | string | 是 | | 设置调用插件识别返回格式的参数,非必设置,默认为 json。默认"json": 包含得分、坐标和文字;"text":纯文字;"num":纯数字;自定义输入想要返回的文本:".¥ 1234567890",仅只返回这些内容 |
|
|
224
|
+
|
|
225
|
+
**示例:**
|
|
226
|
+
|
|
227
|
+
```typescript
|
|
228
|
+
tomatoOcr.setReturnType("json");
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
#### `setBinaryThresh`
|
|
232
|
+
|
|
233
|
+
设置二值化阈值。
|
|
234
|
+
|
|
235
|
+
```typescript
|
|
236
|
+
function setBinaryThresh(binaryThresh: number): void;
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
**参数:**
|
|
240
|
+
|
|
241
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
242
|
+
| -------------- | ------ | -------- | ------ | -------------------------------------------------------------------------------------------------------------------- |
|
|
243
|
+
| `binaryThresh` | number | 是 | | 设置图像二值化的参数,非必设置,默认 0,不进行二值化。二值化设定 0-255,常规情况下不需要设置,可配合中调试应用使用。 |
|
|
244
|
+
|
|
245
|
+
**示例:**
|
|
246
|
+
|
|
247
|
+
```typescript
|
|
248
|
+
tomatoOcr.setBinaryThresh(0);
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
#### `setRunMode`
|
|
252
|
+
|
|
253
|
+
设置运行模式。
|
|
254
|
+
|
|
255
|
+
```typescript
|
|
256
|
+
function setRunMode(runMode: string): void;
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
**参数:**
|
|
260
|
+
|
|
261
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
262
|
+
| --------- | ------ | -------- | ------ | ---------------------------------------------------- |
|
|
263
|
+
| `runMode` | string | 是 | | 运行模式,默认"fast": 快速模式;"accurate":准确模式 |
|
|
264
|
+
|
|
265
|
+
**示例:**
|
|
266
|
+
|
|
267
|
+
```typescript
|
|
268
|
+
tomatoOcr.setRunMode("fast");
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
#### `setFilterColor`
|
|
272
|
+
|
|
273
|
+
设置图像滤色参数。
|
|
274
|
+
|
|
275
|
+
```typescript
|
|
276
|
+
function setFilterColor(filterColor: string, backgroundColor: string): void;
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
**参数:**
|
|
280
|
+
|
|
281
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
282
|
+
| ----------------- | ------ | -------- | ------ | -------------------------------------------------------------------------------------------------- |
|
|
283
|
+
| `filterColor` | string | 是 | \_ | 颜色过滤,通过逗号相互连,第一个是颜色值,第二个是负偏色,第三个是正偏色;不同颜色之间以" \| "连接 |
|
|
284
|
+
| `backgroundColor` | string | 是 | \_ | 滤色后的背景色,传""或 black 的时候,背景是黑色,传"white"的时候,背景是白色 |
|
|
285
|
+
|
|
286
|
+
**示例:**
|
|
287
|
+
|
|
288
|
+
```typescript
|
|
289
|
+
tomatoOcr.setFilterColor("#41917A,38,38", "black");
|
|
290
|
+
tomatoOcr.setFilterColor("#41917A,38,38|#E091A8,50,50", "white");
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
### OCR 识别方法
|
|
294
|
+
|
|
295
|
+
#### `ocrImage`
|
|
296
|
+
|
|
297
|
+
对图像执行 OCR 识别。
|
|
298
|
+
|
|
299
|
+
```typescript
|
|
300
|
+
function ocrImage(
|
|
301
|
+
input: string,
|
|
302
|
+
type: number,
|
|
303
|
+
x: number,
|
|
304
|
+
y: number,
|
|
305
|
+
ex: number,
|
|
306
|
+
ey: number
|
|
307
|
+
): string;
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
**参数:**
|
|
311
|
+
|
|
312
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
313
|
+
| ------- | ------ | -------- | ------ | ----------------------------------------------------------------------------------- |
|
|
314
|
+
| `input` | string | 是 | | 输入源(imageId、URL 字符串、文件路径或"screen") |
|
|
315
|
+
| `type` | number | 是 | | 识别类型,默认 3: 检测 + 识别;0: 只检测;1: 方向分类+识别;2: 只识别;3: 检测+识别 |
|
|
316
|
+
| `x` | number | 是 | | 边界框左上角 x 坐标 |
|
|
317
|
+
| `y` | number | 是 | | 边界框左上角 y 坐标 |
|
|
318
|
+
| `ex` | number | 是 | | 边界框右下角 x 坐标 |
|
|
319
|
+
| `ey` | number | 是 | | 边界框右下角 y 坐标 |
|
|
320
|
+
|
|
321
|
+
**返回值:**
|
|
322
|
+
|
|
323
|
+
| 类型 | 描述 |
|
|
324
|
+
| -------- | ------------------------ |
|
|
325
|
+
| `string` | OCR 识别结果 JSON 字符串 |
|
|
326
|
+
|
|
327
|
+
**示例:**
|
|
328
|
+
|
|
329
|
+
```typescript
|
|
330
|
+
// 识别屏幕
|
|
331
|
+
const result1 = tomatoOcr.ocrImage("screen", 0, 0, 0, 0, 0);
|
|
332
|
+
logi(`识别屏幕结果:${result1}`);
|
|
333
|
+
|
|
334
|
+
// 识别文件
|
|
335
|
+
const result2 = tomatoOcr.ocrImage("/path/to/image.png", 0, 0, 0, 0, 0);
|
|
336
|
+
logi(`识别文件结果:${result2}`);
|
|
337
|
+
|
|
338
|
+
// 识别指定屏幕区域
|
|
339
|
+
const result3 = tomatoOcr.ocrImage("screen", 0, 100, 500, 300);
|
|
340
|
+
logi(`识别指定屏幕区域结果:${result3}`);
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
### 点击点查找方法
|
|
344
|
+
|
|
345
|
+
#### `findTapPoint`
|
|
346
|
+
|
|
347
|
+
查找点击点。
|
|
348
|
+
|
|
349
|
+
```typescript
|
|
350
|
+
function findTapPoint(data: string): string;
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
**参数:**
|
|
354
|
+
|
|
355
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
356
|
+
| ------ | ------ | -------- | ------ | ---------- |
|
|
357
|
+
| `data` | string | 是 | | 要找的文字 |
|
|
358
|
+
|
|
359
|
+
**返回值:**
|
|
360
|
+
|
|
361
|
+
| 类型 | 描述 |
|
|
362
|
+
| -------- | ------------------------------------------- |
|
|
363
|
+
| `string` | 找"要找的文字"的中心点 没有找到返回空字符串 |
|
|
364
|
+
|
|
365
|
+
**示例:**
|
|
366
|
+
|
|
367
|
+
```typescript
|
|
368
|
+
const result = tomatoOcr.findTapPoint(“确定”);
|
|
369
|
+
logi(result);
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
#### `findTapPoints`
|
|
373
|
+
|
|
374
|
+
查找多个点击点。
|
|
375
|
+
|
|
376
|
+
```typescript
|
|
377
|
+
function findTapPoints(data: string): string;
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
**参数:**
|
|
381
|
+
|
|
382
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
383
|
+
| ------ | ------ | -------- | ------ | ---------- |
|
|
384
|
+
| `data` | string | 是 | | 要找的文字 |
|
|
385
|
+
|
|
386
|
+
**返回值:**
|
|
387
|
+
|
|
388
|
+
| 类型 | 描述 |
|
|
389
|
+
| -------- | ------------------------------------------------------- |
|
|
390
|
+
| `string` | 找"要找的文字"的所有相匹配的中心点 没有找到返回空字符串 |
|
|
391
|
+
|
|
392
|
+
**示例:**
|
|
393
|
+
|
|
394
|
+
```typescript
|
|
395
|
+
const result = tomatoOcr.findTapPoints(“确定”);
|
|
396
|
+
logi(result);
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
## 完整示例
|
|
400
|
+
|
|
401
|
+
```typescript
|
|
402
|
+
// 初始化 TomatoOCR 并设置基本配置
|
|
403
|
+
const initResult = tomatoOcr.initializeWithConfig(
|
|
404
|
+
"online",
|
|
405
|
+
"请传入你在 TomatoOCR 官网申请的授权码",
|
|
406
|
+
"测试环境" // 可选备注
|
|
407
|
+
);
|
|
408
|
+
logi("初始化结果:" + JSON.stringify(initResult));
|
|
409
|
+
|
|
410
|
+
// 配置其他参数
|
|
411
|
+
tomatoOcr.setRecType("ch-3.0");
|
|
412
|
+
|
|
413
|
+
// 执行 OCR 识别
|
|
414
|
+
const ocrResult = tomatoOcr.ocrImage("screen", 3, 0, 0, 0, 0); // 识别当前屏幕
|
|
415
|
+
logi("识别结果:" + ocrResult);
|
|
416
|
+
|
|
417
|
+
// 查找点击点
|
|
418
|
+
const tapResult = tomatoOcr.findTapPoint("登录");
|
|
419
|
+
logi("点击点坐标:" + tapResult);
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
## 注意事项
|
|
423
|
+
|
|
424
|
+
1. **参数配置**: 根据实际需求调整各种阈值和配置参数
|
|
425
|
+
2. **错误处理**: 建议对返回的 JSON 结果进行错误检查
|