🚀 PP-OCRv3_mobile_rec
PP-OCRv3_mobile_rec is a text line recognition model within the PP-OCRv3_rec series, developed by the PaddleOCR team. It addresses the need for accurate text recognition in general Chinese and English scenarios, especially focusing on Chinese. This model offers high inference efficiency and is suitable for deployment on various hardware devices, including edge devices.
🚀 Quick Start
📦 Installation
- PaddlePaddle
Please refer to the following commands to install PaddlePaddle using pip:
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/
For details about PaddlePaddle installation, please refer to the PaddlePaddle official website.
- PaddleOCR
Install the latest version of the PaddleOCR inference package from PyPI:
python -m pip install paddleocr
💻 Usage Examples
Basic Usage
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")
After running, the obtained result is as follows:
{'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}}
The visualized image is as follows:

For details about usage command and descriptions of parameters, please refer to the Document.
Advanced Usage
The ability of a single model is limited. But the pipeline consists of several models can provide more capacity to resolve difficult problems in real-world scenarios.
PP-OCRv3
The general OCR pipeline is used to solve text recognition tasks by extracting text information from images and outputting it in string format. And there are 5 modules in the pipeline:
- Document Image Orientation Classification Module (Optional)
- Text Image Unwarping Module (Optional)
- Text Line Orientation Classification Module (Optional)
- Text Detection Module
- Text Recognition Module
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
Results are printed to the terminal:
{'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)}}
If save_path is specified, the visualization results will be saved under save_path
. The visualization output is shown below:

The command-line method is for quick experience. For project integration, also only a few codes are needed as well:
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")
The default model used in pipeline is PP-OCRv5_server_rec
, so it is needed that specifing to PP-OCRv3_mobile_rec
by argument text_recognition_model_name
. And you can also use the local model file by argument text_recognition_model_dir
. For details about usage command and descriptions of parameters, please refer to the Document.
✨ Features
PP-OCRv3 is an upgrade over PP-OCRv2. The overall framework retains the same pipeline as PP-OCRv2, with optimizations made to the detection and recognition models. The detection module is still optimized based on the DB algorithm, while the recognition module has replaced CRNN with the latest text recognition algorithm, SVTR, which was recently accepted at IJCAI 2022, and has been adapted for industrial applications.
The key accuracy metrics are as follow:
Model |
Recognition Avg Accuracy(%) |
Model Storage Size (M) |
Introduction |
PP-OCRv3_mobile_rec |
75.43 |
11 M |
A lightweight recognition model of PP-OCRv3 with high inference efficiency, suitable for deployment on various hardware devices, including edge devices. |
Note: If any character (including punctuation) in a line was incorrect, the entire line was marked as wrong. This ensures higher accuracy in practical applications.
📚 Documentation
Links
📄 License
This project is licensed under the Apache-2.0 license.