PaddleOCR 端到端评测指南:文本检测 + 文本识别 Pipeline 的指标计算与结果可视化
PaddleOCR 端到端评测指南文本检测 文本识别 Pipeline 的指标计算与结果可视化【免费下载链接】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端到端End-to-end评测衡量的是检测 识别串联系统的整体效果与单独评测检测或识别模型不同它直接以整张图片为输入统计检测框与识别文本同时正确的比例。本文基于 PaddleOCR 仓库tools/end2end目录下的配套工具完整讲解从串联推理、标签格式转换到指标计算与可视化的一整套端到端评测流程读者学完后可以对自己的 PP-OCR 检测 识别模型组合在自建数据集上完成量化评估并读懂fmeasure、character_acc、编辑距离等关键指标的含义。一、端到端评测的定位与整体流程PaddleOCR 的检测模型与识别模型通常独立训练、独立评估但实际业务关心的是检测 识别串联后的整体表现。tools/end2end目录正是为这一目标而设它存放了文本检测 文本识别 pipeline 串联预测的指标评测代码以及可视化工具见 tools/end2end/readme.md目录下共包含四个文件文件作用tools/end2end/convert_ppocr_label.py将 GT 标注与预测结果统一转换为端到端评测所需的目标格式tools/end2end/eval_end2end.py计算端到端评测指标precision / recall / fmeasure 等tools/end2end/draw_html.py将可视化结果目录渲染为 HTML 页面便于人工核验tools/end2end/readme.md评测步骤说明整个端到端评测分为三个步骤串联推理运行 tools/infer/predict_system.py 对图片目录执行检测 识别保存预测结果格式转换用convert_ppocr_label.py分别将 GT 标注和预测结果转换为评测脚本要求的统一格式指标计算运行eval_end2end.py得到端到端指标。二、步骤一串联推理并保存预测结果2.1 运行 predict_system.py端到端评测的第一步是获得检测 识别串联的预测结果。执行python3 tools/infer/predict_system.py --det_model_dir./ch_PP-OCRv2_det_infer/ --rec_model_dir./ch_PP-OCRv2_rec_infer/ --image_dir./datasets/img_dir/ --draw_img_save_dir./ch_PP-OCRv2_results/ --is_visualizeTrue各参数说明参数定义见 tools/infer/utility.py参数说明--det_model_dir检测模型推理目录含inference.pdmodel与inference.pdiparams--rec_model_dir识别模型推理目录--image_dir待评测图片目录支持目录或单张图片路径--draw_img_save_dir可视化图片与预测结果文件的保存目录默认./inference_results--is_visualize是否保存可视化结果--use_angle_cls是否启用方向分类器默认 False若启用需同时传--cls_model_dir--drop_score识别得分低于该阈值的框将被过滤默认 0.5--rec_image_shape识别输入尺寸默认3, 48, 320从源码看predict_system.py中的TextSystem类将检测器、识别器以及可选的文本方向分类器串成一条完整的调用链见 tools/infer/predict_system.py检测模型先输出文本框随后按det_box_type默认quad将每个文本框裁剪旋转为识别输入经方向分类后送入识别模型最后通过drop_score阈值过滤低分结果见 tools/infer/predict_system.py。注意仓库提示在 PP-OCRv3 中rec_image_shape默认值为3, 48, 320若使用 PP-OCRv2 或更早版本的识别模型需显式指定--rec_image_shape3,32,320见 tools/infer/predict_system.py。2.2 输出结果格式运行结束后可视化结果图默认保存在./ch_PP-OCRv2_results/目录下预测结果默认保存在./ch_PP-OCRv2_results/system_results.txt中。system_results.txt每行是一条样本的预测结果格式为图片路径 TAB JSON 数组all-sum-510/00224225.jpg [{transcription: 超赞, points: [[8.0, 48.0], [157.0, 44.0], [159.0, 115.0], [10.0, 119.0]], score: 0.99396634}, {transcription: 中, points: [[202.0, 152.0], [230.0, 152.0], [230.0, 163.0], [202.0, 163.0]], score: 0.09310734}, {transcription: 58.0m, points: [[196.0, 192.0], [444.0, 192.0], [444.0, 240.0], [196.0, 240.0]], score: 0.44041982}, {transcription: 汽配, points: [[55.0, 263.0], [95.0, 263.0], [95.0, 281.0], [55.0, 281.0]], score: 0.9986651}, {transcription: 成总店, points: [[120.0, 262.0], [176.0, 262.0], [176.0, 283.0], [120.0, 283.0]], score: 0.9929402}, {transcription: K, points: [[237.0, 286.0], [311.0, 286.0], [311.0, 345.0], [237.0, 345.0]], score: 0.6074794}, {transcription: 88-8, points: [[203.0, 405.0], [477.0, 414.0], [475.0, 459.0], [201.0, 450.0]], score: 0.7106863}]JSON 数组中每个元素对应一个检测 识别的文本框字段含义如下字段含义transcription识别出的文本内容points文本框四个角点坐标[x, y]四角按顺序排列score识别置信度得分这一格式由predict_system.py的main函数生成每张图片的检测框坐标经np.int32取整后与识别文本一起打包为字典列表再以json.dumps(res, ensure_asciiFalse)序列化见 tools/infer/predict_system.py。当输入为 PDF 等多页文档时文件名会追加_页序号后缀以区分不同页面的结果。三、步骤二标签格式转换端到端评测脚本要求 GT 与预测结果遵循统一的文本格式每行一条文本区域以\t分隔坐标、忽略标记与文本因此需要先将步骤一的输出以及标注数据转换为目标格式。3.1 转换脚本用法修改 tools/end2end/convert_ppocr_label.py 中convert_label函数的输入参数标签路径、Mode、保存标签路径然后分别对 GT 与预测结果执行转换python3 tools/end2end/convert_ppocr_label.py --modegt --label_pathpath/to/label_txt --save_foldersave_gt_label python3 tools/end2end/convert_ppocr_label.py --modepred --label_pathpath/to/pred_txt --save_foldersave_PPOCRV2_infer命令行参数见 tools/end2end/convert_ppocr_label.py参数是否必填说明--label_path是输入标签文件路径--save_folder是转换结果的保存目录--mode是gt标注数据或pred预测结果转换完成后会得到两个目录├── ./save_gt_label/ ├── ./save_PPOCRV2_infer/3.2 转换逻辑与格式差异convert_label的核心逻辑见 tools/end2end/convert_ppocr_label.py如下逐行读取标签文件按\t切分得到[图片路径, JSON 标注]若切分失败则尝试以 4 个空格切分解析 JSON 数组将每个文本框的points展平为 8 个坐标值与文本内容拼接成目标行GT 与预测的行格式不同gt模式输出8 个坐标 \t 忽略标记 \t 文本其中忽略标记为1表示该框不计入评测对应文本内容为###的难例/ignore 区域0表示正常参与评测pred模式输出8 个坐标 \t 文本按图片名逐张生成图片名.txt文件写入该图的所有文本行。值得注意的细节若标注字典中含score字段且得分小于0.5该框会被跳过见 tools/end2end/convert_ppocr_label.py这保证了 GT 中低质量标注不会干扰评测全角空格\u3000会被替换为普通空格见 tools/end2end/convert_ppocr_label.py避免字符对齐异常源文件与保存目录不允许相同脚本中有显式断言防止覆盖输入数据。转换产物的命名约定为每张图片一个同名.txt文件这是eval_end2end.py逐图匹配 GT 与预测文件的前提。四、步骤三执行端到端指标计算4.1 运行方式GT 目录与预测目录准备就绪后运行 tools/eval_end2end.py仓库根目录下的评测入口脚本python3 tools/eval_end2end.py gt_label_dir predict_label_dir例如python3 tools/eval_end2end.py ./save_gt_label/ ./save_PPOCRV2_infer/脚本从sys.argv[1]、sys.argv[2]分别读取 GT 目录与预测目录并调用e2e_eval(gt_folder, pred_folder)完成计算见 tools/eval_end2end.py。4.2 输出指标解读评测结束后将输出如下结果hit, dt_count, gt_count 1557 2693 3283 character_acc: 61.77% avg_edit_dist_field: 3.08 avg_edit_dist_img: 51.82 precision: 57.82% recall: 47.43% fmeasure: 52.11%各指标的含义与计算方式对应 tools/eval_end2end.py指标含义计算方式hit/dt_count/gt_count命中数 / 预测文本区域数 / GT 文本区域数hit 为检测框匹配且文本完全一致的框数precision精确率预测结果中正确命中的比例hit / dt_countrecall召回率GT 中被正确命中的比例hit / gt_countfmeasure精确率与召回率的调和平均2 * P * R / (P R)character_acc字符准确率字符级别的识别准确度1 - 总编辑距离 / GT 总字符数avg_edit_dist_field每个匹配文本区域的平均编辑距离总编辑距离 / gt_countavg_edit_dist_img每张图片的平均编辑距离总编辑距离 / 图片数官方文档特别指出fmeasure 是端到端评测的主要关注指标因为它同时惩罚了检测漏检/误检与识别错误而character_acc与编辑距离类指标则更侧重反映识别质量。4.3 指标计算的源码级解析从 tools/eval_end2end.py 的源码可以还原整个评测算法① 多边形 IoU 匹配核心步骤对每张图片将 GT 框与预测框分别构造为 shapelyPolygon并求凸包polygon_from_str见 tools/eval_end2end.py再计算多边形交集/并集比值polygon_iou见 tools/eval_end2end.pyIoU 阈值固定为0.5见 tools/eval_end2end.pyiou 0.5视为候选匹配先做快速intersects判断以加速计算对 shapely 的TopologicalError异常将 IoU 置 0 兜底所有候选匹配按 IoU 从大到小排序采用贪心一对一匹配一个 GT 框只匹配一个预测框已被匹配的框不再参与后续匹配见 tools/eval_end2end.py。② 匹配后的文本比对匹配成功的 GT/预测对中文本先经过strQ2B全角转半角归一化见 tools/eval_end2end.py再计算编辑距离ed基于editdistance库。若 GT 的 ignore 标记为0则该匹配计入 hit、编辑距离与字符统计为1的 ignore 区域不参与统计见 tools/eval_end2end.py。③ 未匹配框的处理未匹配的预测框视为误检文本与空串比较编辑距离计入总和dt_count增加未匹配的 GT 框非 ignore视为漏检文本与空串比较编辑距离计入总和gt_count增加。这种处理方式使得漏检、误检都会拉低fmeasure与端到端评测的语义一致。五、可视化核验工具draw_html.pytools/end2end目录还提供了 tools/end2end/draw_html.py用于将可视化结果打包成 HTML 表格页面方便对评测样本进行人工核验python3 tools/end2end/draw_html.py --image_dirpath/to/vis_dir --save_html_path./default.html --width640参数说明见 tools/end2end/draw_html.py参数默认值说明--image_dir空字符串存放可视化图片的目录会跳过其中的.txt文件--save_html_path./default.html输出 HTML 文件路径--width640页面中图片的显示宽度像素脚本将目录中的图片按文件名排序逐张写入 HTML 表格并声明utf-8编码以保证中文文件名与中文标注正常显示见 tools/end2end/draw_html.py。该工具可与步骤一中--draw_img_save_dir输出的可视化图配合使用快速浏览整批结果的直观质量。六、常见问题与使用建议评测前务必保证 GT 与预测文件命名一一对应eval_end2end.py以 GT 目录下的文件名去预测目录中找同名文件若预测文件缺失则按空结果处理会严重拉低 recall见 tools/eval_end2end.py请确认两个save_folder中图片级.txt文件名一致。忽略区域请标注为###GT 中文本为###的框会被标记为 ignore不参与指标统计适合标注模糊、残缺等难以识别的文本区域。--drop_score会影响端到端结果predict_system.py默认过滤得分低于 0.5 的识别结果调低该阈值会增加参与评测的框数可能提升 recall、降低 precision评测时应明确记录该参数。多语言与版本兼容识别模型版本不同如 PP-OCRv2 与 PP-OCRv3需对应设置--rec_image_shape中文字典默认路径为 ppocr/utils/ppocr_keys_v1.txt多语言场景需通过--rec_char_dict_path指定对应字典。七、总结PaddleOCR 的端到端评测体系将检测 识别串联推理tools/infer/predict_system.py、标签统一tools/end2end/convert_ppocr_label.py与指标计算tools/eval_end2end.py组织为一条完整、可复现的流程。其核心价值在于用fmeasure这一个综合指标量化整条 OCR 管线的实际效果并通过多边形 IoU 贪心匹配、编辑距离与字符准确率等指标将检测与识别的错误来源分解到可诊断的粒度。配合 tools/end2end/draw_html.py 的可视化核验这套工具既适合模型调优阶段的回归测试也适合业务上线前的效果评估。【免费下载链接】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创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Hindsight 自托管 Agent 长期记忆 60 秒快速上手:一条命令完成部署,三步跑通 retain / recall / reflect

