Closed5

PaddleOCR v5をonnx化する

もくいちもくいち

次にpaddleocrをインストールし、paddlex --install paddle2onnxコマンドを実行する。
これにより以下のコマンドで変換できるらしい。

paddlex \
    --paddle2onnx \  # Use the paddle2onnx feature
    --paddle_model_dir /your/paddle_model/dir \  # Specify the directory containing the Paddle model
    --onnx_model_dir /your/onnx_model/output/dir \  # Specify the output directory for the converted ONNX model
    --opset_version 7  # Specify the ONNX opset version to use
もくいちもくいち

実際に試す

環境

  • OS: Windows
  • Python 3.12.10
  • uv + venv

前準備

uv venv -p 3.12 .venv
.\.venv\Scripts\Activate.ps1
uv pip install -U pip
uv pip install -U setuptools

主要パッケージのインストール

uv pip install --pre paddlepaddle -i https://www.paddlepaddle.org.cn/packages/nightly/cpu/
uv pip install paddleocr
paddlex --install paddle2onnx

モデルファイルは.tarで圧縮されているので解凍しておく。
また、出力用のフォルダも作成しておく

フォルダ構成
├─.venv
├─det_onnx
├─PP-OCRv5_mobile_det_infer
├─PP-OCRv5_mobile_rec_infer
└─rec_onnx

OCRv5_mobile_rec_inferの変換を実行する

paddlex --paddle2onnx --paddle_model_dir PP-OCRv5_mobile_rec_infer --onnx_model_dir rec_onnx --opset_version 7

onnxruntimeonnx_graphsurgeonが不足していたようなので自動的にインストールされた。

変換時のログ
Input dir: PP-OCRv5_mobile_rec_infer
Output dir: rec_onnx
Paddle2ONNX conversion starting...
[Paddle2ONNX] Start parsing the Paddle model file...
[Paddle2ONNX] Use opset_version = 7 for ONNX export.
[Paddle2ONNX] PaddlePaddle model is exported as ONNX format now.
2025-09-11 00:48:01 [INFO]      Try to perform constant folding on the ONNX model with Polygraphy.
[W] 'colored' module is not installed, will not use colors when logging. To enable colors, please install the 'colored' module: python3 -m pip install colored
[I] Module: 'onnxruntime' is required, but not installed. Attempting to install now.
[I] Running installation command: .venv\Scripts\python.exe -m pip install onnxruntime>=1.10.0
[I] Folding Constants | Pass 1
[I] Module: 'onnx_graphsurgeon' is required, but not installed. Attempting to install now.
[I] Running installation command: .venv\Scripts\python.exe -m pip install onnx_graphsurgeon>=0.3.27 --extra-index-url=https://pypi.ngc.nvidia.com
[I]     Total Nodes | Original:  1011, After Folding:   578 |   433 Nodes Folded
[I] Folding Constants | Pass 2
[I]     Total Nodes | Original:   578, After Folding:   578 |     0 Nodes Folded
2025-09-11 00:48:40 [INFO]      ONNX model saved in rec_onnx\inference.onnx.
Paddle2ONNX conversion succeeded
Copied PP-OCRv5_mobile_rec_infer\inference.yml to rec_onnx\inference.yml
Done

同様にOCRv5_mobile_det_inferの変換を実行する

paddlex --paddle2onnx --paddle_model_dir PP-OCRv5_mobile_det_infer --onnx_model_dir det_onnx --opset_version 7
変換時のログ
Input dir: PP-OCRv5_mobile_det_infer
Output dir: det_onnx
Paddle2ONNX conversion starting...
[Paddle2ONNX] Start parsing the Paddle model file...
[Paddle2ONNX] Use opset_version = 11 for ONNX export.
[Paddle2ONNX] PaddlePaddle model is exported as ONNX format now.
2025-09-11 01:48:46 [INFO]      Try to perform constant folding on the ONNX model with Polygraphy.
[W] 'colored' module is not installed, will not use colors when logging. To enable colors, please install the 'colored' module: python3 -m pip install colored
[I] Folding Constants | Pass 1
[I]     Total Nodes | Original:   949, After Folding:   526 |   423 Nodes Folded
[I] Folding Constants | Pass 2
[I]     Total Nodes | Original:   526, After Folding:   526 |     0 Nodes Folded
2025-09-11 01:49:00 [INFO]      ONNX model saved in det_onnx\inference.onnx.
Paddle2ONNX conversion succeeded
Copied PP-OCRv5_mobile_det_infer\inference.yml to det_onnx\inference.yml
Done
このスクラップは10日前にクローズされました