当前位置: 首页 > news >正文

Ubuntu 部署 PaddleOCR 完整指南

🖥️ 系统要求

硬件要求

推荐配置

  • CPU: 4 核心 2.5GHz 以上(支持 AVX 指令集)

  • 内存: 8GB RAM 或更多

  • 存储: 20GB 可用空间(SSD 推荐)

软件要求

  • 操作系统: Ubuntu 22.04 LTS

  • Python: 3.8 - 3.11(推荐 3.9)

  • pip: 最新版本


🔧 环境准备

1. 系统更新

# 更新系统包列表
sudo apt update && sudo apt upgrade -y
​
# 安装基础工具
sudo apt install -y curl wget git vim

2. 安装系统依赖

# 安装编译工具和依赖库
sudo apt install -y \build-essential \python3-dev \python3-pip \libgomp1 \libgfortran5 \libblas3 \liblapack3 \libopencv-dev \pkg-config
​
# 安装 Python 相关依赖
sudo apt install -y \python3-venv \python3-setuptools \python3-wheel

3. 配置 Python 环境

# 检查 Python 版本
python3 --version
​
# 升级 pip
python3 -m pip install --upgrade pip
​
# 创建虚拟环境(推荐)
python3 -m venv paddleocr-env
source paddleocr-env/bin/activate
​
# 或者全局安装(不推荐生产环境)

📦 安装步骤

1. 安装 PaddlePaddle 框架

CPU 版本

# 使用阿里云镜像加速安装
python3 -m pip install paddlepaddle -i https://mirrors.aliyun.com/pypi/simple/

2. 安装 PaddleOCR

# 安装 PaddleOCR
python3 -m pip install paddleocr -i https://mirrors.aliyun.com/pypi/simple/

3. 安装 PaddleX

# 安装 PaddleX 基础版本
pip install "paddlex[base]" -i https://mirrors.aliyun.com/pypi/simple/

4. 处理依赖问题

安装核心依赖

# 如果遇到依赖问题,手动安装核心依赖
pip install numpy opencv-python pillow PyYAML packaging -i https://mirrors.aliyun.com/pypi/simple/

解决 tokenizers 编译问题

# 如果 tokenizers 依赖报错,先安装预编译版本
pip install tokenizers==0.19.1 -i https://mirrors.aliyun.com/pypi/simple/
​
# 或者跳过 tokenizers 相关功能
pip install paddleocr --no-deps -i https://mirrors.aliyun.com/pypi/simple/

5. 安装服务化部署插件

# 安装 PaddleX 服务化部署插件
paddlex --install serving

⚙️ 服务配置

1. 基本服务启动

# 启动 OCR 服务(默认端口 8080)
paddlex --serve --pipeline OCR
​
# 指定端口启动
paddlex --serve --pipeline OCR --port 8082
​
# 指定设备启动
paddlex --serve --pipeline OCR --device cpu
paddlex --serve --pipeline OCR --device gpu

2. 服务参数说明

参数说明默认值
–pipelinePaddleX 产线注册名或配置文件路径必需
–device部署设备(cpu/gpu)自动检测
–host服务器绑定地址0.0.0.0
–port服务监听端口8080
–use_hpip启用高性能推理false
–hpi_config高性能推理配置文件-

3. 配置 systemd 服务

创建服务文件

sudo nano /etc/systemd/system/paddlex-ocr.service

服务配置内容

