🚀 PP-OCRv3_mobile_rec
PP-OCRv3_mobile_rec は、PaddleOCR チームによって開発された PP-OCRv3_rec シリーズのテキスト行認識モデルです。PP-OCRv3 は PP-OCRv2 のアップグレード版で、全体的なフレームワークは PP-OCRv2 と同じ流れを保ちながら、検出と認識モデルを最適化しています。検出モジュールは依然として DB アルゴリズムに基づいて最適化されており、認識モジュールでは最新のテキスト認識アルゴリズムである SVTR(2022 年に IJCAI で受け入れられ、産業アプリケーションに適合しています)が CRNN の代わりに採用されています。このモデルは、一般的な中英語のシーンでのテキスト行認識をサポートしていますが、主に中国語に特化しています。主要な精度指標は以下の通りです。
✨ 主な機能
PP-OCRv3_mobile_rec には、以下のような顕著な機能があります。
- モデルのアップグレード:PP-OCRv3 は PP-OCRv2 のアップグレード版で、検出と認識モデルが最適化されています。
- アルゴリズムの改善:認識モジュールでは最新の SVTR アルゴリズムが採用され、CRNN の代わりになり、認識性能が向上しています。
- 多言語対応:中国語と英語のテキスト行認識をサポートしており、特に中国語のシーンに重点を置いています。
- 軽量設計:モデルの保存サイズはわずか 11M で、推論効率が高く、さまざまなハードウェアデバイス(エッジデバイスを含む)に適しています。
モデル |
認識平均精度(%) |
モデル保存サイズ (M) |
説明 |
PP-OCRv3_mobile_rec |
75.43 |
11 M |
PP-OCRv3 の軽量認識モデルで、推論効率が高く、さまざまなハードウェアデバイス(エッジデバイスを含む)に適しています。 |
⚠️ 重要な注意事項
一行内の任意の文字(句読点を含む)が誤認識された場合、その行全体が誤りとしてマークされます。これにより、実際のアプリケーションでより高い精度を保証します。
📦 インストール
PaddlePaddle のインストール
以下のコマンドを参考に、pip を使用して PaddlePaddle をインストールしてください。
python -m pip install paddlepaddle-gpu==3.0.0 -i https://www.paddlepaddle.org.cn/packages/stable/cu118/
python -m pip install paddlepaddle-gpu==3.0.0 -i https://www.paddlepaddle.org.cn/packages/stable/cu126/
python -m pip install paddlepaddle==3.0.0 -i https://www.paddlepaddle.org.cn/packages/stable/cpu/
PaddlePaddle のインストールに関する詳細な情報は、PaddlePaddle 公式サイトを参照してください。
PaddleOCR のインストール
PyPI から最新バージョンの PaddleOCR 推論パッケージをインストールします。
python -m pip install paddleocr
💻 使用例
基本的な使用法
単一のコマンドでこの機能をすぐに試すことができます。
paddleocr text_recognition \
--model_name PP-OCRv3_mobile_rec \
-i https://cdn-uploads.huggingface.co/production/uploads/681c1ecd9539bdde5ae1733c/QmaPtftqwOgCtx0AIvU2z.png
また、テキスト認識モジュールのモデル推論をあなたのプロジェクトに統合することもできます。以下のコードを実行する前に、サンプル画像をローカルマシンにダウンロードしてください。
from paddleocr import TextRecognition
model = TextRecognition(model_name="PP-OCRv3_mobile_rec")
output = model.predict(input="QmaPtftqwOgCtx0AIvU2z.png", batch_size=1)
for res in output:
res.print()
res.save_to_img(save_path="./output/")
res.save_to_json(save_path="./output/res.json")
実行後、以下のような結果が得られます。
{'res': {'input_path': '/root/.paddlex/predict_input/QmaPtftqwOgCtx0AIvU2z.png', 'page_index': None, 'rec_text': 'the number of model parameters and FLOPs get larger, it', 'rec_score': 0.9425019025802612}}
可視化画像は以下の通りです。

