最简路径是用docker启动预构建镜像:docker run -d --gpus all --shm-size=2g -p 8501:8501 -v $(pwd)/output:/app/output registry.cn-hangzhou.aliyuncs.com/csdn_mirror/deepseek-ocr2:latest,首次运行自动拉取12gb模型,待日志显示“running on http://0.0.0.0:8501”后访问。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

直接跑通 DeepSeek-OCR-2 的最小可行路径
DeepSeek-OCR-2 不是 pip install 就能调用的普通库,它本质是一个带视觉编码器 + MoE 解码器的端到端文档理解系统,必须加载完整模型权重才能运行。想“调用 OCR 库”式地写几行 Python 就出结果?不行——你得先让它“活起来”。
最省事、成功率最高的方式,是用 Docker 启动预构建镜像:
docker run -d --gpus all --shm-size=2g -p 8501:8501 -v $(pwd)/output:/app/output registry.cn-hangzhou.aliyuncs.com/csdn_mirror/deepseek-ocr2:latest- 确保已安装
Docker Desktop(Win/macOS)或docker-ce(Linux),且 NVIDIA 驱动 ≥525 -
--shm-size=2g是关键:漏掉会导致 OpenCV 在多页 PDF 解析时卡死或报OSError: Unable to open shared memory object - 首次启动会自动拉取模型(约 12GB),别急着刷新页面——等终端日志出现
Running on http://0.0.0.0:8501再访问
为什么不能直接 pip install deepseek-ocr
因为官方没发布 PyPI 包。GitHub 仓库(deepseek-ai/DeepSeek-OCR)只提供推理代码和配置模板,不包含模型权重,也不支持 pip install -e . 直接运行。你看到的 requirements.txt 只是依赖清单,不是可执行包。
常见误解场景:
- 误以为
from deepseek_ocr import OCRPipeline能直接导入——实际会报ModuleNotFoundError - 手动
git clone后运行python app.py,结果卡在model = AutoModel.from_pretrained(MODEL_PATH),因为MODEL_PATH指向空目录 - 试图用 Hugging Face
pipeline("document-question-answering")加载deepseek-ai/DeepSeek-OCR-2——该模型不兼容标准 pipeline 接口,缺少feature_extractor和对应 config 结构
API 调用:本地服务 vs 硅基流动云 API
如果你需要程序化调用(比如集成进爬虫或数据清洗脚本),有两种稳定路径,选错会白忙活:
-
本地 FastAPI 服务:启动镜像后,默认不暴露 API;需进容器执行
./start_api.sh --port 8000(见星图 GPU 平台教程),然后 POST 到http://localhost:8000/ocr,body 是 base64 编码的 PDF 字节流 -
硅基流动云 API:无需本地 GPU,但必须用
deepseek-ai/DeepSeek-OCR(注意末尾没 “-2”),不是 Hugging Face 上那个 3B-MoE 模型;请求地址是https://api.siliconflow.cn/v1/chat/completions,走 LLM 接口协议,messages中要塞进 base64 图片和提示词,不是传统 OCR 的 RESTful 设计 - 混淆两者的典型错误:
requests.post("http://localhost:8501/...", json={"image": b64})——8501是 Gradio Web UI 端口,不接受 raw API 请求
PDF 识别失败的三个高频原因
上传后进度条不动、返回空文本、表格全乱序——大概率不是模型问题,而是输入没过预处理关:
-
扫描 PDF 分辨率太低:低于 200 DPI 时,
DeepEncoder的 SAM-base 模块无法准确定位文字边界,建议用 Adobe Acrobat 或pdf2image先转成 300 DPI PNG 再喂入 -
PDF 含加密或权限限制:即使能打开,
PyMuPDF(底层解析库)可能读不出文本层,报ValueError: page is encrypted;用qpdf --decrypt input.pdf output.pdf预处理 -
文件名含中文或空格:Gradio 上传组件在某些浏览器下会截断路径,导致
os.path.exists()返回 False;统一改用英文下划线命名,如report_q4_2025.pdf
真正难的不是调通,而是让 PDF 过得了预处理这关——模型再强,也读不懂它看不见的东西。











