引言
目前,開源的專案中有很多 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]
- v2:
-
不同模型,例項化示例如下:
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