
人工智能计算机视觉OCR深度学习大模型RAG【免费下载链接】PaddleOCR飞桨多语言OCR工具包实用超轻量OCR系统支持80种语言识别提供数据标注与合成工具支持服务器、移动端、嵌入式及IoT设备端的训练与部署 Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80 languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)项目地址https://gitcode.com/paddlepaddle/PaddleOCR点击查看免费下载导读本文以 PaddleOCR 开源仓库中 docs/version3.x/module_usage/text_recognition.md 为核心系统讲解文本识别Text Recognition模块的完整使用链路。文本识别是 OCR 系统中的核心环节负责将文本检测模块输出的文本行区域Bounding Boxes转换为可编辑、可搜索的电子文本其结果准确性直接影响后续信息提取与数据挖掘的质量。读完本文你将掌握如何从 20 个全量识别模型中选择合适模型、如何用一行命令或 Python API 完成推理、如何理解TextRecognition类的全部参数、如何基于现有模型完成数据准备、训练、评估与导出以及如何在不同推理引擎paddle_static/paddle_dynamic/transformers/onnxruntime之间切换。一、模块定位文本识别在 OCR 流水线中的角色文本识别模块是 OCR光学字符识别系统的核心组成部分它接收文本检测模块输出的文本区域边界框Bounding Boxes通过图像预处理与深度学习算法将图像中的文字转化为电子文本。该模块的性能直接决定整个 OCR 系统的准确性与效率同时为后续的信息抽取、数据挖掘等上层应用提供结构化输入。在 PaddleOCR 中文本识别以独立模块形式提供可通过统一的TextRecognition类与 CLI 子命令调用。从源码结构看TextRecognition类位于 paddleocr/_models/text_recognition.py继承自 paddleocr/_models/base.py 中的PaddleXPredictorWrapper基类该基类内部通过 PaddleX 的create_predictor完成预测器创建并封装了predict()/predict_iter()两种推理入口close()用于释放资源。二、支持模型列表与选型建议2.1 重点支持的核心模型下表为文本识别模块重点支持的 4 个核心模型识别指标由 PaddleOCR 官方评估集测得模型识别 Avg Accuracy(%)GPU 推理耗时ms[常规/高性能]CPU 推理耗时ms[常规/高性能]模型存储大小MB介绍PP-OCRv6_medium_rec83.2*- / -- / -73.3基于 PPLCNetV4 LightSVTR CTC/NRTR 多头解码器单模型支持 50 种语言tiny 档 49 种medium 档相比 PP-OCRv5_server 综合识别精度提升 5.1%PP-OCRv6_small_rec81.3*- / -- / -20.4同上为 PP-OCRv6 的 small 档PP-OCRv6_tiny_rec73.5*- / -- / -4.4同上为 PP-OCRv6 的 tiny 档模型体积仅 4.4MBPP-OCRv5_server_rec86.388.46 / 2.3631.21 / 31.2181以单一模型支持简中、繁中、英文、日文以及手写、竖版、拼音、生僻字等复杂场景PP-OCRv5_mobile_rec81.295.43 / 1.4621.20 / 5.3216新一代移动端识别模型兼顾精度与速度PP-OCRv4_server_rec_doc86.588.69 / 2.7837.93 / 37.93182文档增强版支持字符 1.5 万含部分繁体、日文、特殊字符PP-OCRv4_mobile_rec78.745.26 / 1.1217.48 / 3.6110.5轻量级模型可部署端侧设备PP-OCRv4_server_rec85.198.75 / 2.4936.93 / 36.93173服务器端模型推理精度高en_PP-OCRv4_mobile_rec70.394.81 / 1.2317.20 / 4.187.5超轻量英文识别模型注PP-OCRv6 指标基于内部多场景评估集测得PP-OCRv5/v4 指标基于通用评估集测得两者评估集不同指标不可直接对比。表中推理耗时仅包含模型推理耗时不包含前后处理耗时常规模式耗时对应本地paddle_static推理引擎。2.2 全量模型列表上述 4 个核心模型之外该模块共支持20 个全量模型按场景可划分为以下几类PP-OCRv5 多场景模型PP-OCRv5_server_rec中文 86.38 / 英文 64.70 / 繁体 93.29 / 日文 60.35、PP-OCRv5_mobile_rec中文 81.29 / 英文 66.00 / 繁体 83.55 / 日文 54.65。中文识别模型PP-OCRv3_mobile_rec72.96、ch_SVTRv2_rec68.81服务端模型PaddleOCR 算法挑战赛一等奖方案、ch_RepSVTR_rec65.07基于 SVTRv2 的移动端模型。英文识别模型en_PP-OCRv5_mobile_rec85.25优化空格漏识别与手写英文、en_PP-OCRv3_mobile_rec70.69。多语言识别模型PP-OCRv5 系列korean_PP-OCRv5_mobile_rec88.0、latin_PP-OCRv5_mobile_rec84.7、eslav_PP-OCRv5_mobile_rec81.6、th_PP-OCRv5_mobile_rec82.68、el_PP-OCRv5_mobile_rec89.28、arabic_PP-OCRv5_mobile_rec81.27、cyrillic_PP-OCRv5_mobile_rec80.27、devanagari_PP-OCRv5_mobile_rec84.96、te_PP-OCRv5_mobile_rec87.65、ta_PP-OCRv5_mobile_rec94.2。多语言识别模型PP-OCRv3 系列korean_PP-OCRv3_mobile_rec60.21、japan_PP-OCRv3_mobile_rec45.69、chinese_cht_PP-OCRv3_mobile_rec82.06、te_PP-OCRv3_mobile_rec95.88、ka_PP-OCRv3_mobile_rec96.96、ta_PP-OCRv3_mobile_rec76.83、latin_PP-OCRv3_mobile_rec76.93、arabic_PP-OCRv3_mobile_rec73.55、cyrillic_PP-OCRv3_mobile_rec94.28、devanagari_PP-OCRv3_mobile_rec96.44。测试环境说明性能数据基于 NVIDIA Tesla T4 GPU 与 Intel Xeon Gold 6271C CPUUbuntu 20.04 / CUDA 11.8 / cuDNN 8.9 / TensorRT 8.6.1.6paddlepaddle-gpu 3.0.0 / paddleocr 3.0.3测得中文模型使用 PaddleOCR 自建中文数据集覆盖街景、网图、文档、手写共 1.1 万张图片英文与多语言模型分别使用自建数据集。推理模式说明模式GPU 配置CPU 配置加速技术组合常规模式FP32 精度 / 无 TRT 加速FP32 精度 / 8 线程PaddleInference高性能模式选择先验精度类型和加速策略的最优组合FP32 精度 / 8 线程选择先验最优后端Paddle/OpenVINO/TRT 等选型建议追求精度且硬件充裕优先PP-OCRv5_server_rec或文档场景PP-OCRv4_server_rec_doc多语言与通用场景PP-OCRv6系列单模型即可覆盖 50 种语言medium/small/tiny 三档按算力取舍端侧 / 移动端PP-OCRv5_mobile_rec、PP-OCRv6_tiny_rec4.4MB或en_PP-OCRv4_mobile_rec7.5MB单一语种从多语言模型中按语种挑选例如韩文korean_PP-OCRv5_mobile_rec、泰文th_PP-OCRv5_mobile_rec等。三、快速开始3.1 环境准备在快速开始前请先安装 PaddleOCR 的 wheel 包详细参考 安装教程。使用默认paddle_static推理引擎时还需按照 飞桨框架安装 完成 PaddlePaddle 安装。3.2 命令行一行体验paddleocr text_recognition -i https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_rec_001.png使用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 环境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 不便可通过环境变量修改模型源为 BOSPADDLE_PDX_MODEL_SOURCEBOS。从源码看CLI 子命令text_recognition由 paddleocr/_models/text_recognition.py 中的TextRecognitionSubcommandExecutor注册除通用推理参数--device、--engine、--use_tensorrt、--precision、--enable_mkldnn、--cpu_threads等定义见 paddleocr/_common_args.py外还支持--model_name、--model_dir与--input_shape C H W见 paddleocr/_models/base.py。3.3 Python API 集成到项目下载示例图片到本地后from paddleocr import TextRecognition model TextRecognition() output model.predict(inputgeneral_ocr_rec_001.png, batch_size1) for res in output: res.print() res.save_to_img(save_path./output/) res.save_to_json(save_path./output/res.json)切换到其他引擎时只需在实例化时传入engine参数# transformers 引擎 model TextRecognition(enginetransformers) # onnxruntime 引擎 model TextRecognition(engineonnxruntime)运行结果示例{res: {input_path: general_ocr_rec_001.png, page_index: None, rec_text: 绿洲仕格维花园公寓, rec_score: 0.9823867082595825}}结果字段含义字段含义input_path输入待预测文本行图像的路径page_index若输入为 PDF 文件表示当前是第几页否则为Nonerec_text文本行图像的预测文本rec_score文本行图像的预测置信度从源码结构看TextRecognition()默认model_name为PP-OCRv6_medium_rec见 paddleocr/_models/text_recognition.pypredict()在基类中通过list(self.predict_iter(...))实现见 paddleocr/_models/base.py。3.4 TextRecognition 实例化参数详解参数参数说明参数类型默认值model_name含义模型名称。说明若设置为None则使用PP-OCRv6_medium_recstr\|NoneNonemodel_dir含义模型存储路径指向本地推理模型目录str\|NoneNonedevice含义推理设备。例如cpu、gpu、npu、gpu:0、gpu:0,1。指定多个设备将并行推理。默认优先使用 GPU 0不可用则使用 CPUstr\|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.xx6建议安装 8.6.1.6boolFalseprecision含义使用 TensorRT 子图引擎时的计算精度。可选项fp32、fp16strfp32enable_mkldnn含义是否启用 MKL-DNN 加速推理。说明若 MKL-DNN 不可用或模型不支持设置该标志也不会生效boolTruemkldnn_cache_capacity含义MKL-DNN 缓存容量int10cpu_threads含义CPU 推理线程数int10input_shape含义模型输入图像尺寸格式为(C, H, W)tuple\|NoneNone引擎参数底层机制上述参数在 paddleocr/_common_args.py 的parse_common_args()中被校验与归一化引擎取值必须在[paddle, paddle_static, paddle_dynamic, transformers, onnxruntime]内precision必须在支持的精度列表内随后prepare_common_init_args()paddleocr/_common_args.py会根据设备类型与引擎自动构建paddle_static的engine_config——GPU 上use_tensorrtTrue时映射为trt_fp32/trt_fp16运行模式CPU 上启用 MKL-DNN 时设置缓存容量并传递cpu_threads。3.5 predict / predict_iter 参数与结果处理predict()返回结果列表predict_iter()返回generator可逐步处理结果、节省内存适合大型数据集。两者参数一致参数参数说明参数类型默认值input待预测数据必填。支持Python Var如numpy.ndarray图像str图像/PDF 本地路径、网络 URL、本地目录路径目录不支持包含 PDF 预测PDF 需指定到具体文件list元素为上述类型如[ndarray, ndarray]、[/root/data/img1.jpg, /root/data/img2.jpg]、[/root/data1, /root/data2]Python Var\|str\|list无batch_size批大小可设置为任意正整数int1结果对象支持的方法方法方法说明参数参数类型参数说明默认值print()打印结果到终端format_jsonbool是否对输出使用 JSON 缩进格式化Trueindentint缩进级别仅format_jsonTrue时有效4ensure_asciibool是否将非 ASCII 字符转义为 Unicode仅format_jsonTrue时有效Falsesave_to_json()保存结果为 JSON 文件save_pathstr保存路径为目录时按输入文件类型命名无indentint同上4ensure_asciibool同上Falsesave_to_img()保存结果为图像文件save_pathstr保存路径为目录时按输入文件类型命名无结果对象还支持属性访问json获取 JSON 格式预测结果、img获取 dict 格式的可视化图像。测试用例 tests/models/test_text_recognition.py 印证了预测结果包含input_path、page_index、input_img、rec_text、rec_score、vis_font等键。四、二次开发训练、评估与导出若现有模型在业务场景上效果不理想可按以下流程进行二次开发。此处以训练PP-OCRv5_server_rec为例其他模型替换对应配置文件即可。4.1 数据集与预训练模型准备参考文本识别 Demo 数据的格式准备数据集# 下载示例数据集 wget https://paddle-model-ecology.bj.bcebos.com/paddlex/data/ocr_rec_dataset_examples.tar tar -xf ocr_rec_dataset_examples.tar # 下载 PP-OCRv5_server_rec 预训练模型 wget https://paddle-model-ecology.bj.bcebos.com/paddlex/official_pretrained_model/PP-OCRv5_server_rec_pretrained.pdparams训练前请确保已按照安装文档安装 PaddleOCR 所需依赖。4.2 模型训练PaddleOCR 对代码进行了模块化训练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.pdparams配置文件关键字段解读以 configs/rec/PP-OCRv5/PP-OCRv5_server_rec.yml 为例Global段epoch_num: 75训练轮数、save_model_dir: ./output/PP-OCRv5_server_rec模型保存目录、character_dict_path: ./ppocr/utils/dict/ppocrv5_dict.txt字符字典、max_text_length: 25最大文本长度、use_space_char: true是否启用空格字符、d2s_train_image_shape: [3, 48, 320]训练图像形状Architecture段algorithm: SVTR_HGNetBackbone 为PPHGNetV2_B4text_rec: TrueHead 为MultiHead同时包含CTCHeadNeck 为svtr与NRTRHead两个解码头——这正是CTC/NRTR 多头解码器架构的配置级体现Loss段MultiLoss包含CTCLoss与NRTRLoss两个损失项Train段MultiScaleDataSetMultiScaleSampler多尺度训练尺度为[[320, 32], [320, 48], [320, 64]]批大小 128Eval段SimpleDataSet图像统一 resize 为[3, 48, 320]。作为对比PP-OCRv6 系列如 configs/rec/PP-OCRv6/PP-OCRv6_medium_rec.yml的 Backbone 为PPLCNetV4model_size: mediumHead 的 CTC 分支 Neck 为lightsvtr训练阶段额外使用了RecConAug增广prob: 0.5训练尺度同样为[[320, 32], [320, 48], [320, 64]]。4.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_modeloutput/xxx/xxx.pdparams4.4 模型导出python3 tools/export_model.py -c configs/rec/PP-OCRv5/PP-OCRv5_server_rec.yml -o \ Global.pretrained_modeloutput/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至此二次开发完成该静态图模型可通过model_dir参数直接集成到 PaddleOCR 的 API 中TextRecognition(model_dir./PP-OCRv5_server_rec_infer/)。五、推理引擎推理引擎的详细说明、取值、兼容性规则与示例请参见 推理引擎与配置说明。当前支持paddle_static、paddle_dynamic、transformers、onnxruntime四种引擎加上统一的paddle别名。5.1 各引擎速度数据以下为 PP-OCRv5 / PP-OCRv6 系列模型在不同引擎下的耗时对比端到端含前后处理单位为 msmodelenginePreprocessing (ms)Inference (ms)PostProcessing (ms)End-to-End (ms)PP-OCRv5_mobile_recpaddle_static1.946.691.009.76paddle_dynamic1.9735.381.1138.60transformers3.3117.700.5021.68onnxruntime1.822.050.914.91PP-OCRv5_server_recpaddle_static1.9811.371.2114.69paddle_dynamic1.9823.891.3227.34transformers3.9911.690.5116.36onnxruntime1.803.150.905.98PP-OCRv6_medium_recpaddle_static1.745.380.848.08paddle_dynamic1.7613.380.8516.10transformers2.587.040.4110.19onnxruntime1.742.280.844.97PP-OCRv6_small_recpaddle_static1.744.730.827.41paddle_dynamic1.7612.430.8715.18transformers2.556.700.419.82onnxruntime1.731.790.834.46PP-OCRv6_tiny_recpaddle_static1.762.770.405.04paddle_dynamic1.756.960.369.19transformers2.453.120.406.12onnxruntime1.730.920.363.12测试环境说明测试数据为官方示例图片硬件为 NVIDIA A100 40G GPU 与 Intel Xeon Gold 6248 CPU软件环境为 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。从数据可以看出onnxruntime在纯推理环节通常最快但结合前后处理后的端到端差距收窄paddle_static在大多数模型上综合表现均衡paddle_dynamic推理耗时相对较高主要面向动态图调试等场景。5.2 权重转换使用推理引擎时系统会自动下载官方预训练模型。若需将自训练模型配合paddle_dynamic或transformers引擎使用需将pdparams格式模型通过 PaddleX 转换为safetensors格式若需配合onnxruntime引擎则需通过 PaddleX 获取 ONNX 模型。转换完成后即可无缝集成到 PaddleOCR 的 API 中进行推理。训练后的模型若想使用paddle_dynamic或transformers引擎请参考上述权重转换部分。六、FAQ 与排错要点以下汇总文本识别模块使用中的常见注意事项引擎依赖缺失使用transformers/onnxruntime引擎前务必先完成对应环境配置若依赖缺失paddleocr/_models/base.py 中会捕获DependencyError并提示参考安装文档补齐依赖未知参数校验TextRecognition不支持传入不在白名单内的参数parse_common_args()会抛出ValueError: Unknown argument见 paddleocr/_common_args.py引擎取值或精度取值非法时同样会抛出带支持列表提示的异常PDF 目录预测限制input为本地目录时不支持包含 PDF 文件的预测PDF 需指定到具体文件路径模型下载源默认从 HuggingFace 获取官方模型网络受限时可设置环境变量PADDLE_PDX_MODEL_SOURCEBOS切换模型源TensorRT 版本匹配CUDA 11.8 版飞桨需搭配 TensorRT 8.xx6建议 8.6.1.6模型不支持 TRT 加速时该开关不生效二次开发链路训练 → 评估 → 导出tools/export_model.py得到inference.json/inference.pdiparams/inference.yml后用TextRecognition(model_dir...)即可完成模型替换无需改动业务代码。延伸阅读文本识别模块官方文档安装教程飞桨框架安装推理引擎与配置说明PP-OCRv5_server_rec 训练配置PP-OCRv6_medium_rec 训练配置TextRecognition 源码实现预测器基类与参数封装通用推理参数解析文本识别模块测试用例赞分享人工智能计算机视觉OCR深度学习大模型RAG【免费下载链接】PaddleOCR飞桨多语言OCR工具包实用超轻量OCR系统支持80种语言识别提供数据标注与合成工具支持服务器、移动端、嵌入式及IoT设备端的训练与部署 Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80 languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)项目地址https://gitcode.com/paddlepaddle/PaddleOCR点击查看免费下载相关推荐PaddleOCR 表格结构识别模块使用教程模型选型、推理引擎与二次开发全指南PaddleOCR 表格结构识别模块使用教程模型选型、推理引擎与二次开发全指南 导读 表格结构识别是将不可编辑的表格图片转换为可编辑 HTML 表格形式的关键人工智能计算机视觉OCR深度学习大模型RAGPaddleOCR 文本识别模块TextRecognition完整指南模型选型、快速推理与二次开发PaddleOCR 文本识别模块TextRecognition完整指南模型选型、快速推理与二次开发 文本识别Text Recognition是 OCR人工智能计算机视觉深度学习PaddleOCR 文本检测模块使用教程模型选型、Python API 调用与二次开发全指南PaddleOCR 文本检测模块使用教程模型选型、Python API 调用与二次开发全指南 本篇技术指南围绕 PaddleOCR 3.x 的文本检测模块展开人工智能计算机视觉OCR深度学习大模型RAG创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考