PaddleOCR 文本图像矫正(Text Image Unwarping)模块使用教程:UVDoc 模型推理实战

发布时间:2026/9/12 9:20:17

PaddleOCR 文本图像矫正(Text Image Unwarping)模块使用教程:UVDoc 模型推理实战 PaddleOCR 文本图像矫正Text Image Unwarping模块使用教程UVDoc 模型推理实战【免费下载链接】PaddleOCRTurn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between images/PDFs and LLMs. Supports 100 languages.项目地址: https://gitcode.com/GitHub_Trending/pa/PaddleOCR本文档介绍 PaddleOCR 3.x 中文本图像矫正模块Text Image Unwarping的完整使用流程。该模块基于 UVDoc 模型对文档图像中的扭曲、倾斜、透视形变进行几何矫正以提升后续文字识别的准确率是文档图像预处理与 RAG/LLM 数据管线中的关键一环。读完本文你将掌握该模块的命令行一键推理、Python API 集成、多推理引擎切换、结果解析与保存以及相关参数的底层含义与调优方法。1. 模块概述文本图像矫正Text Image Rectification的核心目的是对图像施加几何变换纠正文档图像中的**形变distortion、倾斜inclination、透视变形perspective deformation**等问题从而为后续更准确的文字识别OCR提供规整的输入。在实际应用中手机拍摄的文档照片、扫描书籍的弯曲页面、拍摄屏幕或展板的照片往往带有明显的几何畸变直接送入识别模型会显著降低识别精度。文本图像矫正模块正是为了解决这一痛点而设计先矫正、后识别是构建高鲁棒性文档解析流水线的常见前置步骤。从源码结构看该模块位于 paddleocr/_models/text_image_unwarping.py通过TextImageUnwarping类对 PaddleX 的底层预测器进行封装同时注册了名为text_image_unwarping的 CLI 子命令见 paddleocr/_models/text_image_unwarping.py#L44-L54并提供predict()与predict_iter()两种推理入口。2. 支持模型列表当前版本该模块内置的官方模型为UVDocHigh-accuracy text image rectification model高精度文本图像矫正模型相关信息如下模型模型下载链接CERGPU 推理耗时ms[常规模式 / 高性能模式]CPU 推理耗时ms[常规模式 / 高性能模式]模型存储大小MB说明UVDoc推理模型 / 训练模型0.17919.05 / 19.05- / 869.8230.3高精度文本图像矫正模型说明上表中的推理耗时仅包含模型推理时间不包含前后处理时间常规模式数值对应本地paddle_static推理引擎。测试环境说明性能测试环境测试数据集DocUNet benchmark 数据集硬件配置GPU 为 NVIDIA Tesla T4CPU 为 Intel Xeon Gold 6271C 2.60GHz软件环境Ubuntu 20.04 / CUDA 11.8 / cuDNN 8.9 / TensorRT 8.6.1.6paddlepaddle-gpu 3.0.0 / paddleocr 3.0.3推理模式说明模式GPU 配置CPU 配置加速技术组合常规模式FP32 精度 / 无 TRT 加速FP32 精度 / 8 线程PaddleInference高性能模式选择先验精度类型和加速策略的最优组合FP32 精度 / 8 线程选择最优先验后端Paddle / OpenVINO / TRT 等从源码层面看TextImageUnwarping的默认模型名为UVDoc见 paddleocr/_models/text_image_unwarping.py#L32-L34当不显式指定model_name时即使用该默认模型底层通过paddlex.create_predictor(model_name..., model_dir...)创建预测器见 paddleocr/_models/base.py#L71-L82。3. 快速开始3.1 环境准备❗ 快速开始之前请先安装 PaddleOCR wheel 包安装细节参考 安装教程。以下示例默认使用paddle_static推理引擎运行前请按照 PaddlePaddle 框架安装 先安装 PaddlePaddle。3.2 命令行一键推理你可以通过一条命令快速体验文本图像矫正paddleocr text_image_unwarping -i https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/doc_test.jpgpaddleocr是 PaddleOCR 提供的统一命令行入口text_image_unwarping是文本图像矫正模块对应的子命令注册于 paddleocr/_models/text_image_unwarping.py#L44-L48-i/--input指定输入路径或 URL必填支持本地图片、本地 PDF、图片目录或网络 URL见 paddleocr/_utils/cli.py#L31-L40命令行还支持--model_name、--model_dir、--device、--engine、--enable_hpi、--use_tensorrt、--precision、--enable_mkldnn、--cpu_threads等参数见 paddleocr/_models/base.py#L94-L102。切换推理引擎如果你选择transformers作为推理引擎请确保已配置好 Transformers 环境然后运行# 使用 transformers 引擎进行推理 paddleocr text_image_unwarping -i https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/doc_test.jpg \ --engine transformers如果你选择onnxruntime作为推理引擎请确保已配置好 ONNX Runtime 环境然后运行# 使用 onnxruntime 引擎进行推理 paddleocr text_image_unwarping -i https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/doc_test.jpg \ --engine onnxruntime在大多数场景下默认的paddle_static推理引擎能提供更好的推理性能是首选推荐。注意官方模型默认从 HuggingFace 下载。如果无法访问 HuggingFace请设置环境变量PADDLE_PDX_MODEL_SOURCEBOS将模型源切换为 BOS。未来将支持更多模型来源。3.3 Python API 集成你也可以将文本图像矫正模块的模型推理集成到自己的项目中。运行以下代码前请先将示例图片下载到本地from paddleocr import TextImageUnwarping model TextImageUnwarping(model_nameUVDoc) output model.predict(doc_test.jpg, batch_size1) for res in output: res.print() res.save_to_img(save_path./output/) res.save_to_json(save_path./output/res.json)上述示例默认使用paddle_static推理引擎。若选择transformers引擎from paddleocr import TextImageUnwarping model TextImageUnwarping( model_nameUVDoc, enginetransformers, ) output model.predict(doc_test.jpg, batch_size1) for res in output: res.print() res.save_to_img(save_path./output/) res.save_to_json(save_path./output/res.json)若选择onnxruntime引擎from paddleocr import TextImageUnwarping model TextImageUnwarping( model_nameUVDoc, engineonnxruntime, ) output model.predict(doc_test.jpg, batch_size1) for res in output: res.print() res.save_to_img(save_path./output/) res.save_to_json(save_path./output/res.json)在大多数场景下默认的paddle_static推理引擎能提供更好的推理性能是首选推荐。从源码实现看TextImageUnwarping继承自PaddleXPredictorWrapper其predict()方法内部通过list(self.predict_iter(...))一次性收集全部结果而predict_iter()直接透传底层paddlex_predictor.predict()见 paddleocr/_models/base.py#L53-L58。3.4 预测结果解读运行完成后得到的结果如下{res: {input_path: doc_test.jpg, page_index: None, doctr_img: ...}}结果中各参数的含义input_path表示待矫正图像的路径page_index页码索引处理 PDF 时有效单张图片时为Nonedoctr_img表示矫正后的图像结果。由于数据量较大不便于直接打印此处以...代替。你可以通过res.save_to_img()将预测结果保存为图片通过res.save_to_json()将预测结果保存为 json 文件。从测试用例也可以印证结果结构tests/models/test_text_image_unwarping.py#L40-L45断言预测结果的键集合为{input_path, page_index, input_img, doctr_img}即结果中同时包含输入图像与矫正后的图像。4. 核心参数详解4.1TextImageUnwarping实例化参数TextImageUnwarping用于实例化图像矫正模型此处以UVDoc为例具体参数说明如下参数说明类型默认值model_name含义模型名称strNonemodel_dir含义模型存储路径strNonedevice含义推理使用的设备。示例cpu、gpu、npu、gpu:0、gpu:0,1。指定多个设备时会进行并行推理注意并非所有场景都支持并行。默认优先使用 GPU 0否则使用 CPUstrNoneengine含义推理引擎。说明支持None默认、paddle、paddle_static、paddle_dynamic、transformers、onnxruntime。为None时本地推理默认使用paddle_static引擎。详细说明、取值、兼容性规则与示例参见 推理引擎与配置说明str\|NoneNoneengine_config含义推理引擎配置。说明建议与engine配合使用。支持的字段、兼容性规则与示例参见 推理引擎与配置说明dict\|NoneNoneenable_hpi含义是否使用高性能推理boolFalseuse_tensorrt含义是否使用 Paddle Inference 的 TensorRT 子图引擎。说明若模型不支持 TensorRT 加速即使设置该标志也不会启用加速。Paddle 搭配 CUDA 11.8 时兼容的 TensorRT 版本为 8.xx6推荐安装 TensorRT 8.6.1.6boolFalseprecision含义使用 Paddle Inference TensorRT 子图引擎时的 TensorRT 精度。选项fp32、fp16等strfp32enable_mkldnn含义是否启用 MKL-DNN 推理加速。说明若 MKL-DNN 不可用或模型不支持即使设置该标志也不会启用加速boolTruemkldnn_cache_capacity含义MKL-DNN 缓存容量int10cpu_threads含义CPU 推理使用的线程数int10这些参数的默认值在源码中有明确定义见 paddleocr/_constants.pyDEFAULT_USE_TENSORRT False、DEFAULT_PRECISION fp32、DEFAULT_ENABLE_MKLDNN True、DEFAULT_MKLDNN_CACHE_CAPACITY 10、DEFAULT_CPU_THREADS 10支持的精度列表为[fp32, fp16]支持的推理引擎列表为[paddle, paddle_static, paddle_dynamic, transformers, onnxruntime]见 paddleocr/_common_args.py#L29-L35。若传入未知参数或非法引擎/精度值会抛出ValueError提示见 paddleocr/_common_args.py#L52-L69。关于引擎配置的底层逻辑在默认paddle_static引擎下源码会根据设备类型自动构建引擎配置见 paddleocr/_common_args.py#L77-L99GPU 设备上若开启use_tensorrt会将run_mode设置为trt_fp32或trt_fp16否则为paddleCPU 设备上若开启enable_mkldnn则配置mkldnn_cache_capacity与cpu_threads否则run_mode为paddle。这也解释了为什么use_tensorrt、precision、enable_mkldnn等参数只有在paddle_static引擎下才真正生效。4.2predict()/predict_iter()方法参数调用图像矫正模型的predict()方法进行推理预测该方法会返回一个结果列表。此外该模块还提供predict_iter()方法。两种方法在参数接收与结果返回上保持一致区别在于predict_iter()返回一个generator可以逐步获取预测结果适合处理大规模数据集或内存受限的场景。你可以根据实际需求选择使用。predict()方法包含input和batch_size两个参数参数说明类型默认值input含义待预测的输入数据必填。说明支持多种输入类型Python 变量如图像数据的numpy.ndarraystr① 本地图像或 PDF 文件路径如/root/data/img.jpg② 图像或 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含义批大小。说明正整数int14.3 预测结果处理方法每个样本的预测结果对应一个 Result 对象支持打印、保存为图片和保存为 json 文件方法说明参数类型参数说明默认值print()将结果打印到终端format_jsonbool是否使用JSON缩进格式化输出内容Trueindentint指定美化输出JSON数据的缩进级别使其更易读仅在format_json为True时生效4ensure_asciibool控制是否将非ASCII字符转义为Unicode。为True时所有非ASCII字符被转义False保留原字符仅在format_json为True时生效Falsesave_to_json()将结果保存为 json 格式文件save_pathstr文件保存路径。指定为目录时保存的文件名与输入文件类型保持一致Noneindentint指定美化输出JSON数据的缩进级别使其更易读仅在format_json为True时生效4ensure_asciibool控制是否将非ASCII字符转义为Unicode。为True时所有非ASCII字符被转义False保留原字符仅在format_json为True时生效Falsesave_to_img()将结果保存为图片格式文件save_pathstr文件保存路径。指定为目录时保存的文件名与输入文件类型保持一致None4.4 预测结果属性此外还可以通过以下属性获取带可视化的图片结果和预测结果属性说明json以json格式获取预测结果img以dict格式获取可视化图片在命令行场景下perform_simple_inference会遍历predict_iter()返回的每个结果依次调用res.print()并在指定--save_path时调用res.save_all(save_path)保存全部输出见 paddleocr/_utils/cli.py#L48-L75。5. 二次开发当前模块暂不支持微调训练仅支持推理集成。关于该模块的微调训练计划在未来版本支持。因此现阶段使用该模块的正确方式是直接加载官方 UVDoc 预训练模型进行推理或将其作为数据预处理环节集成到更大的文档解析流水线中。6. 推理引擎推理引擎的详细说明、取值、兼容性规则与示例请参考 推理引擎与配置说明。6.1 速度数据不同推理引擎下的端到端耗时对比UVDoc 模型如下模型引擎预处理ms推理ms后处理ms端到端msUVDocpaddle_static14.9618.601.9336.66UVDocpaddle_dynamic10.9027.591.9640.94UVDoctransformers13.546.740.9133.07UVDoconnxruntime10.608.441.7521.30测试环境说明测试数据示例图片硬件配置GPU 为 NVIDIA A100 40GCPU 为 Intel(R) Xeon(R) Gold 6248 CPU 2.50GHz软件环境Ubuntu 22.04 / CUDA 12.6 / cuDNN 9.5paddlepaddle-gpu 3.2.1 / paddleocr 3.5 / transformers 5.4.0 / torch 2.10 / onnxruntime-gpu 1.23.2从表中数据可以看出在 A100 环境下onnxruntime引擎的端到端耗时最低21.30 mstransformers引擎的纯推理耗时最低6.74 ms而默认的paddle_static引擎则在兼容性与性能之间取得了较好的平衡这也是其作为默认引擎的原因。需要注意的是不同硬件与软件环境下各引擎的相对性能可能不同建议结合自身部署环境实测选择。7. FAQQ1为什么use_tensorrtTrue没有生效ATensorRT 加速仅在使用 Paddle Inference 的paddle_static引擎且模型支持 TensorRT 子图加速时才可能生效参见 paddleocr/_common_args.py#L77-L99 中 GPU 分支的run_mode配置逻辑。如果模型不支持 TensorRT 加速或当前未运行在 GPU 设备上即使设置该标志也不会启用加速。Q2为什么precision设置为fp16报错A源码中支持的精度列表为[fp32, fp16]见 paddleocr/_constants.py#L21传入列表之外的精度会抛出ValueError。请检查拼写例如应使用小写fp16而非FP16。Q3模型下载失败或无法从 HuggingFace 下载A官方模型默认从 HuggingFace 下载。如果无法访问 HuggingFace请设置环境变量PADDLE_PDX_MODEL_SOURCEBOS将模型源切换为 BOS 镜像。Q4predict()和predict_iter()有什么区别A两者参数与结果一致区别在于predict()一次性返回完整结果列表内部通过list(self.predict_iter(...))收集见 paddleocr/_models/base.py#L56-L58而predict_iter()返回生成器generator可逐个获取结果适合大规模数据集或内存受限场景。Q5该模块可以微调吗A当前版本不支持微调训练仅支持推理集成。微调训练支持已在未来规划中。8. 进一步阅读推理引擎完整配置说明推理引擎与配置说明高性能推理配置高性能推理说明并行推理说明并行推理说明模块源码paddleocr/_models/text_image_unwarping.py通用预测器封装基类paddleocr/_models/base.py通用参数解析与引擎配置paddleocr/_common_args.py模块测试用例tests/models/test_text_image_unwarping.py其他模块使用教程参见 docs/version3.x/module_usage/ 目录其中包含文本检测、文本识别、文档方向分类、版面分析、表格结构识别等模块的同类教程可与文本图像矫正模块组合成完整的文档解析流水线。【免费下载链接】PaddleOCRTurn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between images/PDFs and LLMs. Supports 100 languages.项目地址: https://gitcode.com/GitHub_Trending/pa/PaddleOCR创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/12 9:15:16

SmartMediaKit与YOLO协同:构建低延迟实时视觉分析系统

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/12 9:15:16

COMSOL仿真纳米结构Mie散射:原理与应用

1. 项目概述:纳米结构Mie散射的仿真价值 在纳米光子学研究中,Mie散射理论是分析亚波长颗粒光相互作用的基石。当光波遇到纳米球或纳米柱时,会产生复杂的散射场分布,这种物理现象直接影响着超表面设计、生物传感和光伏器件等领域的…

2026/9/12 9:15:16

MySQL与Tableau结合实现电商用户行为分析

1. 项目概述:当MySQL遇见Tableau去年双十一期间,我们电商团队面临一个棘手问题:虽然平台日活用户突破百万,但转化率始终徘徊在2.3%左右。技术总监扔给我一组原始订单数据说:"给你三天,找出用户流失的关…

2026/9/12 12:05:33

ML-KWS-for-MCU源码拆解:嵌入式语音关键词识别全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/12 12:05:33

厦门壁挂炉上门维修 本地靠谱师傅 不点火、故障码、漏水维修

厦门壁挂炉上门维修 本地靠谱师傅 不点火、故障码、漏水维修家里壁挂炉突发故障?不点火、无热水、采暖不热、屏幕跳故障码、漏水异响、水压异常,不用盲目找维修。壁挂炉集成燃气、水路、电控、采暖多套系统,维修需精准检测故障根源&#xff0…

