PaddleOCR 中的 EAST 场景文本检测算法:原理、配置、训练与推理部署全指南

发布时间:2026/9/10 21:39:28

PaddleOCR 中的 EAST 场景文本检测算法:原理、配置、训练与推理部署全指南 PaddleOCR 中的 EAST 场景文本检测算法原理、配置、训练与推理部署全指南【免费下载链接】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导读EASTEfficient and Accurate Scene Text Detector是 2017 年 CVPR 提出的经典端到端场景文本检测算法它以单阶段、直接回归文本四边形的设计在速度和精度之间取得了良好平衡。本指南以 PaddleOCR 仓库中 EAST 算法文档 为核心骨架结合仓库内的配置文件与源码实现完整讲解 EAST 在 PaddleOCR 中的模型结构、训练配置、评估流程、Python 推理部署以及已知的部署限制。读完本文你将掌握如何用 PaddleOCR 的模块化配置训练 EAST 检测模型、如何将训练权重导出为推理模型、如何用predict_det.py完成单图检测并解读后处理参数以及 EAST 当前不支持 C/Serving 部署的边界条件。1. EAST 算法简介与论文出处EAST 由 Xinyu Zhou、Cong Yao 等人在 2017 年 CVPR 会议上提出论文标题为EAST: An Efficient and Accurate Scene Text DetectorarXiv:1704.03155。其核心思想是抛弃传统检测方法中候选框生成 分类 后处理的多阶段流水线改为直接预测文本实例的 score map得分图与 geometry map几何图score map 用于判断每个像素是否属于文本区域geometry map本仓库实现为 8 通道的四边形顶点偏移 1 通道短边归一化信息用于直接回归文本四边形的四个顶点坐标检测结果通过阈值过滤与 Locality-Aware NMS 合并相邻的四边形候选框。这种单阶段回归设计避免了滑动窗口和候选区域生成带来的计算开销使 EAST 在保持较高精度的同时具备明显的速度优势非常适合对实时性有要求的场景文本检测任务。1.1 PaddleOCR 中的复现效果在 ICDAR2015 文本检测公开数据集上PaddleOCR 对 EAST 的复现结果如下表所示数据来自 算法文档模型骨干网络配置文件PrecisionRecallHmean训练模型下载EASTResNet50_vddet_r50_vd_east.yml88.71%81.36%84.88%det_r50_vd_east_v2.0_train.tarEASTMobileNetV3det_mv3_east.yml78.20%79.10%78.65%det_mv3_east_v2.0_train.tar从表中可以看出PaddleOCR 为 EAST 提供了两套骨干网络配置精度优先的 ResNet50_vd 版本Hmean 84.88%与轻量优先的 MobileNetV3 版本Hmean 78.65%便于在不同硬件与实时性要求之间权衡。两个配置均存放于 configs/det 目录下。2. 环境准备在开始训练或推理之前需要先完成 PaddleOCR 运行环境的搭建与项目代码的克隆运行环境准备参考 《运行环境准备》包括安装 Python、PaddlePaddle 框架及 PaddleOCR 依赖项目代码克隆参考 《项目克隆》将仓库克隆到本地后进入项目根目录执行后续命令。需要特别说明的是EAST 的训练与推理属于 PaddleOCR 2.x 时代的经典流程其训练脚本为tools/train.py、推理脚本为tools/infer/predict_det.py因此建议按照仓库 2.x 文档说明配置对应版本的 PaddlePaddle 环境。3. EAST 模型结构从配置到源码的逐层拆解PaddleOCR 对检测模型代码进行了模块化网络被拆分为 transforms → backbones → necks → heads 四个部分目录见 ppocr/modeling。以 det_r50_vd_east.yml 为例其 Architecture 配置如下Architecture: model_type: det algorithm: EAST Transform: Backbone: name: ResNet_vd layers: 50 Neck: name: EASTFPN model_name: large Head: name: EASTHead model_name: large3.1 Backbone特征提取ResNet50_vdlarge 版name: ResNet_vd、layers: 50MobileNetV3轻量版在 det_mv3_east.yml 中为name: MobileNetV3、scale: 0.5、model_name: large。骨干网络负责从输入图像中提取多尺度特征其实现位于 ppocr/modeling/backbones。3.2 NeckEASTFPN 特征金字塔融合EASTFPN的实现位于 ppocr/modeling/necks/east_fpn.py。它采用类似 UNet 的解码结构将骨干网络输出的 4 个尺度特征图f逆序排列f x[::-1]从最深层特征开始通过DeConvBNLayer转置卷积 BN逐级上采样并与对应尺度的浅层特征paddle.concat拼接拼接后经h1_conv、h2_conv、h3_conv三个 ConvBN 层融合最后经g3_conv输出。model_name参数决定输出通道数large为 128 通道small为 64 通道源码self.out_channels分支。这也是两个配置文件在 Neck 上选用large/small的依据。3.3 HeadEASTHead 双分支输出EASTHead的实现位于 ppocr/modeling/heads/det_east_head.py其前向过程输出两个分支f_score self.score_conv(f_det) f_score F.sigmoid(f_score) # 得分图单通道 f_geo self.geo_conv(f_det) f_geo (F.sigmoid(f_geo) - 0.5) * 2 * 800 # 几何图8 通道f_score经过 sigmoid 归一化的得分图表示每个像素属于文本中心的概率f_geo8 通道几何图表示像素到四边形四个顶点每个顶点 dx、dy 两个分量的偏移输出前通过(sigmoid - 0.5) * 2 * 800将值域映射到 [-800, 800]与原论文的像素距离回归保持一致。model_name同样影响 Head 内部通道数large对应[128, 64, 1, 8]small对应[64, 32, 1, 8]。3.4 训练标签生成EASTProcessTrainEAST 的训练标签score_map、geo_map、training_mask由数据增强算子EASTProcessTrain在线生成实现位于 ppocr/data/imaug/east_process.py。其关键行为包括按image_shape将图像等比缩放并 pad 到统一尺寸以 0.5 概率对图像做 90°/180°/270° 随机旋转rotate_im_poly并对多边形坐标做同步旋转变换按random_scale [0.5, 1, 2.0, 3.0]随机缩放按background_ratio概率裁剪纯背景区域否则裁剪含文本的前景区域crop_area保证裁剪区域不横穿文本通过shrink_poly以 0.3 的比例收缩多边形生成 score map通过generate_quad计算 9 通道 geo map8 通道顶点偏移 1 通道短边归一化并对过小文本小于min_text_size或ignore_tags区域写入 training_mask 置 0。3.5 损失函数EASTLossEASTLoss的实现位于 ppocr/losses/det_east_loss.py由两部分组成dice_loss self.dice_loss(f_score, l_score, l_mask) # 得分图 Dice 损失 smooth_l1_loss paddle.mean(smooth_l1 * l_score) # 几何图 Smooth-L1 损失 total_loss dice_loss * 0.01 smooth_l1_loss # 组合损失得分图分支使用 Dice 损失实现见 ppocr/losses/det_basic_loss.py并按训练 mask 忽略难例区域几何图分支使用加权 Smooth-L1 损失8 个通道逐一计算权重与 score map、短边归一化通道相关最终dice_loss乘以 0.01 后再与smooth_l1_loss相加得到总损失。4. 训练、评估与预测上文表格中的 EAST 训练模型使用ICDAR2015 文本检测公开数据集训练得到。数据集下载与标注格式说明可参考 ocr_datasets其中ICDAR2015 训练集包含 1000 张图像测试集 500 张图像标注格式为图片路径 \t json.dumps 编码的标注列表标注中的points为文本框四点的顺时针坐标transcription为###时表示该框无效、训练时跳过。数据下载完成后完整训练流程参考 文本检测训练教程。由于 PaddleOCR 对代码进行了模块化训练不同的检测模型只需更换配置文件即可EAST 无需改动任何网络代码。4.1 配置文件详解以 det_r50_vd_east.yml 为例各关键参数含义如下Global全局参数默认值说明use_gputrue是否使用 GPUCPU 环境需改为falseepoch_num10000训练轮数save_model_dir./output/east_r50_vd/模型保存目录save_epoch_step1000每 N 轮保存一次模型eval_batch_step[4000, 5000]第 4000 次迭代后每 5000 次迭代执行一次评估cal_metric_during_trainFalse训练过程中是否计算指标pretrained_model./pretrain_models/ResNet50_vd_pretrained骨干网络预训练权重路径save_inference_dir空导出推理模型的保存目录由导出命令指定Optimizer优化器使用Adambeta10.9、beta20.999学习率0.001L2 正则系数0。PostProcess后处理EASTPostProcess三个关键阈值见下表与 tools/infer/utility.py 中的命令行参数默认值一致参数默认值命令行参数作用score_thresh0.8--det_east_score_thresh得分图像素级阈值低于该值的像素不作为文本候选cover_thresh0.1--det_east_cover_thresh四边形内部平均得分阈值用于过滤低置信候选框nms_thresh0.2--det_east_nms_threshLocality-Aware NMS 的 IoU 阈值MetricDetMetric主指标为hmean即上表中的 F1 调和平均。Train 数据管线使用SimpleDataSet数据目录与标注文件指向./train_data/icdar2015/text_localization/transforms 依次为DecodeImageBGR、非 channel_first、DetLabelEncode解析标注、EASTProcessTrainimage_shape: [512, 512]、background_ratio: 0.125、min_crop_side_ratio: 0.1、min_text_size: 10以及KeepKeys保留image, score_map, geo_map, training_mask四个键。loader 中batch_size_per_cardResNet50_vd 版为 8MobileNetV3 版为 16。Eval 数据管线同样使用SimpleDataSet与DetLabelEncode测试 transforms 采用DetResizeForTestlimit_side_len: 2400、limit_type: max即长边不超过 2400、NormalizeImagescale 1/255mean/std 采用 ImageNet 统计值[0.485, 0.456, 0.406]/[0.229, 0.224, 0.225]order: hwc、ToCHWImage与KeepKeys。评估时batch_size_per_card必须为 1。4.2 启动训练下载好 ICDAR2015 数据并按格式整理为train_icdar2015_label.txt/test_icdar2015_label.txt后参考检测训练教程中的通用命令即可# 单卡训练CPU 环境需在配置中把 use_gpu 设为 false python3 tools/train.py -c configs/det/det_r50_vd_east.yml \ -o Global.pretrained_model./pretrain_models/ResNet50_vd_pretrained # 多卡训练 python3 -m paddle.distributed.launch --gpus 0,1,2,3 \ tools/train.py -c configs/det/det_r50_vd_east.yml \ -o Global.pretrained_model./pretrain_models/ResNet50_vd_pretrained若需继续训练可指定Global.checkpoints./your/trained/modelGlobal.checkpoints优先级高于Global.pretrained_model。4.3 评估评估通常通过tools/eval.py配合-c指定 EAST 配置完成详细步骤见 文本检测训练教程评估指标由DetMetric计算输出 precision、recall 与 hmean最终以 hmean 作为模型选择依据。5. 推理与部署5.1 导出推理模型首先将训练过程中保存的模型转换为 inference model。以基于 ResNet50_vd 骨干、在 ICDAR2015 英文数据集上训练的模型det_r50_vd_east_v2.0_train.tar为例执行python3 tools/export_model.py -c configs/det/det_r50_vd_east.yml \ -o Global.pretrained_model./det_r50_vd_east_v2.0_train/best_accuracy \ Global.save_inference_dir./inference/det_r50_east/导出后将得到./inference/det_r50_east/目录下的推理模型文件model/params 等供predict_det.py加载。5.2 Python 推理EAST 文本检测模型推理时必须显式设置--det_algorithmEAST否则预测脚本会默认按 DB 算法默认值见 tools/infer/utility.py加载后处理导致结果错误python3 tools/infer/predict_det.py \ --image_dir./doc/imgs_en/img_10.jpg \ --det_model_dir./inference/det_r50_east/ \ --det_algorithmEASTpredict_det.py的实现位于 tools/infer/predict_det.py其中与 EAST 相关的后处理参数传递逻辑postprocess_params的构建可参见其TextDetector.__init__方法L102-L106当det_algorithm EAST时构造EASTPostProcess并从命令行读取det_east_score_thresh、det_east_cover_thresh、det_east_nms_thresh三个参数。执行完成后可视化文本检测结果默认保存到./inference_results文件夹结果文件名的前缀为det_res即det_res_原图文件名。上文示例图的对应文件为 det_res_img_10_east.jpg。5.3 EAST 后处理原理从得分图到文本框EAST 的后处理由EASTPostProcess完成实现位于 ppocr/postprocess/east_postprocess.py核心流程为阈值过滤np.argwhere(score_map score_thresh)选出高于得分阈值的像素恢复四边形restore_rectangle_quad用原点坐标减去 8 通道几何偏移将像素点还原为候选四边形注意乘 4 以对应 1/4 分辨率输出NMS 合并优先使用lanmspip3 install lanms-nova可加速未安装时回退到nms_locality实现见 ppocr/postprocess/locality_aware_nms.py平均得分过滤用cv2.fillPoly构建每个候选框的 mask计算框内得分图均值作为新得分再以cover_thresh过滤低质量框该步与原论文不同是 PaddleOCR 的改进坐标还原与排序按测试时的缩放比例ratio_w/ratio_h将坐标映射回原图过滤短边小于 5 像素的退化框并对顶点做顺时针排序。6. 部署边界C、Serving 与更多方式根据 算法文档 的明确说明EAST 的部署支持情况如下C 推理暂不支持。原因是 EAST 的后处理尚未使用 C 编写目前仅有 Python 实现于 ppocr/postprocess/east_postprocess.pyC 侧无法复用该逻辑Serving 服务化部署暂未支持更多推理部署暂未支持。因此在生产环境中若需将 EAST 集成到服务端应基于 Python 推理链路predict_det.py或在其基础上封装 HTTP 服务进行若对部署形态有强约束如纯 C 环境、Paddle Serving建议评估仓库中支持 C 后处理的检测算法作为替代。7. FAQ 与引用算法文档的 FAQ 章节当前未填充具体问答关于 EAST 训练中常见问题如lanms未安装时的 NMS 回退提示、CPU 训练需关闭use_gpu等可结合上文参数表与源码注释排查。如你在研究或论文中引用 EAST 算法请使用以下 BibTeX源自 算法文档inproceedings{zhou2017east, title{East: an efficient and accurate scene text detector}, author{Zhou, Xinyu and Yao, Cong and Wen, He and Wang, Yuzhi and Zhou, Shuchang and He, Weiran and Liang, Jiajun}, booktitle{Proceedings of the IEEE conference on Computer Vision and Pattern Recognition}, pages{5551--5560}, year{2017} }8. 相关资源速查以下为本指南涉及的核心仓库路径便于继续深入阅读内容路径EAST 算法文档英文docs/version2.x/algorithm/text_detection/algorithm_det_east.en.mdEAST 算法文档中文docs/version2.x/algorithm/text_detection/algorithm_det_east.mdResNet50_vd 配置configs/det/det_r50_vd_east.ymlMobileNetV3 配置configs/det/det_mv3_east.ymlEASTFPN Neckppocr/modeling/necks/east_fpn.pyEASTHeadppocr/modeling/heads/det_east_head.pyEASTLossppocr/losses/det_east_loss.py训练标签生成ppocr/data/imaug/east_process.pyEAST 后处理ppocr/postprocess/east_postprocess.py检测推理脚本tools/infer/predict_det.py检测训练教程docs/version2.x/ppocr/model_train/detection.en.mdOCR 数据集说明docs/datasets/ocr_datasets.en.md【免费下载链接】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/10 21:39:28

