1. 离线准备Python环境
1.1 在联网机器下载所需组件
# 创建项目目录
mkdir paddle_ocr_offline
cd paddle_ocr_offline
# 下载Python安装包 (以Python 3.8为例)
pip download python==3.8.10 --platform win_amd64 --only-binary=:all:
# 下载PaddlePaddle和OCR库
pip download paddlepaddle==2.4.2 paddleocr==2.7.0.3 -f https://www.paddlepaddle.org.cn/whl/windows.html
# 下载依赖库 (实际依赖以pip show paddlepaddle为准)
pip download numpy opencv-python shapely scikit-image pyclipper lmdb tqdm
1.2 打包依赖
将下载的 .whl
文件和 Python 安装包复制到离线机器。
2. 离线安装Python环境
2.1 安装Python
运行 Python 安装包(如 python-3.8.10-amd64.exe
),勾选 Add to PATH。
2.2 安装依赖库
:: 进入依赖目录
cd /d D:\paddle_ocr_offline
:: 安装所有依赖
pip install --no-index --find-links=. paddlepaddle-2.4.2-cp38-cp38-win_amd64.whl
pip install --no-index --find-links=. paddleocr-2.7.0.3-py3-none-any.whl
pip install --no-index --find-links=. numpy opencv_python shapely scikit_image pyclipper lmdb tqdm
3. 部署飞桨OCR服务
创建Python脚本 ocr_service.py
:
from paddleocr import PaddleOCR
from flask import Flask, request, jsonify
# 初始化OCR模型,启用空格识别
ocr = PaddleOCR(
use_angle_cls=True,
lang='ch',# 语言
use_gpu=False,
use_space_char=True, # 关键:启用空格识别
det_model_dir='C:/Users/Administrator/.paddleocr/whl/det/ch/ch_ppocr_server_v2.0_det_infer',
rec_model_dir='C:/Users/Administrator/.paddleocr/whl/rec/ch/ch_ppocr_server_v2.0_rec_infer',
cls_model_dir='C:/Users/Administrator/.paddleocr/whl/cls/ch_ppocr_mobile_v2.0_cls_infer'
)
app = Flask(__name__)
@app.route('/ocr', methods=['POST'])
def handle_ocr():
image = request.files['image'].read()
result = ocr.ocr(image, cls=True)
return jsonify(result)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
模型离线准备(关键!)
- 从PaddleOCR官方GitHub下载模型文件:
ch_ppocr_server_v2.0_det_infer.tar
(文本检测)ch_ppocr_server_v2.0_rec_infer.tar
(文本识别)ch_ppocr_mobile_v2.0_cls_infer.tar
(方向分类)
- 解压到离线机器目录:
C:\Users\<用户名>\.paddleocr\whl\
5. 离线部署注意事项
模型文件
必须提前下载模型并放置到C:\Users\<用户名>\.paddleocr\whl\
目录,否则首次运行会尝试联网下载。环境一致性
- Python版本需一致(推荐3.7/3.8)
- 所有
.whl
文件必须与操作系统架构匹配(Windows 64位)
路径处理
- Java调用时使用绝对路径
- 路径中避免空格和特殊字符
错误排查
- 在命令行测试Python脚本:
python ocr_service.py D:\test.png
- 检查Java进程的输入流和错误流
- 在命令行测试Python脚本: