PP-OCRv5 C++ 基准测试工具:打造高性能OCR评测标杆 - 详解

news/2025/9/26 15:06:49/文章来源:https://www.cnblogs.com/yxysuanfa/p/19113525

作者:深大飞桨领航团团长 周家杰

一,前言

光学字符识别(OCR)技术在数字化时代扮演着越来越重要的角色,从文档数字化到智能表单处理,OCR技术的应用场景日益广泛。PP-OCRv5作为百度飞桨团队推出的最新OCR模型,在精度和速度上都有显著提升。然而,如何客观、全面地评估OCR模型在不同场景下的性能表现,一直是业界关注的重点。

今天,我们为大家介绍一个专门为PP-OCRv5打造的C++基准测试工具——PP-OCRv5-Cpp-Baseline,这是一个集成了完整测试流程、支持GPU加速、提供详细性能分析的开源项目。

二,项目亮点

一键式测试流程

不同于传统的分步骤测试方法,我们的工具提供了完全自动化的测试流程:

# 三步即可完成完整测试
./scripts/setup_environment.sh     # 环境配置
./scripts/compile_dependencies.sh  # 依赖安装
./scripts/startup.sh               # 运行测试
  • 环境配置

setup_environment.sh 脚本会自动完成所有必要的环境准备工作,包括:系统包更新、CUDA环境检测、GCC编译器安装、Conda环境创建、以及PaddleOCR依赖库的自动下载和配置。整个过程完全自动化,确保所有用户都能获得一致的测试环境。

图片

  • 依赖安装

compile_dependencies.sh脚本负责编译和安装所有必要的C++依赖库,包括:PaddleOCR源码克隆、OpenCV库编译、PaddlePaddle推理库配置、以及CMake项目构建。

图片

环境配置和依赖安装完成后,还会编译运行官方的PP-OCRv5 C++示例程序,确保基础环境配置正确。

图片

  • Benchmark运行

startup.sh 脚本执行完整的基准测试流程,自动加载测试数据集、运行PP-OCRv5推理、记录性能指标、计算准确率,并生成详细的测试报告。整个过程实时显示进度和中间结果。

图片

  • 查看结果

测试完成后,结果会按时间戳自动保存到项目根目录下:

​​​​​

output/
├── batch_results_20250924_103601/           # 按时间戳创建的结果目录
│   ├── benchmark_output.log                 # 完整的基准测试日志
│   ├── benchmark_summary.md                 # Markdown格式的详细结果表格
│   └── summary.txt                          # 性能指标汇总
├── image_1.png.jpg                          # 处理后的可视化结果图片
├── image_2.png.jpg                          # (包含OCR检测框和识别文本)
├── image_3.png.jpg
├── ...
├── image_1.png.json                         # 对应的JSON格式结果数据
├── image_2.png.json                         # (包含坐标和识别文本)
├── image_3.png.json
└── ...
logs/                                        # 构建和运行日志目录
├── cmake_20250924_103601.log               # CMake配置日志
├── make_20250924_103601.log                # 编译日志
└── accuracy_20250924_103601.txt            # 准确率简要记录

图片

三,硬件测试平台

测试环境配置

为了提供准确、可重现的基准测试结果,我们在以下算力魔方4060硬件平台

https://www.pasuntech.com.cn/2609.html

上进行了性能评测:

配置项目

硬件配置

GPU

NVIDIA GeForce RTX 4060

显存

8GB GDDR6

CPU

Intel Core i5-10210U

核心数

4核8线程 @ 1.60GHz

内存

32GB DDR4

操作系统

Ubuntu 24.04.3 LTS

CUDA驱动

550.163.01

软件环境

  • PaddleInference 3.0.0: 推理引擎核心

  • OpenCV 4.7.0: 图像处理库

  • CUDA 11.8: GPU加速支持

  • cuDNN 8.9.2: 深度学习加速库

四,性能测试结果

基准测试数据

真实场景数据集

