mcp-ktt-ocr 1.0.0 → 1.0.2
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/README.md +40 -14
- package/dist/index.js +49 -27
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,7 +4,11 @@
|
|
|
4
4
|
|
|
5
5
|
## 功能特性
|
|
6
6
|
|
|
7
|
-
-
|
|
7
|
+
- **电商截图识别** (`recognize_ecommerce_screenshot`):识别电商平台小程序截图,支持三种类型:
|
|
8
|
+
- 订单信息截图:提取团长名称、商品名称、发货状态、跟团号、下单人昵称、订单编号等
|
|
9
|
+
- 商品信息截图:提取商品名称
|
|
10
|
+
- 收款二维码截图:识别二维码类型
|
|
11
|
+
- 支持自定义提示词覆盖默认识别逻辑
|
|
8
12
|
- **通用 OCR** (`general_ocr`):通用图片文字识别,提取图片中的所有文字内容
|
|
9
13
|
- **图片内容分析** (`analyze_image_content`):分析图片内容,判断图片类型并提取关键信息
|
|
10
14
|
|
|
@@ -35,27 +39,49 @@ export DASHSCOPE_API_KEY=your_api_key_here
|
|
|
35
39
|
|
|
36
40
|
## 工具说明
|
|
37
41
|
|
|
38
|
-
### 1.
|
|
42
|
+
### 1. recognize_ecommerce_screenshot
|
|
39
43
|
|
|
40
|
-
|
|
44
|
+
识别电商平台小程序截图,自动分类并提取结构化信息。
|
|
41
45
|
|
|
42
46
|
**参数:**
|
|
43
|
-
- `image_url` (string, 必填)
|
|
47
|
+
- `image_url` (string, 必填):截图的 URL 地址
|
|
48
|
+
- `custom_prompt` (string, 可选):自定义识别提示词,覆盖默认提示词
|
|
44
49
|
|
|
45
50
|
**返回示例:**
|
|
51
|
+
|
|
52
|
+
订单信息截图:
|
|
46
53
|
```json
|
|
47
54
|
{
|
|
48
|
-
"
|
|
49
|
-
"
|
|
55
|
+
"type": "order",
|
|
56
|
+
"leader_name": "团团优选",
|
|
50
57
|
"product_name": "【厚底小金豆双带勃肯凉拖鞋】",
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
58
|
+
"delivery_status": "已发货",
|
|
59
|
+
"pay_amount": "29.9",
|
|
60
|
+
"group_number": "371",
|
|
61
|
+
"nickname": "用户昵称",
|
|
62
|
+
"order_number": "250704-308244682452790"
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
商品信息截图:
|
|
67
|
+
```json
|
|
68
|
+
{
|
|
69
|
+
"type": "product",
|
|
70
|
+
"product_name": "【厚底小金豆双带勃肯凉拖鞋】"
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
收款二维码截图:
|
|
75
|
+
```json
|
|
76
|
+
{
|
|
77
|
+
"type": "qrcode"
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
其他类型:
|
|
82
|
+
```json
|
|
83
|
+
{
|
|
84
|
+
"type": "unknown"
|
|
59
85
|
}
|
|
60
86
|
```
|
|
61
87
|
|
package/dist/index.js
CHANGED
|
@@ -10,11 +10,12 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
|
|
|
10
10
|
import { z } from "zod";
|
|
11
11
|
// 环境变量配置
|
|
12
12
|
const DASHSCOPE_API_KEY = process.env.DASHSCOPE_API_KEY || "";
|
|
13
|
-
const DASHSCOPE_BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1";
|
|
13
|
+
const DASHSCOPE_BASE_URL = process.env.DASHSCOPE_BASE_URL || "https://dashscope.aliyuncs.com/compatible-mode/v1";
|
|
14
|
+
const VISION_MODEL = process.env.VISION_MODEL || "qwen-vl-max";
|
|
14
15
|
// 创建 MCP 服务器
|
|
15
16
|
const server = new McpServer({
|
|
16
17
|
name: "mcp-ktt-ocr",
|
|
17
|
-
version: "1.0.
|
|
18
|
+
version: "1.0.2",
|
|
18
19
|
});
|
|
19
20
|
/**
|
|
20
21
|
* 调用阿里云百炼 qwen-vl 模型进行图片理解
|
|
@@ -24,7 +25,7 @@ async function analyzeImage(imageUrl, prompt) {
|
|
|
24
25
|
throw new Error("DASHSCOPE_API_KEY environment variable is not set");
|
|
25
26
|
}
|
|
26
27
|
const requestBody = {
|
|
27
|
-
model:
|
|
28
|
+
model: VISION_MODEL,
|
|
28
29
|
messages: [
|
|
29
30
|
{
|
|
30
31
|
role: "user",
|
|
@@ -64,29 +65,48 @@ async function analyzeImage(imageUrl, prompt) {
|
|
|
64
65
|
return content;
|
|
65
66
|
}
|
|
66
67
|
/**
|
|
67
|
-
*
|
|
68
|
+
* 电商平台小程序截图识别 prompt
|
|
69
|
+
* 支持识别:订单信息截图、商品信息截图、收款二维码截图
|
|
68
70
|
*/
|
|
69
|
-
const ORDER_OCR_PROMPT =
|
|
71
|
+
const ORDER_OCR_PROMPT = `指令: 输入为某电商平台小程序的截图,请按提取其中的文字信息并按背景信息中的分类归类输出对应格式的数据
|
|
70
72
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
73
|
+
背景信息:
|
|
74
|
+
# 期望的图片类型及包含内容
|
|
75
|
+
|
|
76
|
+
1. **商品信息截图**:
|
|
77
|
+
- 商品名称信息(靠左侧,一行文字)
|
|
78
|
+
|
|
79
|
+
2. **订单信息截图**:
|
|
80
|
+
- 团长名称(右侧有泡泡内三个点的 icon)在商品图片信息的左上方
|
|
81
|
+
- 发货状态在商品名称下方的括号内
|
|
82
|
+
- 跟团号在"订单信息"下方的第一行是纯数字
|
|
83
|
+
- 下单人昵称在跟团号下面一行的 icon 右侧
|
|
84
|
+
- 订单编号(格式如:250704-308244682452790 或 PO-开头的编号)
|
|
85
|
+
|
|
86
|
+
3. **收款二维码截图**:
|
|
87
|
+
- 二维码图形(大概率为微信或支付宝的)
|
|
88
|
+
|
|
89
|
+
# 分类方式
|
|
90
|
+
优先匹配订单信息截图,如果无法识别匹配对应内容,则尝试匹配商品信息截图,如果不是则匹配收款二维码截图,都不满足则直接归类为其他
|
|
91
|
+
|
|
92
|
+
补充数据: 应考虑通过图片内容能明显排除是三种预期类型的情况
|
|
93
|
+
|
|
94
|
+
输出格式:
|
|
95
|
+
# 输出格式:
|
|
96
|
+
严格输出标准 json 格式
|
|
97
|
+
|
|
98
|
+
# 分类模板
|
|
99
|
+
商品信息截图: {"type":"product","product_name":""}
|
|
100
|
+
订单信息截图: {"type":"order","leader_name":"","product_name":"","delivery_status":"","pay_amount":"","group_number":"","nickname":"","order_number":""}
|
|
101
|
+
收款二维码截图: {"type":"qrcode"}
|
|
102
|
+
其他: {"type":"unknown"}
|
|
84
103
|
|
|
85
104
|
注意事项:
|
|
86
|
-
1.
|
|
87
|
-
2.
|
|
88
|
-
3.
|
|
89
|
-
4.
|
|
105
|
+
1. 必须严格按照上述 JSON 格式输出,不要添加任何其他文字说明
|
|
106
|
+
2. 如果某个字段在图片中不可见或无法识别,请设置为空字符串 ""
|
|
107
|
+
3. 订单编号(order_number)是最重要的信息,请务必准确识别
|
|
108
|
+
4. 如果图片模糊或信息不完整,请尽量提取可见信息,缺失字段设为空字符串
|
|
109
|
+
5. 分类判断要准确,如果明显不是订单/商品/二维码截图,归类为 "unknown"`;
|
|
90
110
|
/**
|
|
91
111
|
* 通用图片 OCR prompt
|
|
92
112
|
*/
|
|
@@ -95,12 +115,14 @@ const GENERAL_OCR_PROMPT = `请识别这张图片中的所有文字内容,并
|
|
|
95
115
|
如果图片中有表格,请尽量保持表格结构。
|
|
96
116
|
如果图片中有重要的数字(如订单号、金额、电话等),请特别标注。`;
|
|
97
117
|
// 注册工具
|
|
98
|
-
// 工具1
|
|
99
|
-
server.tool("
|
|
100
|
-
image_url: z.string().describe("
|
|
101
|
-
|
|
118
|
+
// 工具1:电商截图识别
|
|
119
|
+
server.tool("recognize_ecommerce_screenshot", "识别电商平台小程序截图(订单信息、商品信息、收款二维码),提取结构化数据", {
|
|
120
|
+
image_url: z.string().describe("截图的 URL 地址(支持 http/https 链接或 base64 编码)"),
|
|
121
|
+
custom_prompt: z.string().optional().describe("自定义识别提示词(可选,覆盖默认提示词)"),
|
|
122
|
+
}, async ({ image_url, custom_prompt }) => {
|
|
102
123
|
try {
|
|
103
|
-
const
|
|
124
|
+
const prompt = custom_prompt || ORDER_OCR_PROMPT;
|
|
125
|
+
const result = await analyzeImage(image_url, prompt);
|
|
104
126
|
// 尝试解析 JSON 结果
|
|
105
127
|
let parsedResult;
|
|
106
128
|
try {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,SAAS;AACT,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC;AAC9D,MAAM,kBAAkB,GAAG,mDAAmD,CAAC;AAE/
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|