news 2026/6/17 14:03:00

部署PaddleOCR-VL-1.6的CPU版本!通过Dockerfile在飞牛OS上

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
部署PaddleOCR-VL-1.6的CPU版本!通过Dockerfile在飞牛OS上

1、稀奇古怪的玩法

在部署PaddleOCR-VL-1.5的文章中,有小伙伴提到可以出一期在飞牛NAS上部署的文章吗?答案当然是可以!
这真是非常猎奇的玩法,我从来没有这么干过。有没有打开新世界的门?我不知道。
但是折腾是一刻不停啊,从虚拟机安装飞牛OS,飞牛上的Docker,到Dockerfile创建镜像,再到部署容器,最后到调用接口,整个过程都是乐此不疲。

同时,我也感慨技术更新的速度飞快。刚刚写完PaddleOCR-VL-1.5的文章,就发现PaddleOCR-VL-1.6已经发布。这样的节奏,往好了说是让你在有限的时间里,看到更多的事物,经历更多的事情。就像今天看到的一个视频说,张学良将军出生在清朝末代皇帝时期,经历过时代巨变,听过周杰伦的歌,于《范特西》发布后离世。那往坏了说呢?我就先不说了。

反正在AI程序员的加持下,软件开放的速度是越来越快。我感受到了时空的错乱。

2、NAS和飞牛OS

NAS全拼是Network Attached Storage,即网络附加存储,可以看作是一个私人的云盘。它主要的功能是文件的存储和备份。就事论事来说,我到现在也没有使用过。我还是老模式,个人的数字文件,直接放到移动硬盘中。确实没有非常重要到多备份的情况。有人问了,那电影呢?我还真有两块硬盘存电影,偶尔看看,剩下的直接在线看了。不过啊,要是NAS真的非常方便,我也会考虑考虑。
飞牛 OS(fnOS) 是一个国产的、免费的 NAS 操作系统,除了基本的文件存储和备份功能,它的娱乐软件也很好,像智能影视啊等等。它默认提供了Docker,让你可以做一些更有意思,更脑洞打开的事情,就比如部署PaddleOCR-VL-1.6。

3、PaddleOCR-VL-1.6

通过欠优化区域精炼与渐进式后训练拓展文档解析的边界,这是PaddleOCR-VL-1.6的出场介绍。紧接着,是它的官方介绍:我们推出 PaddleOCR-VL-1.6,这是在 PaddleOCR-VL-1.5 基础上升级的轻量级文档解析模型。PaddleOCR-VL-1.6 引入了一种区域感知的数据优化框架,能够识别前代模型中的薄弱区域,并对这些区域进行有针对性的增强,从而提升监督信号的可靠性。此外,该模型还采用了一种基于精选数据筛选和强化学习的渐进式后训练方案,通过分阶段优化将模型性能推向更高水平。PaddleOCR-VL-1.6 在 OmniDocBench v1.6 上取得了 96.33% 的全新 SOTA 成绩,同时也在 OmniDocBench v1.5 和 Real5-OmniDocBench 上刷新了记录,并在与顶级视觉语言模型(VLM)的对比中展现出强劲竞争力。该模型架构与 PaddleOCR-VL-1.5 完全兼容,支持零成本即插即用迁移。
总结就是,它是从1.5基础上升级来的,比1.5更强,而且无缝升级。
顺便提一下SOTA:State-of-the-Art,直译是艺术的巅峰,在AI领域经常使用,翻译为“最先进的”或者是“当前最高水平”。

4、虚拟机中安装飞牛OS

