# PP-OCRv5 **Repository Path**: xu_dazhous_spring/PP-OCRv5 ## Basic Information - **Project Name**: PP-OCRv5 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-24 - **Last Updated**: 2025-08-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README --- license: Apache License 2.0 tasks: - Object Detection - Image-to-Text --- # 一、PP-OCRv5简介 **PP-OCRv5** 是PP-OCR新一代文字识别解决方案,该方案聚焦于多场景、多文字类型的文字识别。在文字类型方面,PP-OCRv5支持简体中文、中文拼音、繁体中文、英文、日文5大主流文字类型,在场景方面,PP-OCRv5升级了中英复杂手写体、竖排文本、生僻字等多种挑战性场景的识别能力。在内部多场景复杂评估集上,PP-OCRv5较PP-OCRv4端到端提升13个百分点。  # 二、关键指标 ### 1. 文本检测指标
模型 | 手写中文 | 手写英文 | 印刷中文 | 印刷英文 | 繁体中文 | 古籍文本 | 日文 | 通用场景 | 拼音 | 旋转 | 扭曲 | 艺术字 | 平均 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
PP-OCRv5_server_det | 0.803 | 0.841 | 0.945 | 0.917 | 0.815 | 0.676 | 0.772 | 0.797 | 0.671 | 0.8 | 0.876 | 0.673 | 0.827 |
PP-OCRv4_server_det | 0.706 | 0.249 | 0.888 | 0.690 | 0.759 | 0.473 | 0.685 | 0.715 | 0.542 | 0.366 | 0.775 | 0.583 | 0.662 |
PP-OCRv5_mobile_det | 0.744 | 0.777 | 0.905 | 0.910 | 0.823 | 0.581 | 0.727 | 0.721 | 0.575 | 0.647 | 0.827 | 0.525 | 0.770 |
PP-OCRv4_mobile_det | 0.583 | 0.369 | 0.872 | 0.773 | 0.663 | 0.231 | 0.634 | 0.710 | 0.430 | 0.299 | 0.715 | 0.549 | 0.624 |
评估集类别 | 手写中文 | 手写英文 | 印刷中文 | 印刷英文 | 繁体中文 | 古籍文本 | 日文 | 易混淆字符 | 通用场景 | 拼音 | 竖直文本 | 艺术字 | 加权平均 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
PP-OCRv5_server_rec | 0.5807 | 0.5806 | 0.9013 | 0.8679 | 0.7472 | 0.6039 | 0.7372 | 0.5946 | 0.8384 | 0.7435 | 0.9314 | 0.6397 | 0.8401 |
PP-OCRv4_server_rec | 0.3626 | 0.2661 | 0.8486 | 0.6677 | 0.4097 | 0.3080 | 0.4623 | 0.5028 | 0.8362 | 0.2694 | 0.5455 | 0.5892 | 0.5735 |
PP-OCRv5_mobile_rec | 0.4166 | 0.4944 | 0.8605 | 0.8753 | 0.7199 | 0.5786 | 0.7577 | 0.5570 | 0.7703 | 0.7248 | 0.8089 | 0.5398 | 0.8015 |
PP-OCRv4_mobile_rec | 0.2980 | 0.2550 | 0.8398 | 0.6598 | 0.3218 | 0.2593 | 0.4724 | 0.4599 | 0.8106 | 0.2593 | 0.5924 | 0.5555 | 0.5301 |
参数 | 参数说明 | 参数类型 | 默认值 |
---|---|---|---|
input |
待预测数据,必填。如图像文件或者PDF文件的本地路径:/root/data/img.jpg ;如URL链接,如图像文件或PDF文件的网络URL:示例;如本地目录,该目录下需包含待预测图像,如本地路径:/root/data/ (当前不支持目录中包含PDF文件的预测,PDF文件需要指定到具体文件路径)。
|
str |
|
save_path |
指定推理结果文件保存的路径。如果不设置,推理结果将不会保存到本地。 | str |
|
doc_orientation_classify_model_name |
文档方向分类模型的名称。如果不设置,将会使用产线默认模型。 | str |
|
doc_orientation_classify_model_dir |
文档方向分类模型的目录路径。如果不设置,将会下载官方模型。 | str |
|
doc_unwarping_model_name |
文本图像矫正模型的名称。如果不设置,将会使用产线默认模型。 | str |
|
doc_unwarping_model_dir |
文本图像矫正模型的目录路径。如果不设置,将会下载官方模型。 | str |
|
text_detection_model_name |
文本检测模型的名称。如果不设置,将会使用产线默认模型。 | str |
|
text_detection_model_dir |
文本检测模型的目录路径。如果不设置,将会下载官方模型。 | str |
|
text_line_orientation_model_name |
文本行方向模型的名称。如果不设置,将会使用产线默认模型。 | str |
|
text_line_orientation_model_dir |
文本行方向模型的目录路径。如果不设置,将会下载官方模型。 | str |
|
text_line_orientation_batch_size |
文本行方向模型的批处理大小。如果不设置,将默认设置批处理大小为1 。 |
int |
|
text_recognition_model_name |
文本识别模型的名称。如果不设置,将会使用产线默认模型。 | str |
|
text_recognition_model_dir |
文本识别模型的目录路径。如果不设置,将会下载官方模型。 | str |
|
text_recognition_batch_size |
文本识别模型的批处理大小。如果不设置,将默认设置批处理大小为1 。 |
int |
|
use_doc_orientation_classify |
是否加载并使用文档方向分类功能。如果不设置,将默认使用产线初始化的该参数值,初始化为True 。 |
bool |
|
use_doc_unwarping |
是否加载并使用文本图像矫正功能。如果不设置,将默认使用产线初始化的该参数值,初始化为True 。 |
bool |
|
use_textline_orientation |
是否加载并使用文本行方向功能。如果不设置,将默认使用产线初始化的该参数值,初始化为True 。 |
bool |
|
text_det_limit_side_len |
文本检测的最大边长度限制。
大于 0 的任意整数。如果不设置,将默认使用产线初始化的该参数值,初始化为 960 。
|
int |
|
text_det_limit_type |
文本检测的边长度限制类型。支持 min 和 max ,min 表示保证图像最短边不小于 det_limit_side_len ,max 表示保证图像最长边不大于 limit_side_len 。如果不设置,将默认使用产线初始化的该参数值,初始化为 max 。
|
str |
|
text_det_thresh |
文本检测像素阈值,输出的概率图中,得分大于该阈值的像素点才会被认为是文字像素点。
大于0 的任意浮点数。如果不设置,将默认使用产线初始化的该参数值 0.3 。
|
float |
|
text_det_box_thresh |
文本检测框阈值,检测结果边框内,所有像素点的平均得分大于该阈值时,该结果会被认为是文字区域。
大于 0 的任意浮点数。如果不设置,将默认使用产线初始化的该参数值 0.6 。
|
float |
|
text_det_unclip_ratio |
文本检测扩张系数,使用该方法对文字区域进行扩张,该值越大,扩张的面积越大。大于0 的任意浮点数。如果不设置,将默认使用产线初始化的该参数值 2.0 。
|
float |
|
text_det_input_shape |
文本检测的输入形状,您可以设置3个值代表C,H,W。 | int |
|
text_rec_score_thresh |
文本识别阈值,得分大于该阈值的文本结果会被保留。
大于0 的任意浮点数。如果不设置,将默认使用产线初始化的该参数值 0.0 。即不设阈值。
|
float |
|
text_rec_input_shape |
文本识别的输入形状。 | tuple |
|
lang |
使用指定语言的 OCR 模型。
ch 。
|
str |
|
ocr_version |
OCR 版本。
PP-OCRv5 系列模型。
|
str |
|
det_model_dir |
已废弃,请参考text_detection_model_dir ,且与新的参数不能同时指定。 |
str |
|
det_limit_side_len |
已废弃,请参考text_det_limit_side_len ,且与新的参数不能同时指定。 |
int |
|
det_limit_type |
已废弃,请参考text_det_limit_type ,且与新的参数不能同时指定。
|
str |
|
det_db_thresh |
已废弃,请参考text_det_thresh ,且与新的参数不能同时指定。
|
float |
|
det_db_box_thresh |
已废弃,请参考text_det_box_thresh ,且与新的参数不能同时指定。
|
float |
|
det_db_unclip_ratio |
已废弃,请参考text_det_unclip_ratio ,且与新的参数不能同时指定。
|
float |
|
rec_model_dir |
已废弃,请参考text_recognition_model_dir ,且与新的参数不能同时指定。 |
str |
|
rec_batch_num |
已废弃,请参考text_recognition_batch_size ,且与新的参数不能同时指定。 |
int |
|
use_angle_cls |
已废弃,请参考use_textline_orientation ,且与新的参数不能同时指定。 |
bool |
|
cls_model_dir |
已废弃,请参考text_line_orientation_model_dir ,且与新的参数不能同时指定。 |
str |
|
cls_batch_num |
已废弃,请参考text_line_orientation_batch_size ,且与新的参数不能同时指定。 |
int |
|
device |
用于推理的设备。支持指定具体卡号。
|
str |
|
enable_hpi |
是否启用高性能推理。 | bool |
False |
use_tensorrt |
是否使用 TensorRT 进行推理加速。 | bool |
False |
min_subgraph_size |
最小子图大小,用于优化模型子图的计算。 | int |
3 |
precision |
计算精度,如 fp32、fp16。 | str |
fp32 |
enable_mkldnn |
是否启用 MKL-DNN 加速库。如果不设置,将默认启用。 | bool |
|
cpu_threads |
在 CPU 上进行推理时使用的线程数。 | int |
8 |
paddlex_config |
PaddleX产线配置文件路径。 | str |
PaddleOCR()
实例化 OCR 产线对象,具体参数说明如下:参数 | 参数说明 | 参数类型 | 默认值 |
---|---|---|---|
doc_orientation_classify_model_name |
文档方向分类模型的名称。如果设置为None ,将会使用产线默认模型。 |
str |
None |
doc_orientation_classify_model_dir |
文档方向分类模型的目录路径。如果设置为None ,将会下载官方模型。 |
str |
None |
doc_unwarping_model_name |
文本图像矫正模型的名称。如果设置为None ,将会使用产线默认模型。 |
str |
None |
doc_unwarping_model_dir |
文本图像矫正模型的目录路径。如果设置为None ,将会下载官方模型。 |
str |
None |
text_detection_model_name |
文本检测模型的名称。如果设置为None ,将会使用产线默认模型。 |
str |
None |
text_detection_model_dir |
文本检测模型的目录路径。如果设置为None ,将会下载官方模型。 |
str |
None |
text_line_orientation_model_name |
文本行方向模型的名称。如果设置为None ,将会使用产线默认模型。 |
str |
None |
text_line_orientation_model_dir |
文本行方向模型的目录路径。如果设置为None ,将会下载官方模型。 |
str |
None |
text_line_orientation_batch_size |
文本行方向模型的批处理大小。如果设置为None ,将默认设置批处理大小为1 。 |
int |
None |
text_recognition_model_name |
文本识别模型的名称。如果设置为None ,将会使用产线默认模型。 |
str |
None |
text_recognition_model_dir |
文本识别模型的目录路径。如果设置为None ,将会下载官方模型。 |
str |
None |
text_recognition_batch_size |
文本识别模型的批处理大小。如果设置为None ,将默认设置批处理大小为1 。 |
int |
None |
use_doc_orientation_classify |
是否加载并使用文档方向分类功能。如果设置为None ,将默认使用产线初始化的该参数值,初始化为True 。 |
bool |
None |
use_doc_unwarping |
是否加载并使用文本图像矫正功能。如果设置为None ,将默认使用产线初始化的该参数值,初始化为True 。 |
bool |
None |
use_textline_orientation |
是否加载并使用文本行方向功能。如果设置为None ,将默认使用产线初始化的该参数值,初始化为True 。 |
bool |
None |
text_det_limit_side_len |
文本检测的最大边长度限制。
|
int |
None |
text_det_limit_type |
文本检测的边长度限制类型。
|
str |
None |
text_det_thresh |
文本检测像素阈值,输出的概率图中,得分大于该阈值的像素点才会被认为是文字像素点。
|
float |
None |
text_det_box_thresh |
文本检测框阈值,检测结果边框内,所有像素点的平均得分大于该阈值时,该结果会被认为是文字区域。
|
float |
None |
text_det_unclip_ratio |
文本检测扩张系数,使用该方法对文字区域进行扩张,该值越大,扩张的面积越大。
|
float |
None |
text_det_input_shape |
文本检测的输入形状。 | tuple |
None |
text_rec_score_thresh |
文本识别阈值,得分大于该阈值的文本结果会被保留。
|
float |
None |
text_rec_input_shape |
文本识别的输入形状。 | tuple |
None |
lang |
使用指定语言的 OCR 模型。
|
str |
None |
ocr_version |
OCR 版本。
|
str |
None |
device |
用于推理的设备。支持指定具体卡号。
|
str |
None |
enable_hpi |
是否启用高性能推理。 | bool |
False |
use_tensorrt |
是否使用 TensorRT 进行推理加速。 | bool |
False |
min_subgraph_size |
最小子图大小,用于优化模型子图的计算。 | int |
3 |
precision |
计算精度,如 fp32、fp16。 | str |
"fp32" |
enable_mkldnn |
是否启用 MKL-DNN 加速库。如果设置为None ,将默认启用。 |
bool |
None |
cpu_threads |
在 CPU 上进行推理时使用的线程数。 | int |
8 |
paddlex_config |
PaddleX产线配置文件路径。 | str |
None |
predict()
方法进行推理预测,该方法会返回一个结果列表。另外,产线还提供了 predict_iter()
方法。两者在参数接受和结果返回方面是完全一致的,区别在于 predict_iter()
返回的是一个 generator
,能够逐步处理和获取预测结果,适合处理大型数据集或希望节省内存的场景。可以根据实际需求选择使用这两种方法中的任意一种。以下是 predict()
方法的参数及其说明:参数 | 参数说明 | 参数类型 | 默认值 |
---|---|---|---|
input |
待预测数据,支持多种输入类型,必填。
|
Python Var|str|list |
|
use_doc_orientation_classify |
是否在推理时使用文档方向分类模块。 | bool |
None |
use_doc_unwarping |
是否在推理时使用文本图像矫正模块。 | bool |
None |
use_textline_orientation |
是否在推理时使用文本行方向分类模块。 | bool |
None |
text_det_limit_side_len |
与实例化时的参数相同。 | int |
None |
text_det_limit_type |
与实例化时的参数相同。 | str |
None |
text_det_thresh |
与实例化时的参数相同。 | float |
None |
text_det_box_thresh |
与实例化时的参数相同。 | float |
None |
text_det_unclip_ratio |
与实例化时的参数相同。 | float |
None |
text_rec_score_thresh |
与实例化时的参数相同。 | float |
None |
json
文件的操作:方法 | 方法说明 | 参数 | 参数类型 | 参数说明 | 默认值 |
---|---|---|---|---|---|
print() |
打印结果到终端 | format_json |
bool |
是否对输出内容进行使用 JSON 缩进格式化。 |
True |
indent |
int |
指定缩进级别,以美化输出的 JSON 数据,使其更具可读性,仅当 format_json 为 True 时有效。 |
4 | ||
ensure_ascii |
bool |
控制是否将非 ASCII 字符转义为 Unicode 。设置为 True 时,所有非 ASCII 字符将被转义;False 则保留原始字符,仅当format_json 为True 时有效。 |
False |
||
save_to_json() |
将结果保存为json格式的文件 | save_path |
str |
保存的文件路径,当为目录时,保存文件命名与输入文件类型命名一致。 | 无 |
indent |
int |
指定缩进级别,以美化输出的 JSON 数据,使其更具可读性,仅当 format_json 为 True 时有效。 |
4 | ||
ensure_ascii |
bool |
控制是否将非 ASCII 字符转义为 Unicode 。设置为 True 时,所有非 ASCII 字符将被转义;False 则保留原始字符,仅当format_json 为True 时有效。 |
False |
||
save_to_img() |
将结果保存为图像格式的文件 | save_path |
str |
保存的文件路径,支持目录或文件路径。 | 无 |
print()
方法会将结果打印到终端,打印到终端的内容解释如下:
input_path
: (str)
待预测图像的输入路径page_index
: (Union[int, None])
如果输入是PDF文件,则表示当前是PDF的第几页,否则为 None
model_settings
: (Dict[str, bool])
配置产线所需的模型参数
use_doc_preprocessor
: (bool)
控制是否启用文档预处理子产线use_textline_orientation
: (bool)
控制是否启用文本行方向分类功能doc_preprocessor_res
: (Dict[str, Union[str, Dict[str, bool], int]])
文档预处理子产线的输出结果。仅当use_doc_preprocessor=True
时存在
input_path
: (Union[str, None])
图像预处理子产线接受的图像路径,当输入为numpy.ndarray
时,保存为None
model_settings
: (Dict)
预处理子产线的模型配置参数
use_doc_orientation_classify
: (bool)
控制是否启用文档方向分类use_doc_unwarping
: (bool)
控制是否启用文本图像矫正angle
: (int)
文档方向分类的预测结果。启用时取值为[0,1,2,3],分别对应[0°,90°,180°,270°];未启用时为-1dt_polys
: (List[numpy.ndarray])
文本检测的多边形框列表。每个检测框由4个顶点坐标构成的numpy数组表示,数组shape为(4, 2),数据类型为int16dt_scores
: (List[float])
文本检测框的置信度列表text_det_params
: (Dict[str, Dict[str, int, float]])
文本检测模块的配置参数
limit_side_len
: (int)
图像预处理时的边长限制值limit_type
: (str)
边长限制的处理方式thresh
: (float)
文本像素分类的置信度阈值box_thresh
: (float)
文本检测框的置信度阈值unclip_ratio
: (float)
文本检测框的膨胀系数text_type
: (str)
文本检测的类型,当前固定为"general"textline_orientation_angles
: (List[int])
文本行方向分类的预测结果。启用时返回实际角度值(如[0,0,1]),未启用时返回[-1,-1,-1]text_rec_score_thresh
: (float)
文本识别结果的过滤阈值rec_texts
: (List[str])
文本识别结果列表,仅包含置信度超过text_rec_score_thresh
的文本rec_scores
: (List[float])
文本识别的置信度列表,已按text_rec_score_thresh
过滤rec_polys
: (List[numpy.ndarray])
经过置信度过滤的文本检测框列表,格式同dt_polys
rec_boxes
: (numpy.ndarray)
检测框的矩形边界框数组,shape为(n, 4),dtype为int16。每一行表示一个矩形框的[x_min, y_min, x_max, y_max]坐标,其中(x_min, y_min)为左上角坐标,(x_max, y_max)为右下角坐标save_to_json()
方法会将上述内容保存到指定的save_path
中,如果指定为目录,则保存的路径为save_path/{your_img_basename}_res.json
,如果指定为文件,则直接保存到该文件中。由于json文件不支持保存numpy数组,因此会将其中的numpy.array
类型转换为列表形式。save_to_img()
方法会将可视化结果保存到指定的save_path
中,如果指定为目录,则保存的路径为save_path/{your_img_basename}_ocr_res_img.{your_img_extension}
,如果指定为文件,则直接保存到该文件中。(产线通常包含较多结果图片,不建议直接指定为具体的文件路径,否则多张图会被覆盖,仅保留最后一张图)此外,也支持通过属性获取带结果的可视化图像和预测结果,具体如下:
属性 | 属性说明 |
---|---|
json |
获取预测的 json 格式的结果 |
img |
获取格式为 dict 的可视化图像 |
json
属性获取的预测结果为dict类型的数据,相关内容与调用 save_to_json()
方法保存的内容一致。img
属性返回的预测结果是一个字典类型的数据。其中,键分别为 ocr_res_img
和 preprocessed_img
,对应的值是两个 Image.Image
对象:一个用于显示 OCR 结果的可视化图像,另一个用于展示图像预处理的可视化图像。如果没有使用图像预处理子模块,则字典中只包含 ocr_res_img
。