[Unit]
Description=PaddleX OCR Service - Maximum Performance
Documentation=https://github.com/PaddlePaddle/PaddleX
After=network.target
Wants=network.target
​
[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/tmp
Environment=PATH=/usr/local/bin:/usr/bin:/bin
Environment=PADDLEX_HOME=/tmp/.paddlex
Environment=HOME=/tmp
Environment=OMP_NUM_THREADS=0
Environment=OPENBLAS_NUM_THREADS=0
Environment=MKL_NUM_THREADS=0
Environment=NUMEXPR_MAX_THREADS=0
Environment=PYTHONUNBUFFERED=1
ExecStart=/usr/local/bin/paddlex --serve --pipeline OCR --port 8082 --host 0.0.0.0
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
RestartSec=5
StandardOutput=journal
StandardError=journal
SyslogIdentifier=paddlex-ocr
​
# 无资源限制以获得最大性能
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
​
# 最小安全限制以获得最大性能
NoNewPrivileges=false
ProtectSystem=false
ProtectHome=false
ReadWritePaths=/
​
[Install]
WantedBy=multi-user.target

创建必要目录

# 创建 PaddleX 缓存目录
sudo mkdir -p /tmp/.paddlex
sudo mkdir -p /tmp/.paddlex/temp
sudo mkdir -p /tmp/.paddlex/official_models
sudo chown -R root:root /tmp/.paddlex
sudo chmod -R 755 /tmp/.paddlex

🚀 部署管理

1. 服务管理命令

# 重新加载 systemd 配置
sudo systemctl daemon-reload
​
# 启动服务
sudo systemctl start paddlex-ocr
​
# 停止服务
sudo systemctl stop paddlex-ocr
​
# 重启服务
sudo systemctl restart paddlex-ocr
​
# 查看服务状态
sudo systemctl status paddlex-ocr
​
# 设置开机自启
sudo systemctl enable paddlex-ocr
​
# 禁用开机自启
sudo systemctl disable paddlex-ocr

2. 日志管理

# 实时查看日志
sudo journalctl -u paddlex-ocr -f
​
# 查看最近的日志
sudo journalctl -u paddlex-ocr --since "1 hour ago"
​
# 查看详细日志
sudo journalctl -u paddlex-ocr -f --no-pager
​
# 清理日志
sudo journalctl --vacuum-time=7d

3. 进程管理

# 查看 PaddleX 进程
ps aux | grep paddlex
​
# 查看端口占用
sudo netstat -tlnp | grep :8082
sudo lsof -i :8082
​
# 强制终止进程(谨慎使用)
sudo pkill -f paddlex

🔍 测试验证

1. 服务测试

# 检查服务是否正常运行
curl -X GET http://localhost:8082/health
​
# 测试 OCR API(需要准备测试图片)
curl -X POST "http://localhost:8082/ocr" \-H "Content-Type: multipart/form-data" \-F "file=@test_image.jpg"

🔧 故障排除

1. 常见安装问题

问题:pip3 命令不存在

# 解决方案:安装 pip3
sudo apt update
sudo apt install -y python3-pip

问题:libgomp.so.1 缺失

# 解决方案:安装 OpenMP 库
sudo apt install -y libgomp1 gcc g++ libomp-dev

问题:tokenizers 编译失败

# 解决方案1:安装预编译版本
pip install tokenizers==0.19.1 -i https://mirrors.aliyun.com/pypi/simple/
​
# 解决方案2:跳过 tokenizers
pip install paddleocr --no-deps -i https://mirrors.aliyun.com/pypi/simple/
pip install numpy opencv-python pillow PyYAML packaging -i https://mirrors.aliyun.com/pypi/simple/

2. 服务启动问题

问题:端口被占用

# 查看占用端口的进程
sudo lsof -i :8080
​
# 使用其他端口
paddlex --serve --pipeline OCR --port 8082

📊 监控和维护

1. 系统监控

# 监控系统资源
htop
iostat -x 1
vmstat 1# 监控网络连接
ss -tuln | grep :8082

2. 日志分析

# 分析错误日志
sudo journalctl -u paddlex-ocr | grep ERROR# 统计请求量
sudo journalctl -u paddlex-ocr | grep "POST /ocr" | wc -l

📚 参考资源

  • PaddleOCR 官方文档

  • PaddleX 官方文档

  • PaddlePaddle 官方文档

http://www.dtcms.com/a/304505.html

相关文章:

  • Ubuntu 抽取系统制作便于chroot的镜像文件
  • C#开发基础之深入理解“集合遍历时不可修改”的异常背后的设计
  • 三十一、【Linux网站服务器】搭建httpd服务器演示个人主页、用户认证、https加密网站配置
  • Solar月赛(应急响应)——攻击者使用什么漏洞获取了服务器的配置文件?
  • GESP2025年6月认证C++七级( 第三部分编程题(2)调味平衡)
  • cuda中的线程块和线程束的区别以及什么是串行化 (来自deepseek)
  • 1 + X 传感网 中级 | 任务五 Wifi通信实践
  • 向量数据库深度解析:FAISS、Qdrant、Milvus、Pinecone使用教程与实战案例
  • Excel文件批量加密工具
  • 哈希函数详解:从MD5到SHA-3的密码学基石
  • JSON-RPC 2.0 规范
  • 寻找重复元素-类链表/快慢指针
  • 【lucene】currentFrame与staticFrame
  • Springboot+vue智能家居商城的设计与实现
  • 数据赋能(341)——技术平台——模块化
  • 2024高考综合本科率对比
  • 本地安装 SQLite 的详细步骤
  • Qt模型/视图结构
  • Python入门第三课:进阶编程技能: 文件操作与数据持久化
  • 【C++算法】78.BFS解决FloodFill算法_算法简介
  • 量子计算革命:重新定义计算的边界与未来
  • react 的 useTransition 、useDeferredValue
  • ZKmall开源商城架构工具链:Docker、k8s 部署与管理技巧
  • 反射核心:invoke与setAccessible方法详解
  • SpringBoot整合RocketMQ(阿里云ONS)
  • 数据库4.0
  • Linux 文件管理高级操作:复制、移动与查找的深度探索
  • Deep Research(信息检索增强)认识和项目实战
  • 计算器4.0:新增页签功能梳理页面,通过IO流实现在用户本地存储数据
  • 点控云数据洞察智能体:让房地产决策有据可循,让业务增长稳健前行