相比单一的学术数据集,我们构建了更贴近实际应用的多场景测试数据 ——这种多样化的数据集能够更好地反映PP-OCRv5在真实世界中的表现。

  •  街景标识:户外招牌、路标等

  • ✍️ 手写文本:手写笔记等

  •  试卷文档:考试试卷等

  •  教材课本:教科书页面等

  •  报纸媒体:新闻报道、杂志文章等

在我们的多场景数据集上,PP-OCRv5展现出了优异的性能:

硬件配置

平均推理时间

平均FPS

平均CPS

平均准确率

RTX 4060

2234.11ms

0.70

465.87

92.34%

性能指标说明:

  • FPS (Frames Per Second):每秒处理的图像帧数,反映系统处理速度

  • CPS (Characters Per Second):每秒识别的字符数量,衡量实际文字处理能力

  • 准确率 (Accuracy):基于字符级编辑距离计算的识别准确率

 数据集准备

我们的工具支持使用自定义数据集进行性能评测。以下是详细的准备步骤:

  • 数据集目录结构

将您的数据集按照以下结构组织:

images/
├── image_1.png          # 测试图像文件
├── image_2.png
├── image_3.png
├── ...
├── image_N.png
└── labels.json          # 标注文件
  • 图像文件要求

格式支持:PNG、JPG、JPEG、BMP、TIFF

  • 标注文件格式

labels.json 文件需要按照以下JSON格式编写:

{
"image_1.png": [
{
"text": "文本内容",
"bbox": [
[x1, y1],  // 左上角坐标
[x2, y2],  // 右上角坐标
[x3, y3],  // 右下角坐标
[x4, y4]   // 左下角坐标
]
},
{
"text": "另一段文本",
"bbox": [
[x1, y1],  // 左上角坐标
[x2, y2],  // 右上角坐标
[x3, y3],  // 右下角坐标
[x4, y4]   // 左下角坐标
]
},
// ...
],
"image_2.png": [
// 第二张图像的标注...
]
}

在AI技术快速发展的今天,客观、科学的评测体系显得尤为重要。我们相信,通过这样的开源项目,能够为OCR技术的发展贡献一份力量。


项目地址:https://github.com/Chris-godz/PP-OCRv5-Cpp-Baseline

技术交流:欢迎提交Issue或PR参与项目建设

声明:本项目基于PaddleOCR开源框架,感谢百度飞桨团队的卓越贡献。


这篇文章展示了我们对OCR技术评测的思考和实践。如果您在使用过程中有任何问题或建议,欢迎与我们交流!


如果你有更好的文章,欢迎投稿!

稿件接收邮箱:nami.liu@pasuntech.com

更多精彩内容请关注“算力魔方®”!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/918431.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自定义中间件进入管道中执行队列的流程

