开源OCR模型对比

引言

目前,开源的项目中有很多 OCR 模型,但是没有一个统一的基准来衡量哪个是更好一些的。 面对这么多的模型,让我们有些不知所措。为此,最近一段时间以来,我一直想要构建这样一个基准,现在来看,已经初步具有雏形。

为了能更好地评测各个模型效果,收集标注了两个开源评测集:

为了能够方便计算各个模型指标,整理开源了两个计算常用指标的库:

以下结果均是基于以上 4 个库来的,其指标结果仅仅代表在指定评测集上效果,不代表在其他测试集上结果也是如此,仅供参考。

以下表格中推理时间是基于 MacBook Pro M2 运行所得,不同机器会有差别,请侧重查看彼此之间的比较。

指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。

对应模型下载地址,参见:link

文本检测模型

评测依赖仓库:

  • rapidocr_onnxruntime==1.3.16: link
  • 计算指标库 TextDetMetric: link
  • 测试集 text_det_test_dataset: link

详情可以移步AI Studio运行查看。

模型 模型大小 Precision Recall H-mean Speed(s/img)
ch_PP-OCRv4_det_infer.onnx 4.5M 0.8301 0.8659 0.8476 0.2256
ch_PP-OCRv3_det_infer.onnx 2.3M 0.8021 0.8457 0.8234 0.1660
ch_PP-OCRv2_det_infer.onnx 2.2M 0.7579 0.8010 0.7788 0.1570
ch_PP-OCRv4_det_server_infer.onnx 108M 0.7922 0.8533 0.8216 3.9093
ch_ppocr_server_v2.0_det_infer.onnx 47M 0.7298 0.8128 0.7691 0.7419
读光-文字检测-轻量化端侧 DBNet 行检测模型-中英-通用领域 5.8M 0.7666 0.8128 0.7890 0.6636
读光-文字检测-DBNet 行检测模型-中英-通用领域 47.2M 0.7749 0.8167 0.7952 0.4121
读光-文字检测-行检测模型-中英-通用领域 未跑通 312M - - - -

不同推理引擎下,效果比较:

推理引擎 模型 模型大小 Precision Recall H-mean Speed(s/img)
rapidocr_onnxruntime==1.3.16 ch_PP-OCRv4_det_infer.onnx 4.5M 0.8301 0.8659 0.8476 0.2256
rapidocr_openvino==1.3.16 ch_PP-OCRv4_det_infer.onnx 4.5M 0.8339 0.8629 0.8481 0.6447
rapidocr_paddle==1.3.18 ch_PP-OCRv4_det_infer.onnx 4.5M 0.8301 0.8659 0.8476 0.9924

文本识别模型

评测依赖仓库:

  • rapidocr_onnxruntime==1.3.16: link
  • 计算指标库 TextRecMetric: link
  • 测试集 text_rec_test_dataset: link
模型 对应 PaddleOCR 分支 模型大小 Exact Match Char Match Speed(s/img)
ch_PP-OCRv4_rec_infer.onnx release/v2.7 10M 0.8323 0.9355 0.6836
ch_PP-OCRv3_rec_infer.onnx release/v2.6 11M 0.7097 0.8919 0.6362
ch_PP-OCRv4_rec_server_infer.onnx release/v2.7 86M 0.7968 0.9381 0.6967
ch_PP-OCRv2_rec_infer.onnx release/v2.3 8.0M 0.6387 0.8398 0.6138
ch_ppocr_mobile_v2.0_rec_infer.onnx release/v2.0 4.3M 0.5323 0.7823 0.5575
读光-文字识别-行识别模型-中英-文档印刷体文本领域 - 73M 0.5968 0.7705 -
读光-文字识别-行识别模型-中英-通用领域 - 73M 0.5839 0.7615 -
读光-文字识别-行识别模型-中英-自然场景文本领域 - 73M 0.5903 0.7779 -
读光-文字识别-轻量化端侧识别模型-中英-通用领域 - 7.4M 0.5484 0.7515 -
读光-文字识别-CRNN 模型-中英-通用领域 - 46M 0.5935 0.7671 -
OFA 文字识别-中文-通用场景-base 未跑通 - - - - -

不同推理引擎下,效果比较:

推理引擎 模型 模型大小 Exact Match Char Match Speed(s/img)
rapidocr_onnxruntime==1.3.16 ch_PP-OCRv4_rec_infer.onnx 10M 0.8323 0.9355 0.6836
rapidocr_openvino==1.3.16 ch_PP-OCRv4_rec_infer.onnx 10M 0.8323 0.9355 0.6836
rapidocr_paddle==1.3.18 ch_PP-OCRv4_rec_infer.onnx 10M 0.8323 0.9355 0.6836
  • 输入 Shape:

    • v2: [3, 32, 320]
    • v3~v4: [3, 48, 320]
  • 不同模型,实例化示例如下:

    python 复制代码
    from rapidocr_onnxruntime import RapidOCR
    
    # v3 or v4
    engine = RapidOCR(
      rec_model_path="models/ch_PP-OCRv3_rec_infer.onnx",
    )
    
    # v2
    engine = RapidOCR(
      rec_model_path="models/ch_ppocr_mobile_v2.0_rec_infer.onnx",
      rec_img_shape=[3, 32, 320],
    )

后续更新,请移步:link

相关推荐
董董灿是个攻城狮1 小时前
AI视觉连载8:传统 CV 之边缘检测
算法
AI软著研究员9 小时前
程序员必看:软著不是“面子工程”,是代码的“法律保险”
算法
FunnySaltyFish9 小时前
什么?Compose 把 GapBuffer 换成了 LinkBuffer?
算法·kotlin·android jetpack
颜酱10 小时前
理解二叉树最近公共祖先(LCA):从基础到变种解析
javascript·后端·算法
地平线开发者1 天前
SparseDrive 模型导出与性能优化实战
算法·自动驾驶
董董灿是个攻城狮1 天前
大模型连载2:初步认识 tokenizer 的过程
算法
地平线开发者1 天前
地平线 VP 接口工程实践(一):hbVPRoiResize 接口功能、使用约束与典型问题总结
算法·自动驾驶
罗西的思考1 天前
AI Agent框架探秘:拆解 OpenHands(10)--- Runtime
人工智能·算法·机器学习
HXhlx1 天前
CART决策树基本原理
算法·机器学习
Wect1 天前
LeetCode 210. 课程表 II 题解:Kahn算法+DFS 双解法精讲
前端·算法·typescript