ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

PaddleOCR 算法与模型全景解析:两阶段、端到端、表格与关键信息抽取算法体系

PaddleOCR 算法与模型全景解析:两阶段、端到端、表格与关键信息抽取算法体系 PaddleOCR 算法与模型全景解析两阶段、端到端、表格与关键信息抽取算法体系【免费下载链接】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 仓库中已支持的 OCR 前沿算法与模型体系涵盖文本检测、文本识别、文本超分辨率、公式识别、端到端 OCR、表格识别与关键信息抽取共七大类算法并汇总各算法在英文公开数据集上的精度指标、配置文件与模型索引。读完本文你将掌握 PaddleOCR 算法矩阵的全貌能够根据业务场景在检测/识别/端到端/表格/KIE 等算法之间做出正确的模型选型并能循着模块化架构在 PaddleOCR 中快速接入新算法。本文的主体内容源自仓库文档 docs/version2.x/algorithm/overview.md并补充了源码、配置文件与教程链接作为深化佐证。1. 算法分类总览PaddleOCR 将已支持的算法划分为两大技术路线两阶段算法Two-stage先由文本检测算法从图像中定位文本行再由文本识别算法对裁剪出的文本行进行内容识别。两阶段算法内部又细分为文本检测、文本识别、文本超分辨率、公式识别四个子类。端到端算法End-to-end在单个模型中同时完成文本检测与识别共享 CNN 特征并联合训练模型更小、推理更快。在两阶段路线之外PaddleOCR 还提供了面向结构化文档理解的表格识别算法与关键信息抽取KIE算法共同构成完整的文档智能处理链路。PaddleOCR 持续新增支持 OCR 领域前沿算法与模型并面向开发者开放了算法共建流程新增算法可参考 使用 PaddleOCR 架构添加新算法 教程。关于更多包括中文在内的其他数据集上的自研模型请参考 PP-OCR 系列模型列表。2. 两阶段算法文本检测2.1 已支持的检测算法PaddleOCR 已支持的文本检测算法点击链接获取各算法的使用教程DB 与 DBEASTSASTPSENetFCENetDRRGCT这 7 个算法覆盖了检测领域的典型技术流派DB/DB 属于基于可微二值化的实时检测方法EAST/SAST 面向多方向文本PSENet 与 FCENet 针对弯曲文本的渐进式扩展与傅里叶轮廓建模DRRG 与 CT 面向任意形状文本的图推理与连接文本提议。2.2 ICDAR2015 数据集指标在 ICDAR2015 文本检测公开数据集上算法复现效果如下precision/recall/Hmean单位均为 %模型骨干网络precisionrecallHmeanEASTResNet50_vd88.7181.3684.88EASTMobileNetV378.2079.1078.65DBResNet50_vd86.4178.7282.38DBMobileNetV377.2973.0875.12SASTResNet50_vd91.3983.7787.42PSEResNet50_vd85.8179.5382.55PSEMobileNetV382.2070.4875.89DBResNet5090.8982.6686.58在 Total-text 文本检测公开数据集上算法效果如下模型骨干网络precisionrecallHmeanSASTResNet50_vd89.6378.4483.66CTResNet18_vd88.6881.7085.05在 CTW1500 文本检测公开数据集上算法效果如下模型骨干网络precisionrecallHmeanFCEResNet50_dcn88.3982.1885.27DRRGResNet50_vd89.9280.9185.18说明SAST 模型训练额外加入了 ICDAR2013、ICDAR2017、COCO-Text、ArT 等公开数据集进行调优因此其在多方向文本上的 Hmean 指标显著领先于同骨干网络的 DB/EAST。各模型训练权重与推理模型的下载地址可在对应算法教程页如 DB 与 DB中获取PaddleOCR 用到的经过整理格式的英文公开数据集也可在对应教程中查询下载途径。2.3 检测模型配置与模块化组网从指标表可以看出同一算法搭配不同骨干网络如 ResNet50_vd 与 MobileNetV3会在精度与模型体积之间形成不同取舍。PaddleOCR 对代码进行了模块化训练不同检测模型只需更换配置文件。以 DB 算法为例其训练配置位于 configs/det/det_r50_vd_db.yml核心配置段如下Architecture: model_type: det algorithm: DB Transform: # 检测模型通常不使用 Transform Backbone: name: ResNet_vd layers: 50 Neck: name: DBFPN out_channels: 256 Head: name: DBHead k: 50 Loss: name: DBLoss balance_loss: true main_loss_type: DiceLoss alpha: 5 beta: 10 ohem_ratio: 3 PostProcess: name: DBPostProcess thresh: 0.3 # 二值化阈值 box_thresh: 0.7 # 检测框过滤阈值 max_candidates: 1000 unclip_ratio: 1.5 # 文本框扩张比例这份配置体现了 PaddleOCR 的四段式模块化组网设计网络按照 transforms → backbones → necks → heads 的顺序依次通过四个部分。这一结构在 ppocr/modeling/architectures/base_model.py 的BaseModel类中落地实现它依次调用build_transform、build_backbone、build_neck、build_head完成组网并在forward中按同一顺序前向传播每一段都可选置空即跳过从而让 CRNN、DB、TableMaster 等完全不同的算法共用同一套装配逻辑。数据侧同样模块化训练时经过DecodeImage图像解码、DetLabelEncode检测标签编码、IaaAugment仿射/翻转/缩放增强、EastRandomCropData随机裁剪、MakeBorderMap与MakeShrinkMapDB 特有的阈值图与收缩图 label 制作、NormalizeImage与ToCHWImage归一化与通道变换等模块最终由KeepKeys指定 dataloader 返回的字段顺序。这些模块的实现在 ppocr/data/imaug 目录下并通过 ppocr/data/imaug/init.py 统一导出。3. 两阶段算法文本识别3.1 已支持的识别算法PaddleOCR 已支持的文本识别算法点击链接获取使用教程CRNNRosettaSTAR-NetRARESRNNRTRSARSEEDSVTRViTSTRABINetVisionLANSPINRobustScannerRFLParseQCPPDSATRN识别算法在技术路线上覆盖了 CNNCTCCRNN、Rosetta、SVTR、空间变换CTC/AttentionSTAR-Net、RARE、基于 Transformer 的语言模型SRN、NRTR、SATRN、语义推理ABINet、VisionLAN、序列建模SAR、SPIN、RobustScanner以及端到端可训练的视觉 TransformerViTSTR、ParseQ等主流方向。3.2 公开数据集指标PaddleOCR 参考 DTRB 文字识别训练和评估流程使用 MJSynth 与 SynthText 两个文字识别数据集训练在 IIIT、SVT、IC03、IC13、IC15、SVTP、CUTE 数据集上进行评估各模型复现效果如下Avg Accuracy 列单位 %模型骨干网络Avg Accuracy模型存储命名RosettaResnet34_vd79.11rec_r34_vd_none_none_ctcRosettaMobileNetV375.80rec_mv3_none_none_ctcCRNNResnet34_vd81.04rec_r34_vd_none_bilstm_ctcCRNNMobileNetV377.95rec_mv3_none_bilstm_ctcStarNetResnet34_vd82.85rec_r34_vd_tps_bilstm_ctcStarNetMobileNetV379.28rec_mv3_tps_bilstm_ctcRAREResnet34_vd83.98rec_r34_vd_tps_bilstm_attRAREMobileNetV381.76rec_mv3_tps_bilstm_attSRNResnet50_vd_fpn86.31rec_r50fpn_vd_none_srnNRTRNRTR_MTB84.21rec_mtb_nrtrSARResnet3187.20rec_r31_sarSEEDAster_Resnet85.35rec_resnet_stn_bilstm_attSVTRSVTR-Tiny89.25rec_svtr_tiny_none_ctc_enViTSTRViTSTR79.82rec_vitstr_none_ceABINetResnet4590.75rec_r45_abinetVisionLANResnet4590.30rec_r45_visionlanSPINResNet3290.00rec_r32_gaspin_bilstm_attRobustScannerResNet3187.77rec_r31_robustscannerRFLResNetRFL88.63rec_resnet_rfl_attParseQVIT91.24rec_vit_parseq_synthCPPDSVTR-Base93.8rec_svtrnet_cppd_base_enSATRNShallowCNN88.05rec_satrn表中的模型存储命名字段直接对应模型参数文件的命名规范同时与仓库 configs/rec 目录下的配置文件一一对应例如rec_r34_vd_none_bilstm_ctc对应 configs/rec/rec_r34_vd_none_bilstm_ctc.ymlrec_mv3_none_bilstm_ctc对应 configs/rec/rec_mv3_none_bilstm_ctc.yml方便开发者按命名快速检索配置与权重。3.3 识别模型配置解读以 CRNN 的轻量实现 configs/rec/rec_mv3_none_bilstm_ctc.yml 为例其网络结构配置展示了识别模型与检测模型在模块装配上的差异Global: character_dict_path: # 字符字典路径 max_text_length: 25 # 最大文本长度 use_space_char: False # 是否使用空格字符 Architecture: model_type: rec algorithm: CRNN Transform: # 识别可选用 TPS 等空间变换 Backbone: name: MobileNetV3 scale: 0.5 model_name: large Neck: name: SequenceEncoder encoder_type: rnn # 序列编码rnn/cnn/reshape hidden_size: 96 Head: name: CTCHead # 输出头CTCHead 或 AttentionHead fc_decay: 0 Loss: name: CTCLoss PostProcess: name: CTCLabelDecode对照 BaseModel 源码 可以看到识别任务通过Neck的SequenceEncoder对骨干网络输出的特征图进行序列编码rnn 类型即双向 LSTM再由CTCHead输出逐帧字符概率分布配合CTCLoss完成训练若将Head换成 Attention 类型并配套AttentionLoss即切换为 RARE 一类的注意力机制方案——同一骨架通过配置即可在 CTC 与 Attention 两种范式间切换这正是模块化组网的价值所在。4. 两阶段算法文本超分辨率与公式识别4.1 文本超分辨率算法低分辨率文本行会显著拉低识别精度文本超分辨率Text Super-Resolution作为识别前处理可有效缓解该问题。PaddleOCR 已支持的超分辨率算法点击链接获取使用教程Text GestaltText Telescope在 TextZoom 公开数据集上算法效果如下模型骨干网络PSNR_AvgSSIM_Avg配置文件Text Gestalttsrn19.280.6560configs/sr/sr_tsrn_transformer_strock.ymlText Telescopetbsrn21.560.7411configs/sr/sr_telescope.ymlText Telescope 在 PSNR 与 SSIM 两项指标上均高于 Text Gestalt适合对识别前图像质量要求较高的场景。训练、评估与预测的完整流程可参考对应的 超分辨率教程。4.2 公式识别算法公式识别Formula Recognition用于将数学公式图像转换为 LaTeX 序列。PaddleOCR 已支持的公式识别算法CANLaTeX-OCR在 CROHME 手写公式数据集上算法效果如下模型骨干网络配置文件ExpRateCANDenseNetconfigs/rec/rec_d28_can.yml51.72%CANCounting-Aware Network通过引入计数模块强化对公式结构的感知ExpRate 衡量的是整条公式识别完全正确的比例其难度显著高于逐字符精度因此该指标在公式识别任务中具有较强区分度。5. 端到端算法PGNet端到端 OCR 算法可在单个模型中同时完成文字检测与文字识别。与两阶段方案相比其共享检测与识别模块的 CNN 特征并联合训练模型更小、推理更快。PaddleOCR 已支持的端到端算法PGNetPGNet 具备以下特性详见 PGNet 教程设计 PGNet loss 指导训练不需要字符级别的标注不需要 NMS 和 ROI 相关操作显著加速预测提出预测文本行内阅读顺序的模块提出基于图的修正模块GRM进一步提升识别性能。输入图像经特征提取后送入四个分支文本边缘偏移量预测TBO、文本中心线预测TCL、文本方向偏移量预测TDO与文本字符分类图预测TCC。其中 TBO 与 TCL 的输出经后处理得到文本检测结果TCL、TDO、TCC 联合负责文本识别。在 Total Text 测试集测试环境NVIDIA Tesla V100-SXM2-16GB上的复现效果如下模型det_precisiondet_recalldet_f_scoree2e_precisione2e_recalle2e_f_scoreFPSPGNetA论文85.3086.8086.10--61.7038.20 (size640)PGNetAPaddleOCR 复现87.0382.4884.6961.7158.4360.0348.73 (size768)说明PaddleOCR 中的 PGNet 实现针对预测速度做了优化在精度下降可接受范围内显著提升了端到端预测速度FPS 由 38.20 提升至 48.73。PGNet 对应的训练/推理脚本位于 tools/infer/predict_e2e.py。6. 表格识别算法TableMaster表格识别用于从表格图像中还原单元格结构与内容是文档结构化的关键环节。PaddleOCR 已支持的表格识别算法TableMaster在 PubTabNet 表格识别公开数据集上算法效果如下模型骨干网络配置文件accTableMasterTableResNetExtraconfigs/table/table_master.yml77.47%configs/table/table_master.yml 是 TableMaster 的训练配置其关键参数包括Global.box_format支持xywh/xyxy/xyxyxyxy四种框格式Global.d2s_train_image_shape: [3, 480, 480]控制训练输入尺寸网络部分采用TableResNetExtra骨干含 GC 模块配置gcb_config与TableMasterHead输出头含hidden_size: 512、headers: 8等 Transformer 解码参数损失函数为TableMasterLoss其ignore_index需设为字典长度 3。除 TableMaster 外仓库 configs/table 还提供了 SLANet 系列的表格结构识别配置可按需选用。7. 关键信息抽取算法KIE关键信息抽取Key Information Extraction用于从版面文档中抽取出语义化的字段如发票中的金额、日期是文档理解与 RAG 场景的核心能力。PaddleOCR 已支持的关键信息抽取算法VI-LayoutXLMLayoutLM / LayoutLMv2 / LayoutXLMSDMGR7.1 wildreceipt 发票数据集指标在 wildreceipt 发票公开数据集上算法复现效果如下模型骨干网络配置文件hmeanSDMGRVGG6configs/kie/sdmgr/kie_unet_sdmgr.yml86.70%SDMGR 采用图神经网络对文本节点进行关系建模其配置以model_type: kie、algorithm: SDMGR声明任务类型训练时通过Global.class_path指定类别列表文件Global.img_scale: [1024, 512]控制输入尺寸优化器使用Piecewise分段学习率衰减。7.2 XFUND_zh 数据集指标SER 与 RE在 XFUND_zh 公开数据集上KIE 算法在语义实体识别SER与关系抽取RE两种任务上的效果如下模型骨干网络任务配置文件hmeanVI-LayoutXLMVI-LayoutXLM-baseSERconfigs/kie/vi_layoutxlm/ser_vi_layoutxlm_xfund_zh_udml.yml93.19%LayoutXLMLayoutXLM-baseSERconfigs/kie/layoutlm_series/ser_layoutxlm_xfund_zh.yml90.38%LayoutLMLayoutLM-baseSERconfigs/kie/layoutlm_series/ser_layoutlm_xfund_zh.yml77.31%LayoutLMv2LayoutLMv2-baseSERconfigs/kie/layoutlm_series/ser_layoutlmv2_xfund_zh.yml85.44%VI-LayoutXLMVI-LayoutXLM-baseREconfigs/kie/vi_layoutxlm/re_vi_layoutxlm_xfund_zh_udml.yml83.92%LayoutXLMLayoutXLM-baseREconfigs/kie/layoutlm_series/re_layoutxlm_xfund_zh.yml74.83%LayoutLMv2LayoutLMv2-baseREconfigs/kie/layoutlm_series/re_layoutlmv2_xfund_zh.yml67.77%从指标可以清晰看到视觉语言模型LayoutLM → LayoutLMv2 → LayoutXLM → VI-LayoutXLM的演进收益融合视觉特征LayoutLMv2、引入多语言增强LayoutXLM并进一步轻量化VI-LayoutXLM后SER 的 hmean 由 77.31% 提升至 93.19%RE 的 hmean 由 67.77% 提升至 83.92%。注意同一配置文件中 SER 与 RE 通过不同 ymlser_前缀与re_前缀区分任务类型由配置文件的Architecture段声明训练与预测流程分别参见 VI-LayoutXLM 教程 与 SDMGR 教程。8. 基于指标表的模型选型建议综合本文各公开数据集指标可形成如下选型参考实时检测需要兼顾速度与精度的通用场景优先选择 DBResNet50_vd 版 ICDAR2015 Hmean 82.38%MobileNetV3 版仅 75.12% 但体积大幅缩减追求极限精度可选 DBHmean 86.58%多方向/弯曲文本检测Total-text 与 CTW1500 场景分别选择 SASTHmean 83.66%与 FCE/DRRGHmean 约 85.2%高精度识别在 DTRB 评估协议下CPPD93.8%、ParseQ91.24%、ABINet90.75%位居前列适合对精度敏感的离线场景SVTR-Tiny89.25%则提供了轻量与精度的良好平衡低分辨率文本识别前接入 Text Telescope 超分TextZoom PSNR 21.56 / SSIM 0.7411可改善识别效果端到端需求需要单模型同时输出检测框与识别结果、且对延迟敏感时选择 PGNet复现 FPS 48.73文档结构化表格场景选择 TableMasterPubTabNet acc 77.47%字段抽取场景选择 VI-LayoutXLMXFUND_zh SER 93.19% / RE 83.92%或 SDMGRwildreceipt hmean 86.70%。需要说明以上指标均为各算法在英文公开数据集上的复现结果用于算法横向对比面向中文等实际业务场景时应优先选用仓库 docs/version2.x/ppocr/model_list.md 中提供的 PP-OCR 系列推理模型/训练模型/预训练模型/nb 模型含多语言模型其配置文件位于 configs 目录。9. 从算法到实现模块化架构与算法接入PaddleOCR 之所以能以换配置即换算法的方式覆盖如此多的算法得益于其高度模块化的架构。所有算法均按统一范式拆解为以下模块目录结构见 ppocr数据加载与处理ppocr/data图片读取、数据增强与 label 制作全部由可插拔的 module 顺序执行网络ppocr/modeling分为 architectures组网、transforms图像变换、backbones特征提取、necks特征增强、heads输出模块五部分后处理ppocr/postprocess解码网络输出得到文本框或识别文本例如 DB 的后处理实现于 ppocr/postprocess/db_postprocess.py损失函数ppocr/losses计算网络输出与 label 之间的距离指标评估ppocr/metrics计算当前 batch 上的性能指标优化器ppocr/optimizer训练优化器及其内置的正则化与学习率衰减模块。若要在 PaddleOCR 中新增一个算法只需按照 使用 PaddleOCR 架构添加新算法 教程在上图中的每个部分内新增对应模块文件例如在 ppocr/modeling/backbones 下新建my_backbone.py并实现继承nn.Layer的类随后在对应__init__.py中注册最后在 yml 配置文件中以name字段引用即可完成接入。训练与推理入口分别为 tools/train.py 与 tools/infer 目录下的predict_det.py、predict_rec.py、predict_e2e.py、predict_system.py等脚本。10. 总结本文以 PaddleOCR 算法概览文档为主线系统梳理了仓库支持的全部算法矩阵文本检测7 种、文本识别18 种、文本超分辨率2 种、公式识别2 种、端到端 OCR1 种、表格识别与关键信息抽取5 种 KIE 模型并给出了它们在 ICDAR2015、Total-text、CTW1500、DTRB 评测集、TextZoom、CROHME、PubTabNet、wildreceipt、XFUND_zh 等公开数据集上的复现指标。所有指标、配置文件与教程均可直接对应到仓库源码与配置如 configs/det、configs/rec、configs/table、configs/kie开发者既可按表选型也可循模块化架构快速接入新算法将 PaddleOCR 的算法能力平滑地集成到自己的文档智能处理流程中。【免费下载链接】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),仅供参考
返回列表