自定义中间件进入管道中执行队列的流程 1. 自定义中间件类的标准写法 public class CustomLoggingMiddleware {private readonly RequestDelegate _next;// 1. 构造函数必须包含 RequestDelegate next 参数public Cust…

网站推广的常用途径有哪些网站ftp需要关闭

一、集成测试和系统测试的区别 (一)测试的目的 • 集成测试:主要目的是验证各个模块组合在一起后,它们之间的接口和交互是否正确,是否能够按照设计要求协同工作,以确保系统的稳定性和可靠性,重…

做一个回收网站怎么做免费网站建

当人用眼睛看事物的时候,会感觉到近处的东西是比远处的东西要大一些的,通俗的说,这就是透视。 总的来说。透视变换是将3D的世界转换到2D图像上的一种手段,人的视觉系统和摄像头视觉系统也是基于这一工作原理。 对透视变化的研究&a…

ps做产品的网站怎么做免费的产品图片网站

大家好,今天来聊聊论文降重隐藏字符怎么识别,希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧,可以借助此类工具: 论文降重隐藏字符的识别方法 一、引言 在论文降重过程中&#xff…

翻斗幼儿园历险记-CTF-WP

翻斗幼儿园历险记 一、搭建: docker-compose up -d 运行那个docker-compose.yml文件即可打开127.0.0.1:32777就运行好了2、打法 文件上传前端过滤,bp抓包改后缀即可盲猜一波,上传的目录是/uploads下面 哥斯拉连上马…

.net8+winform+Antdui 制作 LOL 小助手

.net8+winform+Antdui 制作 LOL 小助手 .net8+winform+Antdui 制作 LOL 小助手 一、事件起因 二、筹备工作 三、查看效果 四、后期拓展想法 一、事件起因 本人 lol 菜鸡一枚,最近天天玩排位模式,有时候自己分路有优势…

深入解析:【Git】Git 简介及基本操作

深入解析:【Git】Git 简介及基本操作pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mona…

hutool主要内容list

Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅 Hutool = Hu + tool,是原公司项目底层代码剥离后的开源库,“Hu”是公司名称的表示,too…

做图赚钱的网站有哪些中国能源建设集团有限公司是央企

QDomDocument类代表了一个XML文件 QDomDocument类代表整个的XML文件。概念上讲:它是文档树的根节点,并提供了文档数据的基本访问方法。由于元素、文本节点、注释、指令执行等等不可能脱离一个文档的上下文,所以文档类也包含了需要用来创建这些…

Kurt-Blender零基础教程:第2章:建模篇——第3节:陈列/父子级/蒙皮/置换修改器与小狐狸角色建模 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

网站建设的目标客户分析建做网站

使用 Yelp 数据集进行用户画像(User Profiling)是一项有趣的任务,可以理解用户的偏好、行为和特征。以下是总结的一个基本的步骤,帮助构建用户画像 pandas 加载数据: import pandas as pd# 加载数据 users pd.read_…

中职示范校建设专题网站如何建微网站

根本原因分析中的5WHY分析法是从下列哪几个层面实施的? A. 制造角度 B. 检验角度 C. 体系角度 D. 以上都是 数据分析认证考试介绍:点击进入 题目来源于CDA模拟题库 点击此处获取答案

20250916_QQ_Powershell

流量分析, 应急响应, WebShell, Powshell, XORTags:流量分析,应急响应,WebShell,Powshell,XOR 0x00. 题目 找出受攻击主机回连的IP地址和端口号 附件路径:https://pan.baidu.com/s/1GyH7kitkMYywGC9YJeQLJA?pwd=Zmxh…

完整教程:HTTP安全响应头--CSP(Content-Security-Policy)

完整教程:HTTP安全响应头--CSP(Content-Security-Policy)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Conso…

学习:uniapp全栈微信小程序vue3后台(26) - 指南

学习:uniapp全栈微信小程序vue3后台(26) - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas"…

HTML5介绍(HTML5特性、HTML5功能) - 指南

HTML5介绍(HTML5特性、HTML5功能) - 指南2025-09-26 14:50 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: blo…

Experiment1

Experiment 1 实验任务1 1.1 #include <stdio.h> int main() {printf(" O \n");printf("<H>\n");printf("I I\n");printf(" O \n");printf("<H>\n&qu…

读书笔记:Oracle 自动索引:让数据库自己管索引?

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。本文为个人学…

海安县建设局网站先备案还是先做网站

分类目录&#xff1a;《系统学习Python》总目录 文章《系统学习Python——装饰器&#xff1a;“私有“和“公有“属性案例-[实现私有属性]》中的代码有点复杂&#xff0c;并且你最好自己跟踪运行它&#xff0c;看看它是如何工作的。然而为了帮助你理解&#xff0c;这里给出一些…

1_2025.9.26_1

题目:[https://codeforces.com/problemset/problem/2140/E1] ac代码:[https://codeforces.com/contest/2140/submission/340570458] 思路:状压dp,因m<=2,n<=20,所以将状态压缩遍历,再根据题解给的式子写即…