使用コマンドとパラメータの説明に関する詳細な情報は、ドキュメントを参照してください。
高度な使用法
単一のモデルの能力には限界がありますが、複数のモデルから構成されるパイプラインは、現実のシーンでの難題を解決するためのより強力な能力を提供します。
PP-OCRv3 パイプラインの使用
汎用 OCR パイプラインは、画像からテキスト情報を抽出し、文字列形式で出力することで、テキスト認識タスクを解決します。パイプラインには 5 つのモジュールが含まれています。
- ドキュメント画像方向分類モジュール(オプション)
- テキスト画像矯正モジュール(オプション)
- テキスト行方向分類モジュール(オプション)
- テキスト検出モジュール
- テキスト認識モジュール
単一のコマンドで OCR パイプラインをすぐに試すことができます。
paddleocr ocr -i https://cdn-uploads.huggingface.co/production/uploads/681c1ecd9539bdde5ae1733c/818ebrVG4OtH3sjLR-NRI.png \
--text_recognition_model_name PP-OCRv3_mobile_rec \
--use_doc_orientation_classify False \
--use_doc_unwarping False \
--use_textline_orientation True \
--save_path ./output \
--device gpu:0
結果はターミナルに表示されます。
{'res': {'input_path': '/root/.paddlex/predict_input/818ebrVG4OtH3sjLR-NRI.png', 'page_index': None, 'model_settings': {'use_doc_preprocessor': True, 'use_textline_orientation': True}, 'doc_preprocessor_res': {'input_path': None, 'page_index': None, 'model_settings': {'use_doc_orientation_classify': False, 'use_doc_unwarping': False}, 'angle': -1}, 'dt_polys': array([[[ 0, 10],
...,
[ 0, 72]],
...,
[[189, 915],
...,
[190, 960]]], dtype=int16), 'text_det_params': {'limit_side_len': 64, 'limit_type': 'min', 'thresh': 0.3, 'max_side_limit': 4000, 'box_thresh': 0.6, 'unclip_ratio': 1.5}, 'text_type': 'general', 'textline_orientation_angles': array([1, ..., 0]), 'text_rec_score_thresh': 0.0, 'rec_texts': ['国小00-8822668', 'SSO', '登机牌', 'BOARDING', '座位号', 'SEAT NO.', '舱位', 'CLASS', '序号', '日期 DATE', 'SERIAL NO.', '航班 FLIGHT', 'W', '035', 'MU237903DEC', '始发地', 'FROM', '登机口', 'GATE', '登机时间 BDT', '目的地TO', '福州', 'TAIYUAN', 'G11', 'FUZHOU', '身份识别IDNO.', '姓名', 'NAME', 'ZHANGQIWEI', '票号TKT NO.', '张祺伟', '票价FARE', 'ETKT7813699238489/1', '登机口于起飞前1O分钟关闭 GATES CLOSE 1O MINUTES BEFOREDEPARTURE TIME'], 'rec_scores': array([0.51543897, ..., 0.91532207]), 'rec_polys': array([[[ 0, 10],
...,
[ 0, 72]],
...,
[[189, 915],
...,
[190, 960]]], dtype=int16), 'rec_boxes': array([[ 0, ..., 72],
...,
[189, ..., 960]], dtype=int16)}}
save_path
を指定した場合、可視化結果は save_path
ディレクトリに保存されます。可視化出力は以下の通りです。

コマンドライン方式はすぐに試すのに適しています。プロジェクトへの統合には、数行のコードで済みます。
from paddleocr import PaddleOCR
ocr = PaddleOCR(
text_recognition_model_name="PP-OCRv3_mobile_rec",
use_doc_orientation_classify=False,
use_doc_unwarping=False,
use_textline_orientation=True,
device="gpu:0",
)
result = ocr.predict("https://cdn-uploads.huggingface.co/production/uploads/681c1ecd9539bdde5ae1733c/818ebrVG4OtH3sjLR-NRI.png")
for res in result:
res.print()
res.save_to_img("output")
res.save_to_json("output")
パイプラインでデフォルトで使用されるモデルは PP-OCRv5_server_rec
であるため、パラメータ text_recognition_model_name
を PP-OCRv3_mobile_rec
に指定する必要があります。また、パラメータ text_recognition_model_dir
を使用して、ローカルのモデルファイルを使用することもできます。使用コマンドとパラメータの説明に関する詳細な情報は、ドキュメントを参照してください。
📚 ドキュメント
📄 ライセンス
このプロジェクトは Apache-2.0 ライセンスを採用しています。