--- comments: true --- # 文档图像预处理产线使用教程 ## 1. 文档图像预处理产线介绍 文档图像预处理产线集成了文档方向分类和形变矫正两大功能。文档方向分类可自动识别文档的四个方向(0°、90°、180°、270°),确保文档以正确的方向进行后续处理。文本图像矫正模型则用于修正文档拍摄或扫描过程中的几何扭曲,恢复文档的原始形状和比例。适用于数字化文档管理、OCR类任务前处理、以及任何需要提高文档图像质量的场景。通过自动化的方向校正与形变矫正,该模块显著提升了文档处理的准确性和效率,为用户提供更为可靠的图像分析基础。本产线同时提供了灵活的服务化部署方式,支持在多种硬件上使用多种编程语言调用。不仅如此,本产线也提供了二次开发的能力,您可以基于本产线在您自己的数据集上训练调优,训练后的模型也可以无缝集成。 通用文档图像预处理产线中包含以下2个模块。每个模块均可独立进行训练和推理,并包含多个模型。有关详细信息,请点击相应模块以查看文档。 - [文档图像方向分类模块](../module_usage/doc_img_orientation_classification.md)(可选) - [文本图像矫正模块](../module_usage/text_image_unwarping.md)(可选) 在本产线中,您可以根据下方的基准测试数据选择使用的模型。 > 推理耗时仅包含模型推理耗时,不包含前后处理耗时。
文档图像方向分类模块(可选):
模型模型下载链接 Top-1 Acc(%) GPU推理耗时(ms)
[常规模式 / 高性能模式]
CPU推理耗时(ms)
[常规模式 / 高性能模式]
模型存储大小(MB) 介绍
PP-LCNet_x1_0_doc_ori 推理模型/训练模型 99.06 2.62 / 0.59 3.24 / 1.19 7 基于PP-LCNet_x1_0的文档图像分类模型,含有四个类别,即0度,90度,180度,270度
文本图像矫正模块(可选):
模型模型下载链接 CER GPU推理耗时(ms)
[常规模式 / 高性能模式]
CPU推理耗时(ms)
[常规模式 / 高性能模式]
模型存储大小(MB) 介绍
UVDoc 推理模型/训练模型 0.179 19.05 / 19.05 - / 869.82 30.3 高精度文本图像矫正模型
测试环境说明:
模式 GPU配置 CPU配置 加速技术组合
常规模式 FP32精度 / 无TRT加速 FP32精度 / 8线程 PaddleInference
高性能模式 选择先验精度类型和加速策略的最优组合 FP32精度 / 8线程 选择先验最优后端(Paddle/OpenVINO/TRT等)
## 2. 快速开始 在本地使用通用文档图像预处理产线前,请确保您已经按照[安装教程](../installation.md)完成了wheel包安装。安装完成后,可以在本地使用命令行体验或 Python 集成。 **请注意,如果在执行过程中遇到程序失去响应、程序异常退出、内存资源耗尽、推理速度极慢等问题,请尝试参考文档调整配置,例如关闭不需要使用的功能或使用更轻量的模型。** ### 2.1 命令行方式体验 一行命令即可快速体验 doc_preprocessor 产线效果: ```bash paddleocr doc_preprocessor -i https://paddle-model-ecology.bj.bcebos.com/paddlex/demo_image/doc_test_rotated.jpg # 通过 --use_doc_orientation_classify 指定是否使用文档方向分类模型 paddleocr doc_preprocessor -i ./doc_test_rotated.jpg --use_doc_orientation_classify True # 通过 --use_doc_unwarping 指定是否使用文本图像矫正模块 paddleocr doc_preprocessor -i ./doc_test_rotated.jpg --use_doc_unwarping True # 通过 --device 指定模型推理时使用 GPU paddleocr doc_preprocessor -i ./doc_test_rotated.jpg --device gpu ```
命令行支持更多参数设置,点击展开以查看命令行参数的详细说明
参数 参数说明 参数类型 默认值
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
use_doc_orientation_classify 含义:是否加载并使用文档方向分类模块。
说明: 如果不设置,将使用产线初始化的该参数值,默认初始化为True
bool
use_doc_unwarping 含义:是否加载并使用文本图像矫正模块。
说明: 如果不设置,将使用产线初始化的该参数值,默认初始化为True
bool
device 含义:用于推理的设备。
说明: 支持指定具体卡号:
  • CPU:如 cpu 表示使用 CPU 进行推理;
  • GPU:如 gpu:0 表示使用第 1 块 GPU 进行推理;
  • NPU:如 npu:0 表示使用第 1 块 NPU 进行推理;
  • XPU:如 xpu:0 表示使用第 1 块 XPU 进行推理;
  • MLU:如 mlu:0 表示使用第 1 块 MLU 进行推理;
  • DCU:如 dcu:0 表示使用第 1 块 DCU 进行推理;
  • 沐曦 GPU:如 metax_gpu:0 表示使用第 1 块沐曦 GPU 进行推理;
  • 天数 GPU:如 iluvatar_gpu:0 表示使用第 1 块天数 GPU 进行推理;
