简介
DeepSeek-OCR 是深度求索(DeepSeek)推出的多模态 OCR 模型,其核心创新在于 上下文光学压缩技术(Contextual Optical Compression)。该技术通过将文本信息转化为像素级矩阵运算,绕过了传统分词器对长文本的处理瓶颈,有效缓解了大语言模型(LLM)在处理长文档时面临的计算爆炸问题。
模型由 DeepEncoder 编码器 和 DeepSeek-3B-MoE 解码器 构成,具备以下优势:
- 高压缩率:原始文档可压缩至原大小的 1/10;
- 高信息保真度:关键信息保留率达 97%;
- 高效推理:支持多分辨率自适应,处理速度达 8.2 页/秒;
- 低资源占用:GPU 显存仅需约 4.5GB。
在多语言识别、结构化数据提取、法律文书解析、金融票据处理、物流单据理解等场景中表现优异,显著提升了企业级文档自动化处理效率。
自开源以来,DeepSeek-OCR 在 GitHub 上获得了极高关注度,其“高压缩 + 高保真”的双重优势成为核心竞争力。
目前社区已有多个部署方案,但大多数依赖 Python 环境。本文重点介绍一个与众不同的项目——
deepseek-ocr.rs 是 DeepSeek-OCR 的纯 Rust 实现,提供:
- 轻量级 CLI 工具;
- OpenAI 兼容的 HTTP 服务端(支持
/v1/chat/completions和/v1/responses);- 统一集成视觉预处理、提示工程与推理后端;
- 支持 CPU、Apple Metal(macOS)及 NVIDIA CUDA GPU(Alpha 阶段)。
无需 Python 环境,开箱即用,非常适合嵌入现有 AI 基础设施或私有化部署。
部署方式
Docker 部署
docker run -d \
--name deepseek-ocr \
--gpus all \
-p 8000:8000 \
--shm-size="1G" \
-v /data/models/DeepSeek-OCR:/models/deepseek-ocr \
{your-image} \
deepseek-ocr-server \
--model-id=deepseek-ocr \
--weights=/models/deepseek-ocr/model-00001-of-000001.safetensors \
--tokenizer=/models/deepseek-ocr/tokenizer.json \
--model-config=/models/deepseek-ocr/config.json \
--host=0.0.0.0 \
--port=8000 \
--device=cuda \
--max-new-tokens=512
Kubernetes 部署
apiVersion: apps/v1
kind: Deployment
metadata:
name: deepseek-ocr
labels:
app: deepseek-ocr
spec:
replicas: 1
selector:
matchLabels:
app: deepseek-ocr
template:
metadata:
labels:
app: deepseek-ocr
spec:
containers:
- name: deepseek-ocr
image: {your-image}
imagePullPolicy: Always
command: ["deepseek-ocr-server"]
args:
- "--model-id=deepseek-ocr"
- "--weights=/models/deepseek-ocr/model-00001-of-000001.safetensors"
- "--tokenizer=/models/deepseek-ocr/tokenizer.json"
- "--model-config=/models/deepseek-ocr/config.json"
- "--host=0.0.0.0"
- "--port=8000"
- "--device=cuda"
- "--max-new-tokens=512"
ports:
- containerPort: 8000
name: http
protocol: TCP
resources:
limits:
nvidia.com/gpu: 1
memory: "24Gi"
cpu: "4"
requests:
memory: "24Gi"
cpu: "2"
nvidia.com/gpu: 1
volumeMounts:
- name: shm
mountPath: /dev/shm
- name: model-storage
mountPath: /models/deepseek-ocr
volumes:
- name: model-storage
hostPath:
path: /data/models/DeepSeek-OCR # 替换为实际主机路径
type: Directory
- name: shm
emptyDir:
medium: Memory
补充说明:
- 镜像地址:可自行从 官方仓库 构建,或使用预构建镜像
{registry}/deepseek-ocr-rs:latest。 - 模型来源:建议从 ModelScope 下载 DeepSeek-OCR 模型文件。
- 模型挂载:示例中使用
hostPath,生产环境可根据内部存储方案调整为 PVC 或其他方式。 - 关于
--model-config:早期官方文档未提及此参数。笔者通过源码分析发现该选项,并提交 PR 补充文档,现已合并。在离线环境中,显式指定--model-config可避免程序尝试远程下载配置文件。
测试用例
标准 OpenAI /v1/chat/completions 接口
curl -X POST http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-ocr",
"messages": [
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/paddleocr_vl_demo.png"
}
},
{
"type": "text",
"text": "提取图片中的文字"
}
]
}
],
"max_tokens": 512,
"stream": false
}'
图片来自 PaddleOCR 官方测试图,用于验证 OCR 功能。
标准 OpenAI /v1/responses 接口
curl -X POST "http://localhost:8000/v1/responses" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-ocr",
"input": [
{
"role": "user",
"content": [
{
"type": "input_text",
"text": "提取图片中的文字"
},
{
"type": "input_image",
"image_url": "https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/paddleocr_vl_demo.png"
}
]
}
],
"max_tokens": 512
}'
deepseek-ocr.rs 的优势
- OpenAI 接口兼容
完全兼容 OpenAI 的
/v1/chat/completions协议,可无缝对接 Open WebUI、LangChain、LlamaIndex 等主流 AI 生态工具,也便于接入企业自研网关。相比之下,许多其他 DeepSeek-OCR 实现采用私有 API,集成成本高。 - 无 Python 依赖,轻量高效 基于 Rust + Candle 构建,无需安装庞大的 Python 运行时或 Conda 环境。CUDA 镜像体积仅约 1.5GB,运行时内存占用显著低于 Python 方案,更适合资源受限或安全合规要求高的生产环境。
当前局限性
- 项目较新,架构可能演进 作为新兴项目,未来为支持更多模型(如 DeepSeek-OCR、PaddleOCR-VL 等),整体架构可能会重构。
- 模型配置体验有待优化
目前需分别指定
--weights、--tokenizer、--model-config三个路径。对于符合 Hugging Face 标准布局的模型目录(包含config.json、tokenizer.json、*.safetensors),理想情况下应支持统一的--model-path参数。 有机会我会和社区讨论讨论。
总结
本文介绍了截至 2025 年 11 月 的 DeepSeek-OCR 部署最佳实践,重点推荐了 deepseek-ocr.rs 这一轻量、高效、兼容性强的 Rust 实现方案。它特别适合需要私有化、离线部署且希望融入现有 AI 工作流的场景。
由于该项目仍在快速发展中,建议读者后续持续关注 官方 GitHub 仓库 获取最新文档与功能更新。