DotsOCR 环境搭建指南_dot installation
itomcoil 2025-09-18 20:14 1 浏览
DotsOCR 环境搭建指南
支持平台:Linux(推荐)或 Windows + WSL2
项目地址:
https://github.com/rednote-hilab/dots.ocr
一、Windows 用户:启用 WSL 并安装 Ubuntu
仅适用于 Windows 10 版本 2004 及以上(内核版本 ≥ 19041)或 Windows 11。
1. 检查系统版本
- 按下 Win + R,输入 winver,确认系统版本满足要求。
- 若不满足,请参考微软官方文档进行手动安装:旧版 WSL 的手动安装步骤 | Microsoft Learn
2. 启用 WSL 功能
以管理员身份运行 PowerShell:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
重启计算机后继续下一步。
3. 安装 Ubuntu 发行版
- 打开 Microsoft Store
- 搜索 Ubuntu
- 推荐选择长期支持版本(如 Ubuntu 18.04.5 LTS 或 20.04 LTS)
- 下载并启动,按提示设置用户名和密码
成功标志:终端中出现 username@hostname:~$ 提示符。
二、在 Ubuntu 中安装 Conda
1. 下载 Miniconda
访问官网获取最新链接,或执行以下命令(以 Python 3.9 为例):
wget https://repo.anaconda.com/miniconda/Miniconda3-py39_4.12.0-Linux-x86_64.sh
2. 赋予执行权限并安装
chmod +x Miniconda3-py39_4.12.0-Linux-x86_64.sh
./Miniconda3-py39_4.12.0-Linux-x86_64.sh
按提示完成安装(接受协议、选择路径等)。
3. 配置环境变量
编辑 ~/.bashrc 文件:
vi ~/.bashrc
在文件末尾添加:
export PATH=$HOME/miniconda3/bin:$PATH
保存并生效:
source ~/.bashrc
4. 验证安装
conda --version
输出类似:conda 4.12.0 表示成功。
三、创建 DotsOCR 虚拟环境
1. 创建并激活环境
conda create -n dots_ocr python=3.12
conda activate dots_ocr
推荐使用 Python 3.12 以兼容最新依赖。
四、克隆项目代码
重要提醒:项目名为 dots.ocr,但后续模型路径不能含 .,因此需重命名!
git clone https://github.com/rednote-hilab/dots.ocr.git
mv dots.ocr dots_ocr # 将目录名中的点改为下划线
cd dots_ocr
此时项目路径为:./dots_ocr/
五、安装 PyTorch 与 CUDA 支持
1. 查看 CUDA 版本
nvidia-smi
查看顶部显示的 CUDA Version(例如 12.8)
2. 安装对应版本的 PyTorch(示例为 CUDA 12.8)
pip install torch==2.7.0 torchvision==0.22.0 torchaudio==2.7.0 \
--index-url https://download.pytorch.org/whl/cu128
若你的 CUDA 是 12.4,请将 cu128 改为 cu124
六、安装 CUDA 工具链(解决编译问题)
conda install cuda-toolkit -c nvidia
用于支持 flash-attn 等库的本地编译。
七、安装项目依赖
pip install -e .
-e 表示可编辑模式,便于开发调试。
八、下载模型权重
再次强调:模型保存目录名不能包含 .
使用 ModelScope(国内推荐)
python tools/download_model.py --type modelscope
默认会下载到:
./weights/DotsOCR/
建议保持此目录名为 DotsOCR(无点号)
九、使用 vLLM 部署(推荐方式)
1. 设置环境变量
export hf_model_path=./weights/DotsOCR
export PYTHONPATH=$(dirname "$hf_model_path"):$PYTHONPATH
2. 注册自定义模型模块到 vLLM
修改 vllm 入口脚本,使其加载 DotsOCR 自定义模型类。
sed -i '/^from vllm\.entrypoints\.cli\.main import main$/a\
from DotsOCR import modeling_dots_ocr_vllm' `which vllm`
注意事项:
- 确保 DotsOCR 是你的模型目录名(不含 .)
- 如果你用了 dots_ocr,请替换:sed -i 's/DotsOCR/dots_ocr/g' `which vllm`
- 查看 vllm 路径:which vllm
- 若权限不足,尝试 sudo 或检查虚拟环境权限。
3. 启动 vLLM 服务
CUDA_VISIBLE_DEVICES=0 \
vllm serve ${hf_model_path} \
--tensor-parallel-size 1 \
--gpu-memory-utilization 0.95 \
--chat-template-content-format string \
--served-model-name DotsOCR \
--trust-remote-code
服务默认监听 http://localhost:8000
十、测试 vLLM 推理接口
python ./demo/demo_vllm.py --prompt_mode prompt_layout_all_en
支持不同 --prompt_mode 参数,请根据需求调整。
十一、启动 Web API 服务(Flask + vLLM)
复制示例 API 文件至项目目录(若不存在):
cp ./demo/vllm_flask_api.py ./demo/flask_api.py # 如有需要
启动服务:
python ./demo/vllm_flask_api.py
默认端口:5080
接口地址示例:http://<your-server-ip>:5080/inference
十二、Hugging Face 原生推理(可选)
如果你不想使用 vLLM,也可以直接运行原生 HF 推理:
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained(
"./weights/DotsOCR",
trust_remote_code=True
)
tokenizer = AutoTokenizer.from_pretrained("./weights/DotsOCR", trust_remote_code=True)
同样要求:路径不含 .,且设置 trust_remote_code=True
常见问题与解决方案
问题 | 原因 | 解决方法 |
ModuleNotFoundError: No module named 'DotsOCR' | 路径含 . 或 PYTHONPATH 未设置 | 重命名目录为 DotsOCR,并导出 PYTHONPATH |
Permission denied on which vllm | 脚本不可写 | 使用 sudo 或手动编辑该文件 |
flash-attn 编译失败 | 缺少 CUDA 工具链 | 运行 conda install cuda-toolkit |
vLLM 启动报错 trust_remote_code required | 未启用远程代码信任 | 添加 --trust-remote-code 参数 |
最终建议
- 所有涉及路径的名称避免使用 .(如 dots.ocr → dots_ocr )
- 推荐使用 vLLM 0.9.1+ 版本部署
- 国内用户优先使用 --type modelscope 下载模型
相关推荐
- ELK架构部署以及应用_elk部署方案
-
一、ELK介绍ELK代表的是Elasticsearch,Logstash,KibanaElasticsearch:日志存储、搜索分析功能Logstash:数据收集,日志收集系统Kibana:数据可视化...
- 本地部署 DeepSeek Janus Pro 文生图大模型
-
Hello,大家新年好。在这个春节期间最火的显然是DeepSeek了。据不负责统计朋友圈每天给我推送关于DeepSeek的文章超过20篇。打开知乎跟B站也全是DeepSeek相关的内容。...
- DotsOCR 环境搭建指南_dot installation
-
DotsOCR环境搭建指南支持平台:Linux(推荐)或Windows+WSL2项目地址:https://github.com/rednote-hilab/dots.ocr一、Windo...
- spark+python环境搭建_pycharm配置spark环境
-
最近项目需要用到spark大数据相关技术,周末有空spark环境搭起来...目标spark,python运行环境部署在linux服务器个人通过vscode开发通过远程python解释器执行代码准备...
- window下sublimeIDE安装python_win10安装python
-
window下开发python使用sublimeIDE1安装sublimehttp://www.sublimetext.com/22安装PackageControl提供了安装sublime...
- JupyterLab 快速环境配置 (一)_jupyter的环境配置
-
JupyterLab快速环境配置(一)一只小胖子[互联网运营|直播电商|广告行业]从业者软件说明:JupyterLab是一个基于web浏览器的在线文档/代码运行集成环境,支持文档显示/代...
- 栋察宇宙(二十一):Python 文件操作全解析
-
分享乐趣,传播快乐,增长见识,留下美好。亲爱的您,这里是LearingYard学苑!今天小编为大家带来“Python文件操作全解析”欢迎您的访问!Sharethefun,spreadthe...
- 外婆都能学会的Python教程(十八):Python读取配置文件绘制图形
-
前言Python是一个非常容易上手的编程语言,它的语法简单,而且功能强大,非常适合初学者学习,它的语法规则非常简单,只要按照规则写出代码,Python解释器就可以执行。下面是Python的入门教程介绍...
- Python自动化办公应用学习笔记38—文件读写方法2
-
1.文件迭代文件对象是可迭代的,可以逐行迭代文件。withopen('data.txt','r')asfile:forlineinfile:#逐行迭...
- 简析python 文件操作_python文件内容操作
-
一、打开并读文件1、file=open('打开文件的路径','打开文件的权限')#打开文件并赋值给file#默认权限为r及读权限str=read(num)读文件并放到字符串变量中,其中num表...
- 如何在Python中保存文件?如何读取文件?示例代码
-
Python中保存文件是一项非常基本的任务,它允许我们将程序输出保存到磁盘上,以便以后使用或与他人共享。本文将介绍如何在Python中保存文件的方法,以及如何读取已有的文件和为代码添加注释。使用ope...
- 高效办公:Python处理excel文件,摆脱无效办公
-
一、Python处理excel文件1.两个头文件importxlrdimportxlwt其中xlrd模块实现对excel文件内容读取,xlwt模块实现对excel文件的写入。2.读取exce...
- python中12个文件处理高效技巧,不允许你还不知道
-
在Python中高效处理文件是日常开发中的核心技能,尤其是处理大文件或需要高性能的场景。以下是经过实战验证的高效文件处理技巧,涵盖多种常见场景:一、基础高效操作1.始终使用上下文管理器(with语句)...
- python 目录结构的规划,应该先建立好
-
上一篇文章说了【函数、类、模块、包】,现在说一下python一般工程的目录结构一般习惯这样规划目录,在开始一个工程前,最好先把目录结构规划好。一、为什么要有一个比较清晰的目录结构此处省略一万字....
- 和尧名大叔一起从0开始学Python编程-简单读写文件
-
0基础自学编程是很痛苦的一件事情,所以我想把自己学习的这个过程记录下来,让想学编程的人少走弯路,大叔文化程度较低,可能会犯一些错误,欢迎大家督促我。今天,我们来学习一下用Python简单读写文件,这里...
- 一周热门
- 最近发表
-
- ELK架构部署以及应用_elk部署方案
- 本地部署 DeepSeek Janus Pro 文生图大模型
- DotsOCR 环境搭建指南_dot installation
- spark+python环境搭建_pycharm配置spark环境
- window下sublimeIDE安装python_win10安装python
- JupyterLab 快速环境配置 (一)_jupyter的环境配置
- 栋察宇宙(二十一):Python 文件操作全解析
- 外婆都能学会的Python教程(十八):Python读取配置文件绘制图形
- Python自动化办公应用学习笔记38—文件读写方法2
- 简析python 文件操作_python文件内容操作
- 标签列表
-
- ps图案在哪里 (33)
- super().__init__ (33)
- python 获取日期 (34)
- 0xa (36)
- super().__init__()详解 (33)
- python安装包在哪里找 (33)
- linux查看python版本信息 (35)
- python怎么改成中文 (35)
- php文件怎么在浏览器运行 (33)
- eval在python中的意思 (33)
- python安装opencv库 (35)
- python div (34)
- sticky css (33)
- python中random.randint()函数 (34)
- python去掉字符串中的指定字符 (33)
- python入门经典100题 (34)
- anaconda安装路径 (34)
- yield和return的区别 (33)
- 1到10的阶乘之和是多少 (35)
- python安装sklearn库 (33)
- dom和bom区别 (33)
- js 替换指定位置的字符 (33)
- python判断元素是否存在 (33)
- sorted key (33)
- shutil.copy() (33)