只是试验性质,所以选择成本最小的方式,虚拟机安装。官网(https://www.fnnas.com/)下载飞牛OS,使用virtualbox安装,给多些资源就好,剩下的就下一步下一步,直到重启后安装完成。出现下面的画面。

此时我面对终端,迅速输入我在虚拟机中设置的账户和密码,确定后得到的都是负反馈-登录不进去。我以为是自己记错了账户和密码,其实不然。因为到现在为止,我们并没有账户和密码。怎么才能有呢?需要在webUI上注册。

这就给虚拟机安装的我添加了麻烦。我关掉虚拟机,在网络设置中,配置端口5666的转发。
简单描述就是虚拟机网络连接方式是“网络地址转换(NAT)”,在“高级”里点击 “端口转发”,增加一条规则,将里面的端口写成5666.
重启虚拟机,依然是刚刚的界面。这时在主机的浏览器中打开:127.0.0.1:5666
飞牛webUI就出现在你的眼前,接下来就配置你的账户和密码。

进入webUI的桌面后,你会发现它跟普通操作系统的桌面非常类似。该有的都有,并且Docker图标也非常显眼的出现在桌面上。

同时,虚拟机终端上,你也可以用刚刚注册的账户和密码登录。比如,我想看看这个Docker是什么版本:

5、Dockerfile构建cpu版本镜像

上一次直接采用了官方的gpu版本的镜像验证了VL-1.5的能力。这一次不同,虚拟机上的飞牛OS没有gpu能力,那就改用cpu方案吧。官方并没有cpu版本的镜像,思考再三,还是自己构建最为妥当。
我的想法是,先用本地的Docker快速验证,导出镜像tar包,飞牛OS中直接导入。岂不美哉?

5.1 Dockerfile设计

在创建镜像前,需要确定好各个依赖软件的版本:
python版本要求在3.9~3.13之间,
PaddlePaddle要求3.2.1及以上,
PaddleOCR-VL基础包paddleocr[doc-parser]>=3.6.0。
基于此,我选择在python:3.10-slim镜像基础上构建。

5.1.1 基础配置和基础软件

FROM m.daocloud.io/docker.io/library/python:3.10-slim# 设置工作目录WORKDIR /app# 设置apt镜像源为清华源RUNsed-i's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g'/etc/apt/sources.list.d/debian.sources# 设置 pip 镜像源为清华源RUN pip configsetglobal.index-url https://pypi.tuna.tsinghua.edu.cn/simple&&\pip configsetglobal.trusted-host pypi.tuna.tsinghua.edu.cn# 安装运行时必需的系统库RUNapt-getupdate&&apt-getinstall-y--no-install-recommends\libgl1\libglib2.0-0\libgomp1\wget\&&rm-rf/var/lib/apt/lists/*# 1. 升级 pipRUN pipinstall--upgradepip# 2. 安装 PaddlePaddle 3.2.1(CPU版本)# gpu版本只需要:pip install paddlepaddle-gpu==3.2.1 -i https://www.paddlepaddle.org.cn/packages/stable/cu126/RUN pipinstallpaddlepaddle==3.2.1# 3. 安装 PaddleOCR 和 modelscope(魔塔,用来下载模型)RUN pipinstall"paddleocr[doc-parser]>=3.6.0"modelscope

5.1.2 下载模型、映射及配置环境变量

# 4. 下载模型# ============================================# 下载 PP-DocLayoutV3 模型# ============================================RUNmkdir-p/paddle_models&&\modelscope download--modelPaddlePaddle/PP-DocLayoutV3\--local_dir/paddle_models/PP-DocLayoutV3# ============================================# 下载 PaddleOCR-VL-1.6 模型# ============================================RUNmkdir-p/paddle_models&&\modelscope download--modelPaddlePaddle/PaddleOCR-VL-1.6\--local_dir/paddle_models/PaddleOCR-VL-1.6# ============================================# 创建软链接到 PaddleX 默认缓存路径# ============================================RUNmkdir-p/root/.paddlex/official_models&&\ln-s/paddle_models/PaddleOCR-VL-1.6 /root/.paddlex/official_models/PaddleOCR-VL-1.6&&\ln-s/paddle_models/PP-DocLayoutV3 /root/.paddlex/official_models/PP-DocLayoutV3# 设置环境变量ENVPADDLEX_HOME=/root/.paddlex CMD["/bin/bash"]

Dockerfile写完后,可以直接用docker的build命令来构建,下面作为一个参考:

PS D:\docker\paddleocr-vl-1.6>dockerbuild-tpaddleocr-vl-1.6-cpu:latest-fDockerfile.[+]Building140.3s(12/12)FINISHED

当然,用compose是更加方便的一种管理方式。

5.2 docker-compose文件

services: paddleocr-vl-cpu: build:.image: paddleocr-vl-1.6-cpu:latest# 容器的名称container_name: paddleocr-vl-cpu restart: unless-stopped ports: -"8080:8080"stdin_open:truetty:truecommand:["/bin/bash"]

启动:镜像的构建,容器的启动一条龙服务

PS D:\docker\paddleocr-vl-1.6>docker-composeup-d--buildPS D:\docker\paddleocr-vl-1.6>dockerps-aCONTAINER IMAGE COMMAND PORTS NAMES paddleocr-vl-1.6-cpu:latest"/bin/bash"0.0.0.0:8080->8080/tcp paddleocr-vl

6、测试VL-1.6模型

先来看看构建的镜像大小:

dockder images paddleocr-vl-1.6-cpu:latest7.03GB2.58GB

非常大,看起来需要的模型是已经下载了。
我们到内部去看看:

PS D:\docker\paddleocr-vl-1.6>dockerexec-itpaddleocr-vl-cpu /bin/bash root@4b3815e771ff:/app# cdroot@4b3815e771ff:~# cd .paddlex/root@4b3815e771ff:~/.paddlex# cd official_models/root@4b3815e771ff:~/.paddlex/official_models# lsPP-DocLayoutV3 PaddleOCR-VL-1.6

可以看到,需要的两个模型都可以找到,那么接下来激动人心的时刻到了,测试那张新闻图片吧。

root@4b3815e771ff:~/.paddlex/official_models# paddleocr doc_parser -i https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/paddleocr_vl_demo.png --pipeline_version v1.6Creating model:('PP-DocLayoutV3', None, None)Model files already exist. Using cached files. To redownload, please delete the directory manually:`/root/.paddlex/official_models/PP-DocLayoutV3`.Creating model:('PaddleOCR-VL-1.6-0.9B', None, None)Model files already exist. Using cached files. To redownload, please delete the directory manually:`/root/.paddlex/official_models/PaddleOCR-VL-1.6`.Bucketed engine_config has no entryforresolved engine'paddle_dynamic';using an empty configforthat engine. Loading configurationfile/root/.paddlex/official_models/PaddleOCR-VL-1.6/config.json Loading weightsfile/root/.paddlex/official_models/PaddleOCR-VL-1.6/model.safetensors[2026/06/13 03:01:40]paddleocr INFO: Processed item0in350333.27198028564ms

还是那台PC机:
CPU: i7-13700KF 3.40 GHz
内存:32GB
整个推理过程350秒,5分多钟,这就是CPU版本的PaddleOCR-VL-1.6的推理时间。可以劝退了吧。

7、导出镜像

# 直接导出 tar 文件dockersave-opaddleocr-vl-1.6-cpu.tar paddleocr-vl-1.6-cpu:latest

由于没有做压缩,这个tar文件在2.4GB大小。

8、飞牛OS导入镜像

在飞牛webUI的文件管理应用中,将上面的tar包上传到飞牛OS的文件系统中。

接下来准备导入。
但是在飞牛webUI的Docker页面,我并没有找到导入镜像的功能。怎么办?我准备试试用终端。

# 从 tar 导入dockerload-ipaddleocr-vl-1.6-cpu.tar

9、创建容器

这次回到飞牛webUI的Docker页面,点击创建容器。

10、进入容器终端执行文档识别

在容器列表中找到 paddleocr-vl-cpu
点击右侧的终端图标(或“详情”→“控制台”)
在容器中执行文档识别命令:

paddleocr doc_parser-ihttps://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/paddleocr_vl_demo.png--pipeline_versionv1.6--output_dir./output

这个虚拟机是在笔记本电脑上,分配了16GB内存,CPU给了6核,推理时间就更加惨不忍睹。简直就是不可用。

操作视频见同名视频号或公众号。

11、写在后面

折腾了一圈,得出一个结论:CPU部署PaddleOCR-VL-1.6模型,推理时间太长了,不能接受。
有什么收获呢?
最主要的,我们用Dockerfile构建了一个镜像,只需要稍加改动paddlepaddle版本,就可以既支持cpu又支持gpu。这个镜像我上传到云盘了,在公众号菜单可以找到。使用上面的Dockerfile和docker-compose文件,你可以构建自己的镜像。
其次,认识了飞牛OS。后面可以做网络穿透后,真正用作自己的NAS。

就这样,折腾不易,给个赞点个关注再走!
另外,要是有其他好玩的,评论区告诉我,大家一起折腾!

参考

  1. https://help.fnnas.com/articles/v1/start/install-os
  2. https://github.com/ophub/fnnas
  3. https://www.paddleocr.ai/main/version3.x/algorithm/PaddleOCR-VL/PaddleOCR-VL-1.6.html
  4. https://www.modelscope.cn/models/PaddlePaddle/PaddleOCR-VL-1.6
  5. https://www.modelscope.cn/models/PaddlePaddle/PP-DocLayoutV3
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/17 13:56:35

G-Helper:华硕笔记本的轻量化硬件控制中心替代方案

G-Helper:华硕笔记本的轻量化硬件控制中心替代方案 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, Exper…

作者头像 李华
网站建设 2026/6/17 13:49:59

App HTTPS抓包实战:从代理调试到底层流量分析的完整指南

1. 项目概述:为什么App抓包比Web抓包复杂得多?如果你做过Web开发,用Charles或Fiddler抓个浏览器的HTTPS请求,基本是开箱即用。但当你把同样的工具和配置用在移动App上,大概率会碰一鼻子灰:代理设置好了&…

作者头像 李华
网站建设 2026/6/17 13:47:50

ZigBee ZCL属性访问机制深度解析:从原理到NXP实践

1. 项目概述:从零开始理解ZigBee ZCL如果你正在开发基于ZigBee的智能设备,无论是智能灯泡、温控器还是传感器,那么“ZigBee Cluster Library”这个词组你一定不陌生。它通常被简称为ZCL,是ZigBee协议栈中那个既关键又让人有点头疼…

作者头像 李华
网站建设 2026/6/17 13:30:09

地平线BPU部署实战:YOLOv8在J5/X3上的算法适配与性能优化

地平线BPU部署实战:YOLOv8在J5/X3上的算法适配与性能优化地平线的BPU不是通用NPU——它是专门为CNN优化的贝叶斯处理器。理解BPU的"脾气",才能把YOLOv8跑出最佳性能。这篇文章从架构原理到实战调优,一次性讲透。BPU架构深度解析 地…

作者头像 李华
网站建设 2026/6/17 13:29:59

生产级机器学习系统:从模型部署到可验证决策流水线

1. 项目概述:当模型走出笔记本,真正开始“呼吸”现实世界 你有没有经历过这样的场景?模型在Jupyter里跑得飞起,AUC 0.92,F1 0.87,老板点头,产品拍板,PRD里写着“智能风控模块Q3上线”…

作者头像 李华
网站建设 2026/6/17 13:28:13

多维聚合的数据操作三阶段:预处理、聚合内、后置结构

1. 项目概述:多维聚合中的数据操作,远不止GROUP BY那么简单“Part 20: Data Manipulation in Multi-Dimensional Aggregation”这个标题乍看像是一门数据库课程的第20讲,但如果你真在业务一线做过报表开发、BI建模或数据中台建设,…

作者头像 李华