一个基于 Model Context Protocol (MCP) 的服务器,通过华为云 OCR 服务提供光学字符识别(OCR)功能。
无需安装,直接使用:
npx -y mz-mcp
npm install mz-mcp-beta
配置以下必需的环境变量:
| 环境变量 | 必需 | 说明 |
|---|---|---|
CLOUD_SDK_AK | 是 | 华为云访问密钥 ID |
CLOUD_SDK_SK | 是 | 华为云秘密访问密钥 |
HUAWEI_OCR_PROJECT_ID | 是 | 华为云项目 ID |
HUAWEI_OCR_REGION | 否 | 服务地域,默认为 cn-east-3(华东-上海) |
将此服务器添加到您的 MCP 客户端配置中:
{
"mcpServers": {
"huawei-ocr": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"mz-mcp"
],
"env": {
"CLOUD_SDK_AK": "your_access_key",
"CLOUD_SDK_SK": "your_secret_key",
"HUAWEI_OCR_PROJECT_ID": "your_project_id",
"HUAWEI_OCR_REGION": "cn-east-3"
}
}
}
}
| 区域代码 | 区域名称 |
|---|---|
cn-north-4 | 华北-北京四 |
cn-east-3 | 华东-上海 |
cn-south-1 | 华南-广州 |
ap-southeast-1 | 中国-香港 |
git clone https://github.com/xiaomizhoubaobei/MZ-MCP.git
cd MZ-MCP
npm install
cp .env.example .env
# 编辑 .env 文件,填入您的华为云凭证
npm run build
npm run dev
npm start
从图像中识别通用文本。
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
image | string | 否* | Base64 编码的图像数据(与 url 二选一) |
url | string | 否* | 图像的公开 URL(与 image 二选一) |
detect_direction | boolean | 否 | 是否校正图片的倾斜角度(默认:false) |
quick_mode | boolean | 否 | 快速模式开关,针对单行文字图片(默认:false) |
character_mode | boolean | 否 | 单字符模式开关(默认:false) |
language | string | 否 | 语种选择,默认为中英文识别模式 |
single_orientation_mode | boolean | 否 | 单朝向模式开关(默认:false) |
pdf_page_number | number | 否 | 指定 PDF 页码识别(默认:第1页) |
return_markdown_result | boolean | 否 | 是否返回文字块拼接结果(默认:false) |
response_format | 'markdown' | 'json' | 否 | 输出格式(默认:'markdown') |
*必须提供 image 或 url 中的一个。
| 语种代码 | 语言名称 |
|---|---|
auto | 自动语种分类 |
zh | 中英文 |
en | 英文 |
ja | 日语 |
ko | 韩语 |
ru | 俄语 |
de | 德语 |
fr | 法语 |
es | 西班牙语 |
pt | 葡萄牙语 |
it | 意大利语 |
ar | 阿拉伯语 |
th | 泰语 |
vi | 越南语 |
id | 印尼语 |
ms | 马来语 |
hi | 印地语 |
uk | 乌克兰语 |
tr | 土耳其语 |
no | 挪威语 |
da | 丹麦语 |
sv | 瑞典语 |
km | 柬埔寨语 |
he | 希伯来语 |
在支持 MCP 的 AI 助手中,您可以直接通过自然语言使用此工具:
示例 1:识别图片中的文字
用户:请帮我识别这张图片中的文字
AI 助手会自动调用 huawei_ocr_recognize_general_text 工具,传入图片数据,返回识别结果。
示例 2:识别日语文本
用户:这张图片是日文的,帮我识别一下内容
AI 助手会自动设置 language: "ja" 参数进行日语识别。
示例 3:识别 PDF 文档
用户:请读取这个 PDF 文件的第 3 页内容
AI 助手会自动设置 pdf_page_number: 3 参数识别指定页面。
示例 4:校正倾斜图片
用户:这张图片有点歪,帮我识别里面的文字
AI 助手会自动设置 detect_direction: true 参数进行倾斜校正。
示例 5:快速识别单行文字
用户:这是车牌号,快速识别一下
AI 助手会自动设置 quick_mode: true 参数进行快速识别。
Markdown 格式:
# OCR 识别结果
## 检测到的文本
1. 第一行文字
2. 第二行文字
3. 第三行文字
## 元数据
- **总字符数**: 42
- **总行数**: 3
- **处理时间**: 0.23 秒
JSON 格式:
{
"result": {
"direction": 67.6506,
"words_block_count": 3,
"words_block_list": [
{
"words": "第一行文字",
"confidence": 0.98,
"location": [[517, 447], [540, 504], [505, 518], [482, 461]],
"char_list": [
{
"char": "第",
"char_location": [[517, 447], [530, 479], [495, 493], [482, 461]],
"char_confidence": 0.99
}
]
}
],
"markdown_result": "第一行文字\t第二行文字\t第三行文字\n"
},
"metadata": {
"total_characters": 42,
"total_lines": 3,
"processing_time_ms": 230
}
}
服务器为常见问题提供清晰的错误消息:
| 错误码 | 说明 | 解决方案 |
|---|---|---|
| AIS.0101 | 输入参数不符合规范 | 检查 image 和 url 参数是否二选一 |
| AIS.0102 | 图片格式不支持 | 检查图片格式 |
| AIS.0103 | 图片尺寸不满足要求 | 检查图片尺寸 |
| AIS.0104 | 图片质量差 | 检查图片类型与质量 |
| AIS.0105 | 算法计算失败 | 联系华为云支持人员 |
| 错误码 | 说明 | 解决方案 |
|---|---|---|
| ModelArts.4101-4107 | Token 相关错误 | 检查 Token 是否正确 |
| ModelArts.4204 | 服务未开通 | 前往文字识别控制台开通 API |
| ModelArts.4703-4706 | OBS 相关错误 | 检查 OBS 地址和权限 |
| ModelArts.6201 | 用户账户被冻结 | 检查账户余额并完成充值 |
| 错误码 | 说明 | 解决方案 |
|---|---|---|
| APIG.0201 | 请求超时 | 检查图片大小或网络延时 |
| APIG.0301 | IAM 认证失败 | 检查 AK/SK 是否正确或 token 是否过期 |
| APIG.0308 | 超出速率限制 | 参考限流解决方案 |
mz-mcp/ ├── src/ │ ├── index.ts # 主入口文件 │ ├── types.ts # 类型定义 │ ├── constants.ts # 配置常量 │ ├── tools/ │ │ ├── ocr.ts # OCR 工具实现 │ │ └── index.ts # 工具导出 │ ├── services/ │ │ ├── huaweiClient.ts # 华为云 OCR 客户端 │ │ └── index.ts # 服务导出 │ └── schemas/ │ ├── ocr.ts # Zod 验证 schemas │ └── index.ts # Schema 导出 ├── dist/ # 编译输出 ├── package.json # 项目配置 ├── tsconfig.json # TypeScript 配置 ├── .env.example # 环境变量模板 └── README.md # 本文件
| 脚本 | 说明 |
|---|---|
npm run dev | 开发模式(自动重新编译) |
npm run build | 构建项目 |
npm start | 启动生产服务器 |
npm run clean | 清理编译输出 |
npm publish | 发布到 npm |
解决方案:
cn-east-3 改为 cn-north-4)解决方案:
解决方案:
解决方案:
quick_mode: true)处理简单图片欢迎提交 Issue 和 Pull Request!
AGPL-3.0