Hindsight 自托管 Agent 长期记忆 60 秒快速上手:一条命令完成部署,三步跑通 retain / recall / reflect

Hindsight 自托管 Agent 长期记忆 60 秒快速上手:一条命令完成部署,三步跑通 retain / recall / reflect 【免费下载链接】hindsight Hindsight: Agent Memory That Learns 项目地址: https://gitcode.com/GitHub_Trending/hindsight2/hindsight …

2026/9/19 2:55:06 阅读更多 →
电脑运维知识实战:从SMART到Robocopy的排查指南

电脑运维知识实战:从SMART到Robocopy的排查指南

简介:这份PPT课件系统梳理了电脑运维中的高频实用知识点,面向企业IT运维人员、电脑维修初学者及日常维护PC的办公用户,可帮助快速定位常见软硬件故障并掌握系统安装、备份与优化方法。课件共1个PPTX文件,压缩包总大小116KB&#x…

2026/9/19 2:55:06 阅读更多 →
XGBoost调参实战:从底层原理到参数优化完整指南

XGBoost调参实战:从底层原理到参数优化完整指南

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

2026/9/19 2:54:06 阅读更多 →

最新新闻

合肥制作手机网站避坑指南:3000元预算看完整流程

合肥制作手机网站避坑指南:3000元预算看完整流程

