模型简介
模型特点
模型能力
使用案例
🚀 PP-OCRv4_mobile_rec
PP-OCRv4_mobile_rec 是 PaddleOCR 团队开发的 PP-OCRv4_rec 系列中的文本行识别模型。PP-OCRv4 是对 PP-OCRv3 的升级,整体框架保留了与 PP-OCRv3 相同的流程,并对检测和识别模型的数据、网络结构和训练策略等多个模块进行了优化。它支持一般中文和英文场景下的文本行识别,但主要侧重于中文。关键准确率指标如下:
🚀 快速开始
✨ 主要特性
PP-OCRv4_mobile_rec 作为 PP-OCRv4 系列的轻量级识别模型,具有以下显著特性:
- 高效推理:具备高推理效率,能够快速处理文本识别任务,适用于对实时性要求较高的场景。
- 广泛适配:可部署在各种硬件设备上,包括边缘设备,具有良好的通用性和灵活性。
- 精准识别:在中文和英文文本行识别方面表现出色,尤其专注于中文场景,为用户提供准确的识别结果。
📦 安装指南
1. 安装 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 官方网站。
2. 安装 PaddleOCR
从 PyPI 安装最新版本的 PaddleOCR 推理包:
python -m pip install paddleocr
💻 使用示例
基础用法
你可以使用以下命令快速体验模型功能:
paddleocr text_recognition \
--model_name PP-OCRv4_mobile_rec \
-i https://cdn-uploads.huggingface.co/production/uploads/681c1ecd9539bdde5ae1733c/QmaPtftqwOgCtx0AIvU2z.png
你也可以将文本识别模块的模型推理集成到你的项目中。在运行以下代码之前,请将示例图像下载到本地机器:
from paddleocr import TextRecognition
model = TextRecognition(model_name="PP-OCRv4_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.9915317893028259}}
可视化图像如下:
有关使用命令和参数说明的详细信息,请参考 文档。
高级用法
单个模型的能力是有限的,但由多个模型组成的管道可以提供更强的能力来解决实际场景中的难题。
PP-OCRv4
通用 OCR 管道用于通过从图像中提取文本信息并以字符串格式输出,从而解决文本识别任务。管道中有 5 个模块:
- 文档图像方向分类模块(可选)
- 文本图像去扭曲模块(可选)
- 文本行方向分类模块(可选)
- 文本检测模块
- 文本识别模块
运行以下命令快速体验 OCR 管道:
paddleocr ocr -i https://cdn-uploads.huggingface.co/production/uploads/681c1ecd9539bdde5ae1733c/818ebrVG4OtH3sjLR-NRI.png \
--text_recognition_model_name PP-OCRv4_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': ['准动国本008866', 'SSS', '登机牌', 'BOARDING', '座位号', 'SEAT NO.', '舱位', 'CLASS', '序号', '日期 DATE', 'SERIAL NO.', '航班FLIGHT', 'W', '035', 'MU237903DEC', '始发地', 'FROM', '登机口', 'GATE', '登机时间BDT', '目的地TO', '福州', 'TAIYUAN', 'G11', 'FUZHOU', '身份识别IDNO.', '姓名', 'NAME', 'ZHANGQIWEI', '票号TKTNO.', '张祺伟', '票价FARE', 'ETKT7813699238489/1', '登机口于起飞前10分钟关闭GATESCL0SE10MINUTESBEFOREDEPARTURETIME'], 'rec_scores': array([0.34848779, ..., 0.96997255]), '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-OCRv4_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-OCRv4_mobile_rec
。你也可以通过参数 text_recognition_model_dir
使用本地模型文件。有关使用命令和参数说明的详细信息,请参考 文档。
📚 详细文档
属性 | 详情 |
---|---|
模型类型 | 文本行识别模型 |
训练数据 | 未提及 |
🔧 技术细节
PP-OCRv4 是对 PP-OCRv3 的升级,整体框架保留了与 PP-OCRv3 相同的流程,但在多个关键模块进行了优化。在数据模块,可能采用了更丰富、更具代表性的训练数据,以提高模型的泛化能力。网络结构方面,对检测和识别模型的网络进行了调整和改进,使其能够更好地捕捉文本特征。训练策略上,可能运用了更先进的优化算法和正则化方法,以加速模型收敛并防止过拟合。这些优化措施共同提升了模型在中文和英文文本行识别任务中的性能。
📄 许可证
本项目采用 Apache-2.0 许可证。
🔗 相关链接
⚠️ 重要提示
如果一行中的任何字符(包括标点符号)错误,则整行将被标记为错误。这确保了在实际应用中的更高准确性。
💡 使用建议
在使用模型进行推理时,建议根据实际硬件环境选择合适的安装方式,如使用 GPU 加速推理可显著提高处理速度。同时,在集成模型到项目中时,可参考文档中的详细说明,合理调整参数以获得最佳识别效果。










