comments: true
文本识别模块使用教程
一、概述
文本识别模块是OCR(光学字符识别)系统中的核心部分,负责从图像中的文本区域提取出文本信息。该模块的性能直接影响到整个OCR系统的准确性和效率。文本识别模块通常接收文本检测模块输出的文本区域的边界框(Bounding Boxes)作为输入,然后通过复杂的图像处理和深度学习算法,将图像中的文本转化为可编辑和可搜索的电子文本。文本识别结果的准确性,对于后续的信息提取和数据挖掘等应用至关重要。
二、支持模型列表
推理耗时仅包含模型推理耗时,不包含前后处理耗时。表格中的“常规模式”耗时对应本地
paddle_static推理引擎。
| 模型 | 模型下载链接 | 识别 Avg Accuracy(%) | GPU推理耗时(ms) [常规模式 / 高性能模式] |
CPU推理耗时(ms) [常规模式 / 高性能模式] |
模型存储大小(MB) | 介绍 |
|---|---|---|---|---|---|---|
| PP-OCRv6_medium_rec | 推理模型/训练模型 | 83.2* | - / - | - / - | 73.3 | PP-OCRv6 文本识别模型,基于 PPLCNetV4 + LightSVTR + CTC/NRTR 多头解码器,单模型支持 50 种语言(tiny 档 49 种)。medium 档相比 PP-OCRv5_server 综合识别精度提升 5.1%。 |
| PP-OCRv6_small_rec | 推理模型/训练模型 | 81.3* | - / - | - / - | 20.4 | |
| PP-OCRv6_tiny_rec | 推理模型/训练模型 | 73.5* | - / - | - / - | 4.4 | |
| PP-OCRv5_server_rec | 推理模型/训练模型 | 86.38 | 8.46 / 2.36 | 31.21 / 31.21 | 81 | PP-OCRv5_rec 是新一代文本识别模型。该模型致力于以单一模型高效、精准地支持简体中文、繁体中文、英文、日文四种主要语言,以及手写、竖版、拼音、生僻字等复杂文本场景的识别。在保持识别效果的同时,兼顾推理速度和模型鲁棒性,为各种场景下的文档理解提供高效、精准的技术支撑。 |
| PP-OCRv5_mobile_rec | 推理模型/训练模型 | 81.29 | 5.43 / 1.46 | 21.20 / 5.32 | 16 | |
| PP-OCRv4_server_rec_doc | 推理模型/训练模型 | 86.58 | 8.69 / 2.78 | 37.93 / 37.93 | 182 | PP-OCRv4_server_rec_doc是在PP-OCRv4_server_rec的基础上,在更多中文文档数据和PP-OCR训练数据的混合数据训练而成,增加了部分繁体字、日文、特殊字符的识别能力,可支持识别的字符为1.5万+,除文档相关的文字识别能力提升外,也同时提升了通用文字的识别能力 |
| PP-OCRv4_mobile_rec | 推理模型/训练模型 | 78.74 | 5.26 / 1.12 | 17.48 / 3.61 | 10.5 | PP-OCRv4的轻量级识别模型,推理效率高,可以部署在包含端侧设备的多种硬件设备中 |
| PP-OCRv4_server_rec | 推理模型/训练模型 | 85.19 | 8.75 / 2.49 | 36.93 / 36.93 | 173 | PP-OCRv4的服务器端模型,推理精度高,可以部署在多种不同的服务器上 |
| en_PP-OCRv4_mobile_rec | 推理模型/训练模型 | 70.39 | 4.81 / 1.23 | 17.20 / 4.18 | 7.5 | 基于PP-OCRv4识别模型训练得到的超轻量英文识别模型,支持英文、数字识别 |
*注:PP-OCRv6 指标基于内部多场景评估集测得,PP-OCRv5/v4 指标基于通用评估集测得,两者评估集不同,指标不可直接对比。
❗ 以上列出的是文本识别模块重点支持的4个核心模型,该模块总共支持20个全量模型,包含多个多语言文本识别模型,完整的模型列表如下:
👉模型列表详情
- PP-OCRv6 多场景模型
| 模型 | 模型下载链接 | 识别 Avg Accuracy(%) | GPU推理耗时(ms) [常规模式 / 高性能模式] |
CPU推理耗时(ms) [常规模式 / 高性能模式] |
模型存储大小(MB) | 介绍 |
|---|
- PP-OCRv5 多场景模型
| 模型 | 模型下载链接 | 中文识别 Avg Accuracy(%) | 英文识别 Avg Accuracy(%) | 繁体中文识别 Avg Accuracy(%) | 日文识别 Avg Accuracy(%) | GPU推理耗时(ms) [常规模式 / 高性能模式] |
CPU推理耗时(ms) [常规模式 / 高性能模式] |
模型存储大小(MB) | 介绍 |
|---|---|---|---|---|---|---|---|---|---|
| PP-OCRv6_medium_rec | 推理模型/训练模型 | 83.2* | - / - | - / - | 73.3 | PP-OCRv6 文本识别模型,基于 PPLCNetV4 + LightSVTR + CTC/NRTR 多头解码器,单模型支持 50 种语言(tiny 档 49 种)。medium 档相比 PP-OCRv5_server 综合识别精度提升 5.1%。 | |||
| PP-OCRv6_small_rec | 推理模型/训练模型 | 81.3* | - / - | - / - | 20.4 | ||||
| PP-OCRv6_tiny_rec | 推理模型/训练模型 | 73.5* | - / - | - / - | 4.4 | ||||
| PP-OCRv5_server_rec | 推理模型/训练模型 | 86.38 | 64.70 | 93.29 | 60.35 | 8.46 / 2.36 | 31.21 / 31.21 | 81 | PP-OCRv5_rec 是新一代文本识别模型。该模型致力于以单一模型高效、精准地支持简体中文、繁体中文、英文、日文四种主要语言,以及手写、竖版、拼音、生僻字等复杂文本场景的识别。在保持识别效果的同时,兼顾推理速度和模型鲁棒性,为各种场景下的文档理解提供高效、精准的技术支撑。 |
| PP-OCRv5_mobile_rec | 推理模型/训练模型 | 81.29 | 66.00 | 83.55 | 54.65 | 5.43 / 1.46 | 21.20 / 5.32 | 16 |
- 中文识别模型
模型 模型下载链接 识别 Avg Accuracy(%) GPU推理耗时(ms)
[常规模式 / 高性能模式]CPU推理耗时(ms)
[常规模式 / 高性能模式]模型存储大小(MB) 介绍 PP-OCRv4_server_rec_doc 推理模型/训练模型 86.58 8.69 / 2.78 37.93 / 37.93 182 PP-OCRv4_server_rec_doc是在PP-OCRv4_server_rec的基础上,在更多中文文档数据和PP-OCR训练数据的混合数据训练而成,增加了部分繁体字、日文、特殊字符的识别能力,可支持识别的字符为1.5万+,除文档相关的文字识别能力提升外,也同时提升了通用文字的识别能力 PP-OCRv4_mobile_rec 推理模型/训练模型 78.74 5.26 / 1.12 17.48 / 3.61 10.5 PP-OCRv4的轻量级识别模型,推理效率高,可以部署在包含端侧设备的多种硬件设备中 PP-OCRv4_server_rec 推理模型/训练模型 85.19 8.75 / 2.49 36.93 / 36.93 173 PP-OCRv4的服务器端模型,推理精度高,可以部署在多种不同的服务器上 PP-OCRv3_mobile_rec 推理模型/训练模型 72.96 3.89 / 1.16 8.72 / 3.56 10.3 PP-OCRv3的轻量级识别模型,推理效率高,可以部署在包含端侧设备的多种硬件设备中
| 模型 | 模型下载链接 | 识别 Avg Accuracy(%) | GPU推理耗时(ms) [常规模式 / 高性能模式] |
CPU推理耗时(ms) [常规模式 / 高性能模式] |
模型存储大小(MB) | 介绍 |
|---|---|---|---|---|---|---|
| ch_SVTRv2_rec | 推理模型/训练模型 | 68.81 | 10.38 / 8.31 | 66.52 / 30.83 | 80.5 | SVTRv2 是一种由复旦大学视觉与学习实验室(FVL)的OpenOCR团队研发的服务端文本识别模型,其在PaddleOCR算法模型挑战赛 - 赛题一:OCR端到端识别任务中荣获一等奖,A榜端到端识别精度相比PP-OCRv4提升6%。 |
| 模型 | 模型下载链接 | 识别 Avg Accuracy(%) | GPU推理耗时(ms) [常规模式 / 高性能模式] |
CPU推理耗时(ms) [常规模式 / 高性能模式] |
模型存储大小(MB) | 介绍 |
|---|---|---|---|---|---|---|
| ch_RepSVTR_rec | 推理模型/训练模型 | 65.07 | 6.29 / 1.57 | 20.64 / 5.40 | 48.8 | RepSVTR 文本识别模型是一种基于SVTRv2 的移动端文本识别模型,其在PaddleOCR算法模型挑战赛 - 赛题一:OCR端到端识别任务中荣获一等奖,B榜端到端识别精度相比PP-OCRv4提升2.5%,推理速度持平。 |
英文识别模型
模型 模型下载链接 识别 Avg Accuracy(%) GPU推理耗时(ms)
[常规模式 / 高性能模式]CPU推理耗时(ms)
[常规模式 / 高性能模式]模型存储大小(MB) 介绍 en_PP-OCRv5_mobile_rec 推理模型/训练模型 85.25 - - 7.5 基于PP-OCRv5识别模型训练得到的超轻量级英文识别模型,进一步提升英文文本的识别准确率,优化空格漏识别的问题,并提高对手写英文文本的识别效果。 en_PP-OCRv4_mobile_rec 推理模型/训练模型 70.39 4.81 / 1.23 17.20 / 4.18 7.5 基于PP-OCRv4识别模型训练得到的超轻量英文识别模型,支持英文、数字识别 en_PP-OCRv3_mobile_rec 推理模型/训练模型 70.69 3.56 / 0.78 8.44 / 5.78 17.3 基于PP-OCRv3识别模型训练得到的超轻量英文识别模型,支持英文、数字识别 多语言识别模型
模型 模型下载链接 识别 Avg Accuracy(%) GPU推理耗时(ms)
[常规模式 / 高性能模式]CPU推理耗时(ms)
[常规模式 / 高性能模式]模型存储大小(MB) 介绍 korean_PP-OCRv5_mobile_rec 推理模型/训练模型 88.0 5.43 / 1.46 21.20 / 5.32 14 基于PP-OCRv5识别模型训练得到的超轻量韩文识别模型,支持韩文、英文和数字识别 latin_PP-OCRv5_mobile_rec 推理模型/训练模型 84.7 5.43 / 1.46 21.20 / 5.32 14 基于PP-OCRv5识别模型训练得到的拉丁文识别模型,支持大部分拉丁字母语言、数字识别 eslav_PP-OCRv5_mobile_rec 推理模型/训练模型 81.6 5.43 / 1.46 21.20 / 5.32 14 基于PP-OCRv5识别模型训练得到的东斯拉夫语言识别模型, 支持东斯拉夫语言、英文和数字识别 th_PP-OCRv5_mobile_rec 推理模型/训练模型 82.68 - - 7.5 基于PP-OCRv5识别模型训练得到的泰语识别模型, 支持泰语、英文和数字识别 el_PP-OCRv5_mobile_rec 推理模型/训练模型 89.28 - - 7.5 基于PP-OCRv5识别模型训练得到的希腊语识别模型, 支持希腊语、英文和数字识别 arabic_PP-OCRv5_mobile_rec 推理模型/训练模型 81.27 - - 7.6 基于PP-OCRv5识别模型训练得到的超轻量阿拉伯字母识别模型,支持阿拉伯字母、数字识别 cyrillic_PP-OCRv5_mobile_rec 推理模型/训练模型 80.27 - - 7.7 基于PP-OCRv5识别模型训练得到的超轻量斯拉夫字母识别模型,支持斯拉夫字母、数字识别 devanagari_PP-OCRv5_mobile_rec 推理模型/训练模型 84.96 - - 7.5 基于PP-OCRv5识别模型训练得到的超轻量天城文识别模型,支持印地文、梵文等字母以及数字识别 te_PP-OCRv5_mobile_rec 推理模型/训练模型 87.65 - - 7.5 基于PP-OCRv5识别模型训练得到的超轻量泰卢固文识别模型,支持泰卢固文、数字识别 ta_PP-OCRv5_mobile_rec 推理模型/训练模型 94.2 - - 7.5 基于PP-OCRv5识别模型训练得到的超轻量泰米尔文识别模型,支持泰米尔文、数字识别 korean_PP-OCRv3_mobile_rec 推理模型/训练模型 60.21 3.73 / 0.98 8.76 / 2.91 9.6 基于PP-OCRv3识别模型训练得到的超轻量韩文识别模型,支持韩文、数字识别 japan_PP-OCRv3_mobile_rec 推理模型/训练模型 45.69 3.86 / 1.01 8.62 / 2.92 9.8 基于PP-OCRv3识别模型训练得到的超轻量日文识别模型,支持日文、数字识别 chinese_cht_PP-OCRv3_mobile_rec 推理模型/训练模型 82.06 3.90 / 1.16 9.24 / 3.18 10.8 基于PP-OCRv3识别模型训练得到的超轻量繁体中文识别模型,支持繁体中文、数字识别 te_PP-OCRv3_mobile_rec 推理模型/训练模型 95.88 3.59 / 0.81 8.28 / 6.21 8.7 基于PP-OCRv3识别模型训练得到的超轻量泰卢固文识别模型,支持泰卢固文、数字识别 ka_PP-OCRv3_mobile_rec 推理模型/训练模型 96.96 3.49 / 0.89 8.63 / 2.77 17.4 基于PP-OCRv3识别模型训练得到的超轻量卡纳达文识别模型,支持卡纳达文、数字识别 ta_PP-OCRv3_mobile_rec 推理模型/训练模型 76.83 3.49 / 0.86 8.35 / 3.41 8.7 基于PP-OCRv3识别模型训练得到的超轻量泰米尔文识别模型,支持泰米尔文、数字识别 latin_PP-OCRv3_mobile_rec 推理模型/训练模型 76.93 3.53 / 0.78 8.50 / 6.83 8.7 基于PP-OCRv3识别模型训练得到的超轻量拉丁文识别模型,支持拉丁文、数字识别 arabic_PP-OCRv3_mobile_rec 推理模型/训练模型 73.55 3.60 / 0.83 8.44 / 4.69 17.3 基于PP-OCRv3识别模型训练得到的超轻量阿拉伯字母识别模型,支持阿拉伯字母、数字识别 cyrillic_PP-OCRv3_mobile_rec 推理模型/训练模型 94.28 3.56 / 0.79 8.22 / 2.76 8.7 基于PP-OCRv3识别模型训练得到的超轻量斯拉夫字母识别模型,支持斯拉夫字母、数字识别 devanagari_PP-OCRv3_mobile_rec 推理模型/训练模型 96.44 3.60 / 0.78 6.95 / 2.87 8.7 基于PP-OCRv3识别模型训练得到的超轻量梵文字母识别模型,支持梵文字母、数字识别
测试环境说明:
- 性能测试环境
- 测试数据集:
- 中文识别模型: PaddleOCR 自建的中文数据集,覆盖街景、网图、文档、手写多个场景,其中文本识别包含 1.1w 张图片。
- ch_SVTRv2_rec:PaddleOCR算法模型挑战赛 - 赛题一:OCR端到端识别任务A榜评估集。
- ch_RepSVTR_rec:PaddleOCR算法模型挑战赛 - 赛题一:OCR端到端识别任务B榜评估集。
- 英文识别模型:PaddleOCR 自建的英文数据集。
- 多语言识别模型:PaddleOCR 自建的多语种数据集。
- 硬件配置:
- GPU:NVIDIA Tesla T4
- CPU:Intel Xeon Gold 6271C @ 2.60GHz
- 软件环境:
- Ubuntu 20.04 / CUDA 11.8 / cuDNN 8.9 / TensorRT 8.6.1.6
- paddlepaddle-gpu 3.0.0 / paddleocr 3.0.3
- 测试数据集:
- 推理模式说明
| 模式 | GPU配置 | CPU配置 | 加速技术组合 |
|---|---|---|---|
| 常规模式 | FP32精度 / 无TRT加速 | FP32精度 / 8线程 | PaddleInference |
| 高性能模式 | 选择先验精度类型和加速策略的最优组合 | FP32精度 / 8线程 | 选择先验最优后端(Paddle/OpenVINO/TRT等) |
三、快速开始
❗ 在快速开始前,请先安装 PaddleOCR 的 wheel 包,详细请参考 安装教程。
使用一行命令即可快速体验:
paddleocr text_recognition -i https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_rec_001.png
上述示例默认使用 paddle_static 推理引擎,请先按照飞桨框架安装完成 PaddlePaddle 安装。
如果选择 transformers 作为推理引擎,请确保已配置 Transformers 环境,然后执行如下命令:
# 使用 transformers 引擎进行推理
paddleocr text_recognition -i https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_rec_001.png \
--engine transformers
如果选择 onnxruntime 作为推理引擎,请确保已配置 ONNX Runtime 环境,然后执行如下命令:
# 使用 onnxruntime 引擎进行推理
paddleocr text_recognition -i https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_rec_001.png \
--engine onnxruntime
在大多数场景下,默认的 paddle_static 推理引擎通常具备更好的推理性能,建议优先使用。
注:PaddleOCR 官方模型默认从 HuggingFace 获取,如运行环境访问 HuggingFace 不便,可通过环境变量修改模型源为 BOS:PADDLE_PDX_MODEL_SOURCE="BOS",未来将支持更多主流模型源;
您也可以将文本识别的模块中的模型推理集成到您的项目中。运行以下代码前,请您下载示例图片到本地。
from paddleocr import TextRecognition
model = TextRecognition()
output = model.predict(input="general_ocr_rec_001.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")
上述示例默认使用 paddle_static 推理引擎,请先按照飞桨框架安装完成 PaddlePaddle 安装。
如果选择 transformers 作为推理引擎,请确保已配置 Transformers 环境,然后执行如下代码:
from paddleocr import TextRecognition
model = TextRecognition(engine="transformers")
output = model.predict(input="general_ocr_rec_001.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")
如果选择 onnxruntime 作为推理引擎,请确保已配置 ONNX Runtime 环境,然后执行如下代码:
from paddleocr import TextRecognition
model = TextRecognition(engine="onnxruntime")
output = model.predict(input="general_ocr_rec_001.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")
在大多数场景下,默认的 paddle_static 推理引擎通常具备更好的推理性能,建议优先使用。
训练后的模型如果想使用 paddle_dynamic 或 transformers 引擎,请参考后文 推理引擎 中的 权重转换 部分将模型由 pdparams 格式通过 PaddleX 转换为 safetensors 格式。
运行后,得到的结果为:
{'res': {'input_path': 'general_ocr_rec_001.png', 'page_index': None, 'rec_text': '绿洲仕格维花园公寓', 'rec_score': 0.9823867082595825}}
运行结果参数含义如下:
input_path:表示输入待预测文本行图像的路径page_index:如果输入是PDF文件,则表示当前是PDF的第几页,否则为Nonerec_text:表示文本行图像的预测文本rec_score:表示文本行图像的预测置信度
可视化图片如下:
相关方法、参数等说明如下:
TextRecognition实例化文本识别模型,具体说明如下:参数 参数说明 参数类型 默认值 model_name含义:模型名称。
说明: 如果设置为None,则使用PP-OCRv6_medium_rec。str|NoneNonemodel_dir含义:模型存储路径。 str|NoneNonedevice含义:用于推理的设备。
说明: 例如:"cpu"、"gpu"、"npu"、"gpu:0"、"gpu:0,1"。
如指定多个设备,将进行并行推理。
默认情况下,优先使用 GPU 0;若不可用则使用 CPU。str|NoneNoneengine含义:推理引擎。
说明:支持None(默认值)、paddle、paddle_static、paddle_dynamic、transformers、onnxruntime。保持为默认值None时,本地推理默认使用paddle_static引擎。详细说明、取值、兼容性规则与示例请参见 推理引擎与配置说明。str|NoneNoneengine_config含义:推理引擎配置。
说明:推荐与engine搭配使用。详细字段、兼容性规则与示例请参见 推理引擎与配置说明。dict|NoneNoneenable_hpi含义:是否启用高性能推理。 boolFalseuse_tensorrt含义:是否启用 Paddle Inference 的 TensorRT 子图引擎。
说明: 如果模型不支持通过 TensorRT 加速,即使设置了此标志,也不会使用加速。
对于 CUDA 11.8 版本的飞桨,兼容的 TensorRT 版本为 8.x(x>=6),建议安装 TensorRT 8.6.1.6。
boolFalseprecision含义:当使用 Paddle Inference 的 TensorRT 子图引擎时设置的计算精度。
说明: 可选项:"fp32"、"fp16"。str"fp32"enable_mkldnn含义:是否启用 MKL-DNN 加速推理。
说明: 如果 MKL-DNN 不可用或模型不支持通过 MKL-DNN 加速,即使设置了此标志,也不会使用加速。
boolTruemkldnn_cache_capacity含义:MKL-DNN 缓存容量。 int10cpu_threads含义:在 CPU 上推理时使用的线程数量。 int10input_shape含义:模型输入图像尺寸,格式为 (C, H, W)。tuple|NoneNone- 调用文本识别模型的
predict()方法进行推理预测,该方法会返回一个结果列表。另外,本模块还提供了predict_iter()方法。两者在参数接受和结果返回方面是完全一致的,区别在于predict_iter()返回的是一个generator,能够逐步处理和获取预测结果,适合处理大型数据集或希望节省内存的场景。可以根据实际需求选择使用这两种方法中的任意一种。predict()方法参数有input和batch_size,具体说明如下:
参数 参数说明 参数类型 默认值 input含义:待预测数据,支持多种输入类型,必填。
说明:- Python Var:如
numpy.ndarray表示的图像数据 - str:如图像文件或者PDF文件的本地路径:
/root/data/img.jpg;如URL链接,如图像文件或PDF文件的网络URL:示例;如本地目录,该目录下需包含待预测图像,如本地路径:/root/data/(当前不支持目录中包含PDF文件的预测,PDF文件需要指定到具体文件路径) - list:列表元素需为上述类型数据,如
[numpy.ndarray, numpy.ndarray],["/root/data/img1.jpg", "/root/data/img2.jpg"],["/root/data1", "/root/data2"]
Python Var|str|listbatch_size含义:批大小
说明: 可设置为任意正整数。int1 - 对预测结果进行处理,每个样本的预测结果均为对应的Result对象,且支持打印、保存为图片、保存为
json文件的操作:
方法 方法说明 参数 参数类型 参数说明 默认值 print()打印结果到终端 format_jsonbool是否对输出内容进行使用 JSON缩进格式化Trueindentint指定缩进级别,以美化输出的 JSON数据,使其更具可读性,仅当format_json为True时有效4 ensure_asciibool控制是否将非 ASCII字符转义为Unicode。设置为True时,所有非ASCII字符将被转义;False则保留原始字符,仅当format_json为True时有效Falsesave_to_json()将结果保存为json格式的文件 save_pathstr保存的文件路径,当为目录时,保存文件命名与输入文件类型命名一致 无 indentint指定缩进级别,以美化输出的 JSON数据,使其更具可读性,仅当format_json为True时有效4 ensure_asciibool控制是否将非 ASCII字符转义为Unicode。设置为True时,所有非ASCII字符将被转义;False则保留原始字符,仅当format_json为True时有效Falsesave_to_img()将结果保存为图像格式的文件 save_pathstr保存的文件路径,当为目录时,保存文件命名与输入文件类型命名一致 无 - 此外,也支持通过属性获取带结果的可视化图像和预测结果,具体如下:
属性 属性说明 json获取预测的 json格式的结果img获取格式为 dict的可视化图像四、二次开发
如果以上模型在您的场景上效果仍然不理想,您可以尝试以下步骤进行二次开发,此处以训练
PP-OCRv5_server_rec举例,其他模型替换对应配置文件即可。首先,您需要准备文本识别的数据集,可以参考文本识别 Demo 数据的格式准备,准备好后,即可按照以下步骤进行模型训练和导出,导出后,可以将模型快速集成到上述 API 中。此处以文本识别 Demo 数据示例。在训练模型之前,请确保已经按照安装文档安装了 PaddleOCR 所需要的依赖。4.1 数据集、预训练模型准备
4.1.1 准备数据集
# 下载示例数据集 wget https://paddle-model-ecology.bj.bcebos.com/paddlex/data/ocr_rec_dataset_examples.tar tar -xf ocr_rec_dataset_examples.tar4.1.2 下载预训练模型
# 下载 PP-OCRv5_server_rec 预训练模型 wget https://paddle-model-ecology.bj.bcebos.com/paddlex/official_pretrained_model/PP-OCRv5_server_rec_pretrained.pdparams4.2 模型训练
PaddleOCR 对代码进行了模块化,训练
PP-OCRv5_server_rec识别模型时需要使用PP-OCRv5_server_rec的配置文件。训练命令如下:
#单卡训练 (默认训练方式) python3 tools/train.py -c configs/rec/PP-OCRv5/PP-OCRv5_server_rec.yml \ -o Global.pretrained_model=./PP-OCRv5_server_rec_pretrained.pdparams #多卡训练,通过--gpus参数指定卡号 python3 -m paddle.distributed.launch --gpus '0,1,2,3' tools/train.py -c configs/rec/PP-OCRv5/PP-OCRv5_server_rec.yml \ -o Global.pretrained_model=./PP-OCRv5_server_rec_pretrained.pdparams4.3 模型评估
您可以评估已经训练好的权重,如,
output/xxx/xxx.pdparams,使用如下命令进行评估:#注意将pretrained_model的路径设置为本地路径。若使用自行训练保存的模型,请注意修改路径和文件名为{path/to/weights}/{model_name}。 #demo 测试集评估 python3 tools/eval.py -c configs/rec/PP-OCRv5/PP-OCRv5_server_rec.yml -o \ Global.pretrained_model=output/xxx/xxx.pdparams4.4 模型导出
python3 tools/export_model.py -c configs/rec/PP-OCRv5/PP-OCRv5_server_rec.yml -o \ Global.pretrained_model=output/xxx/xxx.pdparams \ Global.save_inference_dir="./PP-OCRv5_server_rec_infer/"导出模型后,静态图模型会存放于当前目录的
./PP-OCRv5_server_rec_infer/中,在该目录下,您将看到如下文件:./PP-OCRv5_server_rec_infer/ ├── inference.json ├── inference.pdiparams ├── inference.yml至此,二次开发完成,该静态图模型可以直接集成到 PaddleOCR 的 API 中。
训练后的模型如果想使用
paddle_dynamic或transformers引擎,请参考后文 推理引擎 中的 权重转换 部分将模型由pdparams格式通过 PaddleX 转换为safetensors格式。五、推理引擎 {#五推理引擎}
关于推理引擎的详细说明、取值、兼容性规则与示例请参见 推理引擎与配置说明。
5.1 速度数据
model engine Preprocessing (ms) Inference (ms) PostProcessing (ms) End-to-End (ms) PP-OCRv5_mobile_rec paddle_static 1.94 6.69 1.00 9.76 paddle_dynamic 1.97 35.38 1.11 38.60 transformers 3.31 17.70 0.50 21.68 onnxruntime 1.82 2.05 0.91 4.91 PP-OCRv5_server_rec paddle_static 1.98 11.37 1.21 14.69 paddle_dynamic 1.98 23.89 1.32 27.34 transformers 3.99 11.69 0.51 16.36 onnxruntime 1.80 3.15 0.90 5.98 PP-OCRv6_medium_rec paddle_static 1.74 5.38 0.84 8.08 paddle_dynamic 1.76 13.38 0.85 16.10 transformers 2.58 7.04 0.41 10.19 onnxruntime 1.74 2.28 0.84 4.97 PP-OCRv6_small_rec paddle_static 1.74 4.73 0.82 7.41 paddle_dynamic 1.76 12.43 0.87 15.18 transformers 2.55 6.70 0.41 9.82 onnxruntime 1.73 1.79 0.83 4.46 PP-OCRv6_tiny_rec paddle_static 1.76 2.77 0.40 5.04 paddle_dynamic 1.75 6.96 0.36 9.19 transformers 2.45 3.12 0.40 6.12 onnxruntime 1.73 0.92 0.36 3.12 测试环境说明:
- 测试数据:示例图片
- 硬件配置:
- GPU:NVIDIA A100 40G
- CPU:Intel(R) Xeon(R) Gold 6248 CPU @ 2.50GHz
- 软件环境:
- Ubuntu 22.04 / CUDA 12.6 / cuDNN 9.5
- paddlepaddle-gpu 3.2.1 / paddleocr 3.5 / transformers 5.4.0 / torch 2.10 / onnxruntime-gpu 1.23.2
5.2 权重转换 {#52-权重转换}
使用推理引擎时,系统会自动下载官方预训练模型。若需使用自训练模型配合
paddle_dynamic或transformers引擎,请参考 PaddleX 文字识别模块权重转换 部分,将pdparams格式通过 PaddleX 转换为safetensors格式,即可无缝集成到 PaddleOCR 的 API 中进行推理。若需使用自训练模型配合onnxruntime引擎,请参考PaddleX 获取 ONNX 模型获取onnx模型,即可无缝集成到 PaddleOCR 的 API 中进行推理。六、FAQ
- 调用文本识别模型的