合肥制作手机网站避坑指南:3000元预算看完整流程 网站做好了没人访问,这是很多合肥企业主最头疼的事。其实,问题往往不出在“没人看”,而出在“没做好”。很多人以为做手机站就是买个模板,上传几张图,但忽略了性能、兼容性和SEO底层逻辑,导致加载慢、排名低。今天不谈虚的,直接拆解合肥本地制作手机站的…

2026/9/19 3:35:41 阅读更多 →
CRMEB小程序订阅消息静默失败的全链路排查与生产加固

CRMEB小程序订阅消息静默失败的全链路排查与生产加固

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

2026/9/19 3:35:34 阅读更多 →
构建真正可用的Codex兼容服务:协议层实现指南

构建真正可用的Codex兼容服务:协议层实现指南

1. 项目概述:Codex不是模型,是代码生成的工程化接口层Codex这个词,在2024年中文技术社区里已经成了一个高频误用词。很多人搜“Codex下载”“Codex本地部署”,结果一头扎进Ollama、LM Studio或Docker镜像仓库里反复折腾&#xff0…

2026/9/19 3:35:34 阅读更多 →
F5 Shape Shield逆向实战:JSVMP虚拟机解析与风控绕过

F5 Shape Shield逆向实战:JSVMP虚拟机解析与风控绕过

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