如果不设置,将默认使用产线初始化的该参数值,初始化时,会优先使用本地的 GPU 0号设备,如果没有,则使用 CPU 设备。
str
enable_hpi 含义:是否启用高性能推理。 bool False
use_tensorrt 含义:是否启用 Paddle Inference 的 TensorRT 子图引擎。
说明: 如果模型不支持通过 TensorRT 加速,即使设置了此标志,也不会使用加速。
对于 CUDA 11.8 版本的飞桨,兼容的 TensorRT 版本为 8.x(x>=6),建议安装 TensorRT 8.6.1.6。
bool False
precision 含义:计算精度,如 fp32、fp16。 str fp32
enable_mkldnn 含义:是否启用 MKL-DNN 加速推理。
说明: 如果 MKL-DNN 不可用或模型不支持通过 MKL-DNN 加速,即使设置了此标志,也不会使用加速。
bool True
mkldnn_cache_capacity 含义:MKL-DNN 缓存容量。 int 10
cpu_threads 含义:在 CPU 上进行推理时使用的线程数。 int 8
paddlex_config 含义:PaddleX产线配置文件路径。 str

运行结果会被打印到终端上,默认配置的 doc_preprocessor 产线的运行结果如下: ```bash {'res': {'input_path': '/root/.paddlex/predict_input/doc_test_rotated.jpg', 'page_index': None, 'model_settings': {'use_doc_orientation_classify': True, 'use_doc_unwarping': True}, 'angle': 180}} ``` 可视化结果保存在`save_path`下,可视化结果如下: ### 2.2 Python脚本方式集成 命令行方式是为了快速体验查看效果,一般来说,在项目中,往往需要通过代码集成,您可以通过几行代码即可完成产线的快速推理,推理代码如下: ```python from paddleocr import DocPreprocessor pipeline = DocPreprocessor() # docpp = DocPreprocessor(use_doc_orientation_classify=True) # 通过 use_doc_orientation_classify 指定是否使用文档方向分类模型 # docpp = DocPreprocessor(use_doc_unwarping=True) # 通过 use_doc_unwarping 指定是否使用文本图像矫正模块 # docpp = DocPreprocessor(device="gpu") # 通过 device 指定模型推理时使用 GPU output = pipeline.predict("./doc_test_rotated.jpg") for res in output: res.print() ## 打印预测的结构化输出 res.save_to_img("./output/") res.save_to_json("./output/") ``` 在上述 Python 脚本中,执行了如下几个步骤: (1)通过 DocPreprocessor() 实例化 doc_preprocessor 产线对象:具体参数说明如下:
参数 参数说明 参数类型 默认值
doc_orientation_classify_model_name 含义:文档方向分类模型的名称。
说明: 如果设置为None,将会使用产线默认模型。
str|None None
doc_orientation_classify_model_dir 含义:文档方向分类模型的目录路径。
说明: 如果设置为None,将会下载官方模型。
str|None None
doc_unwarping_model_name 含义:文本图像矫正模型的名称。
说明: 如果设置为None,将会使用产线默认模型。
str|None None
doc_unwarping_model_dir 含义:文本图像矫正模型的目录路径。
说明: 如果设置为None,将会下载官方模型。
str|None None
use_doc_orientation_classify 含义:是否加载并使用文档方向分类模块。
说明: 如果设置为None,将使用产线初始化的该参数值,默认初始化为True
bool|None None
use_doc_unwarping 含义:是否加载并使用文本图像矫正模块。
说明: 如果设置为None,将使用产线初始化的该参数值,默认初始化为True
bool|None None
device 含义:用于推理的设备。
说明: 支持指定具体卡号:
  • CPU:如 cpu 表示使用 CPU 进行推理;
  • GPU:如 gpu:0 表示使用第 1 块 GPU 进行推理;
  • NPU:如 npu:0 表示使用第 1 块 NPU 进行推理;
  • XPU:如 xpu:0 表示使用第 1 块 XPU 进行推理;
  • MLU:如 mlu:0 表示使用第 1 块 MLU 进行推理;
  • DCU:如 dcu:0 表示使用第 1 块 DCU 进行推理;
  • 沐曦 GPU:如 metax_gpu:0 表示使用第 1 块沐曦 GPU 进行推理;
  • 天数 GPU:如 iluvatar_gpu:0 表示使用第 1 块天数 GPU 进行推理;
  • None:如果设置为None,将默认使用产线初始化的该参数值,初始化时,会优先使用本地的 GPU 0号设备,如果没有,则使用 CPU 设备。
str|None None
enable_hpi 含义:是否启用高性能推理。 bool False
use_tensorrt 含义:是否启用 Paddle Inference 的 TensorRT 子图引擎。
说明: 如果模型不支持通过 TensorRT 加速,即使设置了此标志,也不会使用加速。
对于 CUDA 11.8 版本的飞桨,兼容的 TensorRT 版本为 8.x(x>=6),建议安装 TensorRT 8.6.1.6。
bool False
precision 含义:计算精度,如 fp32、fp16。 str "fp32"
enable_mkldnn 含义:是否启用 MKL-DNN 加速推理。
说明: 如果 MKL-DNN 不可用或模型不支持通过 MKL-DNN 加速,即使设置了此标志,也不会使用加速。
bool True
mkldnn_cache_capacity 含义:MKL-DNN 缓存容量。 int 10
cpu_threads 含义:在 CPU 上进行推理时使用的线程数。 int 8
paddlex_config 含义:PaddleX产线配置文件路径。 str|None None
(2)调用 doc_preprocessor 产线对象的 predict() 方法进行推理预测,该方法会返回一个结果列表。以下是 predict() 方法的参数及其说明:
参数 参数说明 参数类型 默认值
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
use_doc_orientation_classify 含义:是否在推理时使用文档方向分类模块。 bool|None None
use_doc_unwarping 含义:是否在推理时使用文本图像矫正模块。 bool|None None
(3)对预测结果进行处理,每个样本的预测结果均为对应的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 保存的文件路径,支持目录或文件路径