模型简介
模型特点
模型能力
使用案例
🚀 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:
# 适用于 CUDA11.8
python -m pip install paddlepaddle-gpu==3.0.0 -i https://www.paddlepaddle.org.cn/packages/stable/cu118/
# 适用于 CUDA12.6
python -m pip install paddlepaddle-gpu==3.0.0 -i https://www.paddlepaddle.org.cn/packages/stable/cu126/
# 适用于 CPU
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_orientation_classify 启用/禁用文档方向分类模型
use_doc_unwarping=False, # 使用 use_doc_unwarping 启用/禁用文档矫正模块
use_textline_orientation=True, # 使用 use_textline_orientation 启用/禁用文本行方向分类模型
device="gpu:0", # 使用 device 指定 GPU 进行模型推理
)
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 许可证。