2026/9/19 3:35:34 阅读更多 →
羽毛球场景目标检测数据集:YOLOv8实战与84.4% mAP复现

羽毛球场景目标检测数据集:YOLOv8实战与84.4% mAP复现

羽毛球项目里最难检测的不是人,而是那只时速能到400公里的球。我一开始在比赛视频上做目标检测时,模型能准确框出所有运动员和裁判,但一到羽毛球就拉胯——不是漏检就是误检,球太小、运动模糊太严重、背景里的广告牌又极度相似。后…

2026/9/19 3:35:34 阅读更多 →
Telink 平台 All Devices App 指南:基于 Zephyr 的动态 Matter 设备类型运行时切换与持久化

Telink 平台 All Devices App 指南:基于 Zephyr 的动态 Matter 设备类型运行时切换与持久化

Telink 平台 All Devices App 指南:基于 Zephyr 的动态 Matter 设备类型运行时切换与持久化 【免费下载链接】connectedhomeip Matter (formerly Project CHIP) creates more connections between more objects, simplifying development for manufacturers and inc…

2026/9/19 3:35:33 阅读更多 →

日新闻

BP神经网络时序预测:滑窗长度与多窗口平均策略

BP神经网络时序预测:滑窗长度与多窗口平均策略

简介:面向机器学习、深度学习与数据建模学习者的一份完整研究文献,聚焦BP神经网络在农业产量预测中的应用。文档以1980—2018年全国棉花产量为样本,系统讲解数据归一化处理、激活函数原理、多层神经网络结构搭建及训练流程,展示敏…

2026/9/19 0:00:30 阅读更多 →
Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

上个月调一个Deformable DETR模型,在单卡上要跑将近两天。第二天早上我下意识打开终端翻日志,发现loss从凌晨两点就开始往上爬,一路从0.8涨到1.35,整整六个小时没人发现。那六个小时的训练不仅白跑,还霸占着卡——等于…

2026/9/19 0:00:30 阅读更多 →
OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南 【免费下载链接】opencloud 🌤️ OpenCloud is the open source platform for file management, sharing and collaboration. Simple and sovereign. 项目地址: htt…

2026/9/19 0:00:30 阅读更多 →

周新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/16 19:03:19 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/17 7:57:36 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/17 10:19:14 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/16 22:31:27 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/15 21:39:18 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/16 22:32:59 阅读更多 →