Telethon媒体处理性能:优化处理速度

Telethon媒体处理性能:优化处理速度 你是否在使用Telethon处理媒体文件时遇到过速度慢的问题?是否想知道如何优化下载和上传性能?本文将从技术细节出发,为你提供实用的优化方案,让你的Telethon媒体处理效率提升300%。…

2026/9/10 22:34:35

支付宝支付开发中的PKCS#1私钥格式详解与实战

1. 支付宝支付开发中的私钥格式要求解析 第一次对接支付宝支付接口时,我踩过最大的坑就是私钥格式问题。当时调试了一整天,各种"签名错误"的提示让我差点崩溃,最后发现竟然是私钥格式不对。支付宝对私钥格式有着严格的要求——必须…

2026/9/10 22:34:35

Linux内核编译与云环境部署实战指南

1. Linux内核探秘:从源代码获取到云环境多用户部署作为一名Linux系统工程师,我经常需要从源码级别理解系统行为,并在生产环境中部署定制化内核。本文将分享从获取Linux内核源代码到在云环境中实现多用户部署的完整流程,包含我在实…

2026/9/10 22:34:35

Matlab实现LSTM时间序列预测的完整指南

1. 项目概述:LSTM时间序列预测的Matlab实现在工业预测、金融分析和环境监测等领域,时间序列预测一直是个经典难题。传统统计方法如ARIMA对非线性关系建模能力有限,而LSTM(长短期记忆网络)凭借其独特的门控机制&#xf…

