Skip to main content
Glama
tcguoxing
by tcguoxing
README.md
# paddle-ocr-mcp-server

PaddleOCR PP-OCRv6 的 **FastMCP server**:把云端 PaddleOCR 识别能力封装为标准 MCP 工具,任何 MCP 客户端(Claude Code 等)都能通过协议直接调用图片/截图/扫描件里的文字识别。

## 特性

- **一个工具搞定 OCR**:`paddle_ocr(image)`,传入本地路径或 URL,返回识别文本行 + 置信度(JSON)。
- **零第三方依赖的客户端**:`ocr_client.py` 仅用 Python 标准库(urllib / json / base64)实现「提交 → 轮询 → 拉取结果」全流程,可独立复用。
- **可测**:解析逻辑抽成纯函数 `parse_jsonl`,6 个单测覆盖正常 / 空输入 / 异常路径,不联网、不依赖 token。
- **token 走环境变量**:`PADDLEOCR_TOKEN`(已写入 `~/.zshrc`),密钥不进代码不进仓库。

## 快速开始

```bash
cd ~/Code/paddle-ocr-mcp-server
python3 -m venv .venv
.venv/bin/pip install -e ".[dev]"

# token 从环境变量读取(若新 shell 未继承,先 source ~/.zshrc 或 export)
```

## 运行 / 验证

```bash
# 1) 直接跑 server(stdio,Claude Code 默认传输)
.venv/bin/paddle-ocr-mcp

# 2) 单测(不联网、不依赖 token)
.venv/bin/python -m pytest -q

# 3) 用 MCP inspector 调试(可选)
npx @modelcontextprotocol/inspector .venv/bin/paddle-ocr-mcp
```

## 接入 Claude Code

```bash
claude mcp add paddle-ocr -- .venv/bin/paddle-ocr-mcp
```

之后在 Claude Code 里直接说「识别这张图 xxx.png 里的字」,模型会自动调用 `paddle_ocr` 工具。

## 工具

- `paddle_ocr(image: str) -> str`
  - `image`:图片**本地路径**或 **URL**
  - 返回 JSON 数组 `[{"text": "...", "confidence": 0.99}, ...]`

## 项目结构

```
src/paddle_ocr_mcp/
├── ocr_client.py   # OCR 客户端(提交/轮询/解析),零第三方依赖,纯函数可测
└── server.py       # FastMCP server + @mcp.tool paddle_ocr
tests/              # ocr_client 纯函数单测(不联网)
```

## 开发

```bash
.venv/bin/python -m pytest -v     # 跑测试
.venv/bin/paddle-ocr-mcp --transport sse   # 需要 HTTP 传输时
```

TDQS

A4.3/5.0

Scored across 1 tool

Disambiguation5/5

只有一个工具,不存在与其他工具混淆的情况,代理可以毫无歧义地选择它。

Naming Consistency5/5

工具名称paddle_ocr简洁地反映了技术栈和功能,虽然只有一个工具,但命名无混乱,可视为一致。

Tool Count3/5

仅1个工具,对于OCR这一单一用途来说显得单薄,但核心功能已覆盖,属于边界情况。

Completeness2/5

仅提供图片文字识别,缺少语言选择、方向校正、批量处理等常见OCR能力,表面不完整。

Maintenance

ActivityMaintained
ResponsivenessNo issues