面向 DeepSeek-OCR 的一体化方案:
- GitHub 仓库:https://github.com/velist/dsocr
- Cloudflare Worker:统一接收 OCR 请求,整理图片输入、提示词与输出格式,转发至硅基流动
deepseek-ai/DeepSeek-OCR模型,并返回纯文本 / Markdown / 布局信息等多种结果。 - MCP Server:基于 Model Context Protocol 的工具服务,可在 Claude Code、Codex CLI 等支持 MCP 的客户端中直接调用该 OCR 能力。
- Shared 模块:共享输出格式、提示词等定义,保证 Worker 与 MCP 行为一致。
- 安装依赖
npm install
- 凭据配置
- 将硅基流动 Key(
siliconflowkey.env)写入apps/worker/.dev.varsprintf "SILICONFLOW_API_KEY=%s\n" "$(cat siliconflowkey.env)" > apps/worker/.dev.vars
- 部署到 Cloudflare 前,执行:
- 将硅基流动 Key(
npm run deploy --workspace @dsocr/worker # 首次会提示登录/配置 wrangler wrangler secret put SILICONFLOW_API_KEY # 交互式粘贴 Key
- Cloudflare API Token(`allcfkey.env`)可用于 `wrangler login --api-token $(cat allcfkey.env)`。
- 当前部署实例(示例):`https://dsocr-worker.vee5208.workers.dev/ocr`
### 本地开发
- 启动 Worker(端口默认 8787):
```bash
npm run dev --workspace @dsocr/worker
-
发送测试请求:
curl -X POST http://127.0.0.1:8787/ocr \ -H "Content-Type: application/json" \ -d '{ "image_url": "https://example.com/sample.png", "outputs": ["plain_text", "markdown"] }' -
MCP 服务:
npm run start --workspace @dsocr/mcp-server
默认读取
DSOCR_WORKER_URL环境变量(未设置时使用http://127.0.0.1:8787/ocr)。
npm run test # 运行全部工作区测试
npm run test --workspace @dsocr/worker
npm run test --workspace @dsocr/mcp-server仓库提供 scripts/setup-mcp.ps1 简化配置:
# 仅设置当前会话变量
pwsh -File scripts/setup-mcp.ps1
# 持久化变量并自动安装依赖、配置 CLI、启动 MCP
pwsh -File scripts/setup-mcp.ps1 `
-Persist `
-InstallDependencies `
-ConfigureClients `
-StartServer `
-WorkerUrl "https://dsocr-worker.vee5208.workers.dev/ocr" `
-TimeoutMs 120000参数说明:
-InstallDependencies:执行npm install,确保tsx等依赖可用。-Persist:通过setx写入用户级环境变量,并生成.env.mcp。-ConfigureClients:检测claude/codexCLI,自动注册dsocrMCP 服务(未安装时给出提示)。- 运行时脚本会生成/使用
scripts/start-mcp-server.cmd作为启动入口,客户端触发时自动调用,无需手工执行npm run start ...。 -StartServer:新开 PowerShell 窗口运行npm run start --workspace @dsocr/mcp-server。-WorkerUrl、-TimeoutMs:自定义 MCP 连接的 Worker 地址与超时时长。
apps/
worker/ Cloudflare Worker 源码(入口 src/index.ts)
mcp/ MCP Server 源码(入口 src/index.ts)
packages/
shared/ 公共常量与类型定义
- Worker
- 编辑
apps/worker/wrangler.toml中的name、routes等参数以匹配目标域名。 wrangler deploy部署后可通过wrangler tail观察日志。- 若需图片较大或自定义格式,可在请求体中通过
mode、outputs、prompt调整行为。
- 编辑
- MCP Server
- 打包为 Node 脚本后,可放置到任意有 STDIO 能力的环境。
- Claude Code 配置示例:
claude mcp add --transport stdio dsocr "node /path/to/apps/mcp/dist/index.js" - Codex CLI 或其他 MCP 客户端,可根据其要求配置指令/路径;默认使用 Worker 端点,如需指向线上地址可设置
DSOCR_WORKER_URL=https://your.worker.url/ocr。
| 字段 | 类型 | 说明 |
|---|---|---|
source / sources |
string / string[] | 图片本地路径、file://、HTTP URL、dataURL、Base64 均可 |
outputs |
string 或 string[] | 指定返回格式,支持 plain_text、markdown、layout_markdown、html、text_blocks 及其别名 |
mode |
string | 对应 Worker 的预设(auto、plain、markdown、layout 等) |
prompt |
string | 自定义 OCR 指令,若提供将覆盖 mode 默认提示词 |
language |
string | 优先输出语言提示(如 zh-CN、en-US) |
raw |
boolean | 为 true 时,Worker 会回传原始响应与请求 payload |
- Cloudflare Worker 体积限制 10 MB,若需要大文件请在客户端压缩或拆分。
outputs中的text_blocks返回 JSON 数组(文本 + 归一化坐标 + 置信度),便于结构化处理。- MCP 工具默认返回 Markdown 文本以及完整 JSON,可同时满足模型上下文与工程接入需求。
- 接入流式响应与任务状态跟踪。
- 在 shared 模块加入更多 DS OCR 预设(表格、票据等专用模板)。
- 引入 e2e 测试(Mock fetch)保障 Worker 行为。