2026/9/10 22:34:35

cpp-httplib上手指南:单头文件搞定C++ HTTP服务

cpp-httplib上手指南:单头文件搞定C HTTP服务 【免费下载链接】cpp-httplib A C header-only HTTP/HTTPS server and client library 项目地址: https://gitcode.com/GitHub_Trending/cp/cpp-httplib 给C项目加一个HTTP接口时,常见的两难是&#…

2026/9/10 16:39:38

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

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

2026/9/10 11:16:38

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

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

2026/9/9 16:31:09

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

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

2026/9/10 0:00:55

目录对比去重实战:用哈希算法精准清理重复文件

我电脑里现在还有一块换了三次机的“数据墓地”硬盘,里面存着2016年以前所有旧笔记本的完整备份。平时不觉得有什么,直到前阵子想把它整理归档,发现同一个安装包、同一批照片、同一份论文草稿,在几个不同的备份目录里反复出现。更…

2026/9/10 0:00:55

Leaflet离线地图完整Demo合集:内网部署与坐标纠偏实战

简介:这是一份面向Web GIS开发者的LeafLet离线地图示例合集,帮助开发者快速掌握离线地图从搭建到交互的完整流程。压缩包共723个文件,大小14.06MB,以319个js脚本、175个html页面和29个css样式文件为主体,配合png/svg图…

2026/9/10 0:00:55

MATLAB读取Rinex 3.02观测文件:多系统GNSS数据解析实战

简介:基于MATLAB开发的Rinex3.02版观测文件(o文件)读取代码包,面向卫星定位导航方向的学习者与研究人员,用于解决新版观测文件的数据解析、历元提取与时间转换问题。压缩包共4个文件,包含两个m脚本、一个19…

2026/9/10 12:32:02

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/10 15:49:53

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

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

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

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

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