開源OCR模型對比

Danno發表於2024-04-16

引言

目前,開源的專案中有很多 OCR 模型,但是沒有一個統一的基準來衡量哪個是更好一些的。
面對這麼多的模型,讓我們有些不知所措。為此,最近一段時間以來,我一直想要構建這樣一個基準,現在來看,已經初步具有雛形。

為了能更好地評測各個模型效果,收集標註了兩個開源評測集:

  • text_det_test_dataset
  • text_rec_test_dataset

為了能夠方便計算各個模型指標,整理開源了兩個計算常用指標的庫:

  • TextDetMetric
  • TextRecMetric

以下結果均是基於以上 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]
  • 不同模型,例項化示例如下:

    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

相關文章