OpenAI-compatible local macOS proxy that gives text-only Deepseek-compatible chat requests lightweight multimodal OCR capability through Apple Vision.
Mac 本地 OpenAI API 兼容代理:接收 OpenAI Chat Completions 请求,使用 macOS 原生 Apple Vision 先对图片做 OCR,再把 OCR 文本作为上下文注入并转发到 Deepseek 官方接口。
- 对外模型名:
OCR-Deepseek - 内部上游模型:
deepseek-v4-flash - 图片来源:支持 OpenAI
image_url消息里的data:base64 图片和http(s):图片 URL - OCR 引擎:macOS 原生
Vision.framework,无需云端 OCR - 兼容接口:
GET /v1/models、POST /v1/chat/completions - 流式输出:
stream: true时透传 Deepseek SSE 响应
- macOS 11+
- Xcode Command Line Tools(提供
clang和 macOS SDK) - Node.js 18+
安装 Xcode Command Line Tools:
xcode-select --install在本项目目录执行:
cd ocr-deepseek-proxy
export DEEPSEEK_API_KEY="your_deepseek_api_key"
./scripts/start.sh服务默认监听:
http://127.0.0.1:8787
- Base URL:
http://127.0.0.1:8787/v1 - Model:
OCR-Deepseek - API Key: 任意非空字符串即可(本地代理使用服务端环境变量
DEEPSEEK_API_KEY)
对外模型名不以 Deepseek 开头,可避免部分客户端按名称策略静默丢弃图片。
curl http://127.0.0.1:8787/v1/modelscurl http://127.0.0.1:8787/v1/chat/completions \
-H 'Authorization: Bearer local' \
-H 'Content-Type: application/json' \
-d '{
"model": "OCR-Deepseek",
"messages": [
{"role": "user", "content": "你好,介绍一下你自己"}
]
}'IMAGE_B64=$(base64 -i /path/to/image.png | tr -d '\n')
curl http://127.0.0.1:8787/v1/chat/completions \
-H 'Authorization: Bearer local' \
-H 'Content-Type: application/json' \
-d "{
\"model\": \"OCR-Deepseek\",
\"messages\": [{
\"role\": \"user\",
\"content\": [
{\"type\": \"text\", \"text\": \"请总结图片里的文字\"},
{\"type\": \"image_url\", \"image_url\": {\"url\": \"data:image/png;base64,$IMAGE_B64\"}}
]
}]
}"可用环境变量覆盖默认值:
| 变量 | 默认值 | 说明 |
|---|---|---|
HOST |
127.0.0.1 |
监听地址 |
PORT |
8787 |
监听端口 |
PUBLIC_MODEL |
OCR-Deepseek |
对外暴露模型名 |
UPSTREAM_MODEL |
deepseek-v4-flash |
Deepseek 实际模型名 |
DEEPSEEK_BASE_URL |
https://api.deepseek.com |
Deepseek API 地址 |
DEEPSEEK_API_KEY |
无 | Deepseek API Key,必填 |
OCR_BINARY |
.bin/ocr-vision |
Apple Vision OCR 辅助程序路径 |
MAX_BODY_BYTES |
52428800 |
请求体大小上限 |
REQUEST_TIMEOUT_MS |
120000 |
图片下载和上游请求超时 |
- 客户端请求
/v1/chat/completions,模型名使用OCR-Deepseek。 - 代理扫描
messages[].content[]中的image_url。 - 代理把图片保存到临时目录,并调用 Swift OCR 辅助程序。
- OCR 文本被注入到对应用户消息的上下文中。
- 请求模型名改写为
deepseek-v4-flash后转发到 Deepseek 官方接口。 - Deepseek 响应原样返回给客户端。
- 此代理提供本地 OCR 多模态增强,不会把图片二进制上传给 Deepseek,只上传 Apple Vision OCR 后的文本上下文。
- 若图片主要是非文字内容,OCR 上下文可能为空,模型无法理解纯视觉元素。
- 不要把真实 API Key 提交到 Git。请通过
DEEPSEEK_API_KEY环境变量注入,并在生产使用时限制监听地址。