You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

12 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

comments
true

文本行方向分类模块使用教程

一、概述

文本行方向分类模块主要是将文本行的方向区分出来并使用后处理将其矫正。在诸如文档扫描、证照拍摄等过程中有时为了拍摄更清晰会将拍摄设备进行旋转导致得到的文本行也是不同方向的。此时标准的OCR流程无法很好地应对这些数据。利用图像分类技术可以预先判断文本行方向并将其进行方向调整从而提高OCR处理的准确性。

二、支持模型列表

模型 模型下载链接 Top-1 Acc% GPU推理耗时ms CPU推理耗时 (ms) 模型存储大小M 介绍
PP-LCNet_x0_25_textline_ori推理模型/训练模型 98.85 - - 0.96 基于PP-LCNet_x0_25的文本行分类模型含有两个类别即0度180度
PP-LCNet_x1_0_textline_ori推理模型/训练模型 99.42 - - 6.5 基于PP-LCNet_x1_0的文本行分类模型含有两个类别即0度180度

:文本行方向分类模型于 2025.5.26 升级,并增加 PP-LCNet_x1_0_textline_ori,如需使用升级前的模型权重,请点击下载链接

测试环境说明:

  • 性能测试环境
    • 测试数据集:PaddleOCR 自建的数据集,覆盖证件和文档等多个场景,包含 1000 张图片。
    • 硬件配置:
      • GPUNVIDIA Tesla T4
      • CPUIntel Xeon Gold 6271C @ 2.60GHz
      • 其他环境Ubuntu 20.04 / cuDNN 8.6 / TensorRT 8.5.2.2
  • 推理模式说明
模式 GPU配置 CPU配置 加速技术组合
常规模式 FP32精度 / 无TRT加速 FP32精度 / 8线程 PaddleInference
高性能模式 选择先验精度类型和加速策略的最优组合 FP32精度 / 8线程 选择先验最优后端Paddle/OpenVINO/TRT等

三、快速开始

在快速开始前,请先安装 PaddleOCR 的 wheel 包,详细请参考 安装教程

使用一行命令即可快速体验:

paddleocr textline_orientation_classification -i https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/textline_rot180_demo.jpg

您也可以将文本行方向分类模块中的模型推理集成到您的项目中。运行以下代码前,请您下载示例图片到本地。

from paddleocr import TextLineOrientationClassification
model = TextLineOrientationClassification(model_name="PP-LCNet_x0_25_textline_ori")
output = model.predict("textline_rot180_demo.jpg",  batch_size=1)
for res in output:
    res.print(json_format=False)
    res.save_to_img("./output/demo.png")
    res.save_to_json("./output/res.json")

运行后,得到的结果为:

{'res': {'input_path': 'textline_rot180_demo.jpg', 'page_index': None, 'class_ids': array([1], dtype=int32), 'scores': array([0.99864], dtype=float32), 'label_names': ['180_degree']}}

运行结果参数含义如下:

  • input_path:表示输入图片的路径。
  • page_index如果输入是PDF文件则表示当前是PDF的第几页否则为 None
  • class_ids:表示预测结果的类别 id含有两个类别即0度和180度。
  • scores:表示预测结果的置信度。
  • label_names:表示预测结果的类别名。

可视化图片如下:

相关方法、参数等说明如下:

  • TextLineOrientationClassification实例化文本行方向分类模型(此处以PP-LCNet_x0_25_textline_ori为例),具体说明如下:
参数 参数说明 参数类型 默认值
model_name 模型名称 str None
model_dir 模型存储路径 str None
device 用于推理的设备。
例如:cpugpunpugpu:0gpu:0,1
如指定多个设备,将进行并行推理。
默认情况下,优先使用 GPU 0若不可用则使用 CPU。
str None
enable_hpi 是否启用高性能推理。 bool False
use_tensorrt 是否启用 Paddle Inference 的 TensorRT 子图引擎。 bool False
min_subgraph_size 当使用 Paddle Inference 的 TensorRT 子图引擎时,设置的最小子图大小。 int 3
precision 当使用 Paddle Inference 的 TensorRT 子图引擎时设置的计算精度。
可选项:fp32fp16 等。
str fp32
enable_mkldnn 是否启用MKL-DNN加速库。
bool True
cpu_threads 在 CPU 上推理时使用的线程数量。 int 10
top_k 预测结果的前topk值如果不指定将默认使用PaddleOCR官方模型配置。若值为5表示打印返回预测结果的前5个类别和对应的分类概率 int None
  • 其中,model_name 必须指定,指定 model_name 后,默认使用 PaddleOCR 内置的模型参数,在此基础上,指定 model_dir 时,使用用户自定义的模型。

  • 调用文本行方向分类模型的 predict() 方法进行推理预测,该方法会返回一个结果列表。另外,本模块还提供了 predict_iter() 方法。两者在参数接受和结果返回方面是完全一致的,区别在于 predict_iter() 返回的是一个 generator,能够逐步处理和获取预测结果,适合处理大型数据集或希望节省内存的场景。可以根据实际需求选择使用这两种方法中的任意一种。predict() 方法参数有 inputbatch_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|list
batch_size 批大小,可设置为任意正整数。 int 1
  • 对预测结果进行处理每个样本的预测结果均为对应的Result对象且支持打印、保存为图片、保存为json文件的操作:
方法 方法说明 参数 参数类型 参数说明 默认值
print() 打印结果到终端 format_json bool 是否对输出内容进行使用 JSON 缩进格式化 True
indent int 指定缩进级别,以美化输出的 JSON 数据,使其更具可读性,仅当 format_jsonTrue 时有效 4
ensure_ascii bool 控制是否将非 ASCII 字符转义为 Unicode。设置为 True 时,所有非 ASCII 字符将被转义;False 则保留原始字符,仅当format_jsonTrue时有效 False
save_to_json() 将结果保存为json格式的文件 save_path str 保存的文件路径,当为目录时,保存文件命名与输入文件类型命名一致
indent int 指定缩进级别,以美化输出的 JSON 数据,使其更具可读性,仅当 format_jsonTrue 时有效 4
ensure_ascii bool 控制是否将非 ASCII 字符转义为 Unicode。设置为 True 时,所有非 ASCII 字符将被转义;False 则保留原始字符,仅当format_jsonTrue时有效 False
save_to_img() 将结果保存为图像格式的文件 save_path str 保存的文件路径,当为目录时,保存文件命名与输入文件类型命名一致
  • 此外,也支持通过属性获取带结果的可视化图像和预测结果,具体如下:
属性 属性说明
json 获取预测的json格式的结果
img 获取格式为dict的可视化图像

四、二次开发

由于 PaddleOCR 并不直接提供文本行方向分类的训练,因此,如果需要训练文档图像方向分类模型,可以参考 PaddleX 文本行方向分类二次开发部分进行训练。训练后的模型可以无缝集成到 PaddleOCR 的 API 中进行推理。