2026/9/12 12:05:33

TensorRT-LLM 推理加速指南:内核优化与 trtllm-serve 部署

TensorRT-LLM 推理加速指南:内核优化与 trtllm-serve 部署 【免费下载链接】TensorRT-LLM TensorRT LLM provides users with an easy-to-use Python API to define Large Language Models (LLMs) and supports state-of-the-art optimizations to perform inferenc…

2026/9/12 12:05:33

论文降重工具评测与学术规范实践指南

1. 论文降重工具的核心需求解析对于硕博研究生而言,论文降重不仅是技术问题,更是学术规范问题。查重率过高往往源于三个典型场景:文献综述部分的表述雷同、研究方法章节的公式化描述,以及讨论部分与已有研究的相似性。真正有效的降…

2026/9/12 12:00:33

CMSIS-NN源码尽调:Cortex-M4上部署关键词唤醒模型的实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/12 2:05:33

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/12 3:55:12

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/12 10:09:03

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/12 0:04:17

MATLAB仿生优化框架:长鼻浣熊算法多策略融合实现

简介:本资源是一份面向智能优化算法研究者与MATLAB初学者的仿生智能算法实践代码包,聚焦于长鼻浣熊优化算法(COA)的多策略改进与性能验证。针对传统COA易陷局部最优、收敛精度不足等问题,作者融合Circle映射初始化提升…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 JavaWeb 的校园一卡通管理系统的设计与实现 基于 JavaWeb 的校园卡业务管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 Java 的图书馆借阅管理平台的搭建与实现 基于 Java 的图书馆综合管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/12 6:29:36

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/10 15:19:50

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/12 6:37:43

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码