From b98eaa5218d7facd589150edc8577b2172033a71 Mon Sep 17 00:00:00 2001 From: SWHL Date: Tue, 9 Apr 2024 07:23:28 +0000 Subject: [PATCH] deploy: d8e5f366dc68e93c85cb1fa2bc4098db736cf771 --- docs/about_model/convert_model/index.html | 4 +- docs/about_model/index.html | 6 +- docs/about_model/index.xml | 2 +- docs/about_model/model_summary/index.html | 46 +++++----- docs/about_model/support_language/index.html | 6 +- docs/blog/01_optim_tutorial/index.html | 4 +- docs/blog/02_config_parameter/index.html | 4 +- docs/blog/03_which_inference/index.html | 4 +- docs/blog/04_inference_summary/index.html | 4 +- docs/blog/05_rec_dict_onnx/index.html | 4 +- .../blog/06_custom_different_model/index.html | 4 +- docs/blog/index.html | 4 +- docs/business_support/index.html | 4 +- docs/changelog/index.html | 4 +- docs/changelog/rapidocr/index.html | 4 +- docs/changelog/rapidocr_api/index.html | 4 +- docs/changelog/rapidocr_paddle/index.html | 4 +- docs/changelog/rapidocr_web/index.html | 4 +- docs/communicate/index.html | 4 +- docs/faq/index.html | 4 +- docs/index.html | 4 +- docs/inference_engine/index.html | 4 +- docs/inference_engine/onnxruntime/index.html | 4 +- .../onnxruntime/infer_optim/index.html | 4 +- .../onnxruntime/onnxruntime-gpu/index.html | 4 +- docs/inference_engine/openvino/index.html | 4 +- .../openvino/infer-gpu/index.html | 6 +- .../openvino/infer/index.html | 4 +- docs/install_usage/index.html | 4 +- docs/install_usage/rapidocr/cli/index.html | 28 +++--- docs/install_usage/rapidocr/index.html | 4 +- .../install_usage/rapidocr/install/index.html | 4 +- docs/install_usage/rapidocr/usage/index.html | 82 +++++++++--------- docs/install_usage/rapidocr_api/index.html | 16 ++-- docs/install_usage/rapidocr_paddle/index.html | 16 ++-- .../rapidocr_web/desktop_usage/index.html | 4 +- docs/install_usage/rapidocr_web/index.html | 4 +- .../rapidocr_web/nuitka_package/index.html | 4 +- .../rapidocr_web/ocrweb_multi/index.html | 4 +- .../rapidocr_web/pyinstaller/index.html | 4 +- .../rapidocr_web/rapidocr_web/index.html | 4 +- docs/online_demo/index.html | 4 +- docs/other_programing_lan/index.html | 4 +- docs/overview/index.html | 4 +- docs/quickstart/index.html | 16 ++-- .../derivatives_projects/index.html | 4 +- docs/related_projects/index.html | 4 +- .../related_projects/index.html | 4 +- docs/sponsor/index.html | 4 +- index.xml | 2 +- ...6b2f_17642_filter_18385201140982992681.png | Bin 0 -> 38397 bytes ...66b2f_17642_filter_7835501747438213800.png | Bin 31399 -> 0 bytes sitemap.xml | 4 +- 53 files changed, 193 insertions(+), 193 deletions(-) create mode 100644 opengraph/card-base-2_hu06b1a92291a380a0d2e0ec03dab66b2f_17642_filter_18385201140982992681.png delete mode 100644 opengraph/card-base-2_hu06b1a92291a380a0d2e0ec03dab66b2f_17642_filter_7835501747438213800.png diff --git a/docs/about_model/convert_model/index.html b/docs/about_model/convert_model/index.html index 5ca7ee22..f5afc075 100644 --- a/docs/about_model/convert_model/index.html +++ b/docs/about_model/convert_model/index.html @@ -318,7 +318,7 @@ -
  • 不同版本模型之间比较
  • +
  • Benchmark: 不同版本模型之间比较
  • @@ -1541,7 +1541,7 @@

    不同版本模型之间比较 +
  • Benchmark: 不同版本模型之间比较
  • @@ -663,7 +663,7 @@

    -

    不同版本模型之间比较

    +

    Benchmark: 不同版本模型之间比较

    @@ -1459,7 +1459,7 @@

    { id: 27 , href: "\/RapidOCRDocs\/docs\/about_model\/model_summary\/", - title: "不同版本模型之间比较", + title: "Benchmark: 不同版本模型之间比较", description: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.", content: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.onnx release/v2.7 10M 0.5655 0.9261 0.7458 0.0218 ch_PP-OCRv4_rec_server_infer.onnx release/v2.7 86M 0.6310 0.9382 0.7846 0.1622 ch_PP-OCRv3_rec_infer.onnx release/v2.6 10M 0.5893 0.9209 0.7551 0.0183 ch_PP-OCRv2_rec_infer.onnx release/v2.3 8.0M 0.4881 0.9029 0.6955 0.0193 ch_ppocr_mobile_v2.0_rec_infer.onnx release/v2.0 4.3M 0.5595 0.8979 0.7287 0.0045 指标说明 link Exact Match (精确匹配准确率) Char Match (字符级准确率) Score(两者综合) $$ Exact\\ Match = \\frac{1}{N}\\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = \\begin{cases} 1 \u0026 \\text{if } p_{i} = g_{i} \\ 0 \u0026 \\text{otherwise } \\end{cases} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $$ Char\\ Match = 1 - \\frac{1}{N} \\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = 1 - NL(p_{i}, g_{i}) $$\n$$ NL(p_{i}, g_{i}) = \\frac{Levenshtein(p_{i}, g_{i})}{\\max \\big(len(p_{i}), len(g_{i}) \\big)} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $Levenshtein(x, y)$: 求字符串 $x$ 和字符串 $y$ 的编辑距离 $max(x, y)$: 求 $x$ 和 $y$ 的最大值 $len(x)$: 求所给字符串 $x$ 的长度 $$ Score = \\frac{1}{2}(Exact\\ Match + Char\\ Match) $$\n" } diff --git a/docs/about_model/index.xml b/docs/about_model/index.xml index f6459759..d31ec4b8 100644 --- a/docs/about_model/index.xml +++ b/docs/about_model/index.xml @@ -8,7 +8,7 @@ en-us Tue, 22 Nov 2022 12:36:15 +0000 - 不同版本模型之间比较 + Benchmark: 不同版本模型之间比较 https://rapidai.github.io/RapidOCRDocs/docs/about_model/model_summary/ Thu, 29 Sep 2022 00:00:00 +0000 diff --git a/docs/about_model/model_summary/index.html b/docs/about_model/model_summary/index.html index 022e0da6..fc3ce7f1 100644 --- a/docs/about_model/model_summary/index.html +++ b/docs/about_model/model_summary/index.html @@ -18,7 +18,7 @@ - 不同版本模型之间比较 | RapidOCR Documentation + Benchmark: 不同版本模型之间比较 | RapidOCR Documentation @@ -32,16 +32,16 @@ - + - + - - - + + + @@ -343,7 +343,7 @@ -
  • 不同版本模型之间比较
  • +
  • Benchmark: 不同版本模型之间比较
  • @@ -654,7 +654,7 @@ @@ -714,7 +714,7 @@

    - 不同版本模型之间比较 + Benchmark: 不同版本模型之间比较

    @@ -940,20 +940,20 @@

    指标说明 Exact Match (精确匹配准确率) + id="bcdafeTab" data-bs-toggle="tab" data-bs-target="#bcdafe" + type="button" role="tab" aria-controls="bcdafe" aria-selected="true">Exact Match (精确匹配准确率) Char Match (字符级准确率) + id="dfbaceTab" data-bs-toggle="tab" data-bs-target="#dfbace" + type="button" role="tab" aria-controls="dfbace" aria-selected="true">Char Match (字符级准确率) Score(两者综合) + id="bfcadeTab" data-bs-toggle="tab" data-bs-target="#bfcade" + type="button" role="tab" aria-controls="bfcade" aria-selected="true">Score(两者综合) @@ -969,7 +969,7 @@

    指标说明 +

    $$ Exact\ Match = \frac{1}{N}\sum_{i=0}^{N} s(p_{i}, g_{i}) @@ -994,7 +994,7 @@

    指标说明 +

    $$ Char\ Match = 1 - \frac{1}{N} \sum_{i=0}^{N} s(p_{i}, g_{i}) @@ -1022,7 +1022,7 @@

    指标说明 +

    $$ Score = \frac{1}{2}(Exact\ Match + Char\ Match) @@ -1052,7 +1052,7 @@

    指标说明 @@ -1859,7 +1859,7 @@

    指标说明 不同版本模型之间比较 +
  • Benchmark: 不同版本模型之间比较
  • @@ -763,7 +763,7 @@

    -

    navigate_before 不同版本模型之间比较

    +

    navigate_before Benchmark: 不同版本模型之间比较

    @@ -1531,7 +1531,7 @@

    不同版本模型之间比较 +
  • Benchmark: 不同版本模型之间比较
  • @@ -1686,7 +1686,7 @@

    情 { id: 27 , href: "\/RapidOCRDocs\/docs\/about_model\/model_summary\/", - title: "不同版本模型之间比较", + title: "Benchmark: 不同版本模型之间比较", description: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.", content: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.onnx release/v2.7 10M 0.5655 0.9261 0.7458 0.0218 ch_PP-OCRv4_rec_server_infer.onnx release/v2.7 86M 0.6310 0.9382 0.7846 0.1622 ch_PP-OCRv3_rec_infer.onnx release/v2.6 10M 0.5893 0.9209 0.7551 0.0183 ch_PP-OCRv2_rec_infer.onnx release/v2.3 8.0M 0.4881 0.9029 0.6955 0.0193 ch_ppocr_mobile_v2.0_rec_infer.onnx release/v2.0 4.3M 0.5595 0.8979 0.7287 0.0045 指标说明 link Exact Match (精确匹配准确率) Char Match (字符级准确率) Score(两者综合) $$ Exact\\ Match = \\frac{1}{N}\\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = \\begin{cases} 1 \u0026 \\text{if } p_{i} = g_{i} \\ 0 \u0026 \\text{otherwise } \\end{cases} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $$ Char\\ Match = 1 - \\frac{1}{N} \\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = 1 - NL(p_{i}, g_{i}) $$\n$$ NL(p_{i}, g_{i}) = \\frac{Levenshtein(p_{i}, g_{i})}{\\max \\big(len(p_{i}), len(g_{i}) \\big)} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $Levenshtein(x, y)$: 求字符串 $x$ 和字符串 $y$ 的编辑距离 $max(x, y)$: 求 $x$ 和 $y$ 的最大值 $len(x)$: 求所给字符串 $x$ 的长度 $$ Score = \\frac{1}{2}(Exact\\ Match + Char\\ Match) $$\n" } diff --git a/docs/blog/02_config_parameter/index.html b/docs/blog/02_config_parameter/index.html index bd6b1ec5..9fd56395 100644 --- a/docs/blog/02_config_parameter/index.html +++ b/docs/blog/02_config_parameter/index.html @@ -318,7 +318,7 @@ -
  • 不同版本模型之间比较
  • +
  • Benchmark: 不同版本模型之间比较
  • @@ -1822,7 +1822,7 @@

    Rec部分 不同版本模型之间比较 +
  • Benchmark: 不同版本模型之间比较
  • @@ -1524,7 +1524,7 @@

    { id: 27 , href: "\/RapidOCRDocs\/docs\/about_model\/model_summary\/", - title: "不同版本模型之间比较", + title: "Benchmark: 不同版本模型之间比较", description: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.", content: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.onnx release/v2.7 10M 0.5655 0.9261 0.7458 0.0218 ch_PP-OCRv4_rec_server_infer.onnx release/v2.7 86M 0.6310 0.9382 0.7846 0.1622 ch_PP-OCRv3_rec_infer.onnx release/v2.6 10M 0.5893 0.9209 0.7551 0.0183 ch_PP-OCRv2_rec_infer.onnx release/v2.3 8.0M 0.4881 0.9029 0.6955 0.0193 ch_ppocr_mobile_v2.0_rec_infer.onnx release/v2.0 4.3M 0.5595 0.8979 0.7287 0.0045 指标说明 link Exact Match (精确匹配准确率) Char Match (字符级准确率) Score(两者综合) $$ Exact\\ Match = \\frac{1}{N}\\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = \\begin{cases} 1 \u0026 \\text{if } p_{i} = g_{i} \\ 0 \u0026 \\text{otherwise } \\end{cases} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $$ Char\\ Match = 1 - \\frac{1}{N} \\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = 1 - NL(p_{i}, g_{i}) $$\n$$ NL(p_{i}, g_{i}) = \\frac{Levenshtein(p_{i}, g_{i})}{\\max \\big(len(p_{i}), len(g_{i}) \\big)} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $Levenshtein(x, y)$: 求字符串 $x$ 和字符串 $y$ 的编辑距离 $max(x, y)$: 求 $x$ 和 $y$ 的最大值 $len(x)$: 求所给字符串 $x$ 的长度 $$ Score = \\frac{1}{2}(Exact\\ Match + Char\\ Match) $$\n" } diff --git a/docs/blog/04_inference_summary/index.html b/docs/blog/04_inference_summary/index.html index 2df2f84c..8623b166 100644 --- a/docs/blog/04_inference_summary/index.html +++ b/docs/blog/04_inference_summary/index.html @@ -320,7 +320,7 @@ -
  • 不同版本模型之间比较
  • +
  • Benchmark: 不同版本模型之间比较
  • @@ -1592,7 +1592,7 @@

    不同版本模型之间比较 +
  • Benchmark: 不同版本模型之间比较
  • @@ -1621,7 +1621,7 @@

    获取字典内容 不同版本模型之间比较 +
  • Benchmark: 不同版本模型之间比较
  • @@ -1604,7 +1604,7 @@

    3. 使用该模型 不同版本模型之间比较 +
  • Benchmark: 不同版本模型之间比较
  • @@ -1510,7 +1510,7 @@

    { id: 27 , href: "\/RapidOCRDocs\/docs\/about_model\/model_summary\/", - title: "不同版本模型之间比较", + title: "Benchmark: 不同版本模型之间比较", description: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.", content: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.onnx release/v2.7 10M 0.5655 0.9261 0.7458 0.0218 ch_PP-OCRv4_rec_server_infer.onnx release/v2.7 86M 0.6310 0.9382 0.7846 0.1622 ch_PP-OCRv3_rec_infer.onnx release/v2.6 10M 0.5893 0.9209 0.7551 0.0183 ch_PP-OCRv2_rec_infer.onnx release/v2.3 8.0M 0.4881 0.9029 0.6955 0.0193 ch_ppocr_mobile_v2.0_rec_infer.onnx release/v2.0 4.3M 0.5595 0.8979 0.7287 0.0045 指标说明 link Exact Match (精确匹配准确率) Char Match (字符级准确率) Score(两者综合) $$ Exact\\ Match = \\frac{1}{N}\\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = \\begin{cases} 1 \u0026 \\text{if } p_{i} = g_{i} \\ 0 \u0026 \\text{otherwise } \\end{cases} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $$ Char\\ Match = 1 - \\frac{1}{N} \\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = 1 - NL(p_{i}, g_{i}) $$\n$$ NL(p_{i}, g_{i}) = \\frac{Levenshtein(p_{i}, g_{i})}{\\max \\big(len(p_{i}), len(g_{i}) \\big)} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $Levenshtein(x, y)$: 求字符串 $x$ 和字符串 $y$ 的编辑距离 $max(x, y)$: 求 $x$ 和 $y$ 的最大值 $len(x)$: 求所给字符串 $x$ 的长度 $$ Score = \\frac{1}{2}(Exact\\ Match + Char\\ Match) $$\n" } diff --git a/docs/business_support/index.html b/docs/business_support/index.html index 6465f0a6..bd7b3f34 100644 --- a/docs/business_support/index.html +++ b/docs/business_support/index.html @@ -318,7 +318,7 @@ -
  • 不同版本模型之间比较
  • +
  • Benchmark: 不同版本模型之间比较
  • @@ -1531,7 +1531,7 @@

    服务三:国产操作系 { id: 27 , href: "\/RapidOCRDocs\/docs\/about_model\/model_summary\/", - title: "不同版本模型之间比较", + title: "Benchmark: 不同版本模型之间比较", description: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.", content: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.onnx release/v2.7 10M 0.5655 0.9261 0.7458 0.0218 ch_PP-OCRv4_rec_server_infer.onnx release/v2.7 86M 0.6310 0.9382 0.7846 0.1622 ch_PP-OCRv3_rec_infer.onnx release/v2.6 10M 0.5893 0.9209 0.7551 0.0183 ch_PP-OCRv2_rec_infer.onnx release/v2.3 8.0M 0.4881 0.9029 0.6955 0.0193 ch_ppocr_mobile_v2.0_rec_infer.onnx release/v2.0 4.3M 0.5595 0.8979 0.7287 0.0045 指标说明 link Exact Match (精确匹配准确率) Char Match (字符级准确率) Score(两者综合) $$ Exact\\ Match = \\frac{1}{N}\\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = \\begin{cases} 1 \u0026 \\text{if } p_{i} = g_{i} \\ 0 \u0026 \\text{otherwise } \\end{cases} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $$ Char\\ Match = 1 - \\frac{1}{N} \\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = 1 - NL(p_{i}, g_{i}) $$\n$$ NL(p_{i}, g_{i}) = \\frac{Levenshtein(p_{i}, g_{i})}{\\max \\big(len(p_{i}), len(g_{i}) \\big)} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $Levenshtein(x, y)$: 求字符串 $x$ 和字符串 $y$ 的编辑距离 $max(x, y)$: 求 $x$ 和 $y$ 的最大值 $len(x)$: 求所给字符串 $x$ 的长度 $$ Score = \\frac{1}{2}(Exact\\ Match + Char\\ Match) $$\n" } diff --git a/docs/changelog/index.html b/docs/changelog/index.html index 81351c2c..2b07dd22 100644 --- a/docs/changelog/index.html +++ b/docs/changelog/index.html @@ -316,7 +316,7 @@ -
  • 不同版本模型之间比较
  • +
  • Benchmark: 不同版本模型之间比较
  • @@ -1476,7 +1476,7 @@

    { id: 27 , href: "\/RapidOCRDocs\/docs\/about_model\/model_summary\/", - title: "不同版本模型之间比较", + title: "Benchmark: 不同版本模型之间比较", description: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.", content: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.onnx release/v2.7 10M 0.5655 0.9261 0.7458 0.0218 ch_PP-OCRv4_rec_server_infer.onnx release/v2.7 86M 0.6310 0.9382 0.7846 0.1622 ch_PP-OCRv3_rec_infer.onnx release/v2.6 10M 0.5893 0.9209 0.7551 0.0183 ch_PP-OCRv2_rec_infer.onnx release/v2.3 8.0M 0.4881 0.9029 0.6955 0.0193 ch_ppocr_mobile_v2.0_rec_infer.onnx release/v2.0 4.3M 0.5595 0.8979 0.7287 0.0045 指标说明 link Exact Match (精确匹配准确率) Char Match (字符级准确率) Score(两者综合) $$ Exact\\ Match = \\frac{1}{N}\\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = \\begin{cases} 1 \u0026 \\text{if } p_{i} = g_{i} \\ 0 \u0026 \\text{otherwise } \\end{cases} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $$ Char\\ Match = 1 - \\frac{1}{N} \\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = 1 - NL(p_{i}, g_{i}) $$\n$$ NL(p_{i}, g_{i}) = \\frac{Levenshtein(p_{i}, g_{i})}{\\max \\big(len(p_{i}), len(g_{i}) \\big)} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $Levenshtein(x, y)$: 求字符串 $x$ 和字符串 $y$ 的编辑距离 $max(x, y)$: 求 $x$ 和 $y$ 的最大值 $len(x)$: 求所给字符串 $x$ 的长度 $$ Score = \\frac{1}{2}(Exact\\ Match + Char\\ Match) $$\n" } diff --git a/docs/changelog/rapidocr/index.html b/docs/changelog/rapidocr/index.html index 2c6b8f01..c3b91026 100644 --- a/docs/changelog/rapidocr/index.html +++ b/docs/changelog/rapidocr/index.html @@ -326,7 +326,7 @@ -
  • 不同版本模型之间比较
  • +
  • Benchmark: 不同版本模型之间比较
  • @@ -1835,7 +1835,7 @@

    2021-03-24 udpate: 不同版本模型之间比较 +
  • Benchmark: 不同版本模型之间比较
  • @@ -1527,7 +1527,7 @@

    🍜2023-05-22 api update: 不同版本模型之间比较 +
  • Benchmark: 不同版本模型之间比较
  • @@ -1563,7 +1563,7 @@

    2023-10-23 v1.3.9 update: 不同版本模型之间比较 +
  • Benchmark: 不同版本模型之间比较
  • @@ -1546,7 +1546,7 @@

    🏸2023-04-16 ocrweb v0.1.1 update: 不同版本模型之间比较 +
  • Benchmark: 不同版本模型之间比较
  • @@ -1536,7 +1536,7 @@

    (推荐) 加入QQ频道 不同版本模型之间比较 +
  • Benchmark: 不同版本模型之间比较
  • @@ -1584,7 +1584,7 @@

    Q: 边缘总有一行 { id: 27 , href: "\/RapidOCRDocs\/docs\/about_model\/model_summary\/", - title: "不同版本模型之间比较", + title: "Benchmark: 不同版本模型之间比较", description: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.", content: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.onnx release/v2.7 10M 0.5655 0.9261 0.7458 0.0218 ch_PP-OCRv4_rec_server_infer.onnx release/v2.7 86M 0.6310 0.9382 0.7846 0.1622 ch_PP-OCRv3_rec_infer.onnx release/v2.6 10M 0.5893 0.9209 0.7551 0.0183 ch_PP-OCRv2_rec_infer.onnx release/v2.3 8.0M 0.4881 0.9029 0.6955 0.0193 ch_ppocr_mobile_v2.0_rec_infer.onnx release/v2.0 4.3M 0.5595 0.8979 0.7287 0.0045 指标说明 link Exact Match (精确匹配准确率) Char Match (字符级准确率) Score(两者综合) $$ Exact\\ Match = \\frac{1}{N}\\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = \\begin{cases} 1 \u0026 \\text{if } p_{i} = g_{i} \\ 0 \u0026 \\text{otherwise } \\end{cases} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $$ Char\\ Match = 1 - \\frac{1}{N} \\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = 1 - NL(p_{i}, g_{i}) $$\n$$ NL(p_{i}, g_{i}) = \\frac{Levenshtein(p_{i}, g_{i})}{\\max \\big(len(p_{i}), len(g_{i}) \\big)} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $Levenshtein(x, y)$: 求字符串 $x$ 和字符串 $y$ 的编辑距离 $max(x, y)$: 求 $x$ 和 $y$ 的最大值 $len(x)$: 求所给字符串 $x$ 的长度 $$ Score = \\frac{1}{2}(Exact\\ Match + Char\\ Match) $$\n" } diff --git a/docs/index.html b/docs/index.html index f4327f00..a236f437 100644 --- a/docs/index.html +++ b/docs/index.html @@ -316,7 +316,7 @@ -
  • 不同版本模型之间比较
  • +
  • Benchmark: 不同版本模型之间比较
  • @@ -1638,7 +1638,7 @@

    { id: 27 , href: "\/RapidOCRDocs\/docs\/about_model\/model_summary\/", - title: "不同版本模型之间比较", + title: "Benchmark: 不同版本模型之间比较", description: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.", content: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.onnx release/v2.7 10M 0.5655 0.9261 0.7458 0.0218 ch_PP-OCRv4_rec_server_infer.onnx release/v2.7 86M 0.6310 0.9382 0.7846 0.1622 ch_PP-OCRv3_rec_infer.onnx release/v2.6 10M 0.5893 0.9209 0.7551 0.0183 ch_PP-OCRv2_rec_infer.onnx release/v2.3 8.0M 0.4881 0.9029 0.6955 0.0193 ch_ppocr_mobile_v2.0_rec_infer.onnx release/v2.0 4.3M 0.5595 0.8979 0.7287 0.0045 指标说明 link Exact Match (精确匹配准确率) Char Match (字符级准确率) Score(两者综合) $$ Exact\\ Match = \\frac{1}{N}\\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = \\begin{cases} 1 \u0026 \\text{if } p_{i} = g_{i} \\ 0 \u0026 \\text{otherwise } \\end{cases} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $$ Char\\ Match = 1 - \\frac{1}{N} \\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = 1 - NL(p_{i}, g_{i}) $$\n$$ NL(p_{i}, g_{i}) = \\frac{Levenshtein(p_{i}, g_{i})}{\\max \\big(len(p_{i}), len(g_{i}) \\big)} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $Levenshtein(x, y)$: 求字符串 $x$ 和字符串 $y$ 的编辑距离 $max(x, y)$: 求 $x$ 和 $y$ 的最大值 $len(x)$: 求所给字符串 $x$ 的长度 $$ Score = \\frac{1}{2}(Exact\\ Match + Char\\ Match) $$\n" } diff --git a/docs/inference_engine/index.html b/docs/inference_engine/index.html index a7bf9987..c1ecd6bf 100644 --- a/docs/inference_engine/index.html +++ b/docs/inference_engine/index.html @@ -316,7 +316,7 @@ -
  • 不同版本模型之间比较
  • +
  • Benchmark: 不同版本模型之间比较
  • @@ -1442,7 +1442,7 @@

    { id: 27 , href: "\/RapidOCRDocs\/docs\/about_model\/model_summary\/", - title: "不同版本模型之间比较", + title: "Benchmark: 不同版本模型之间比较", description: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.", content: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.onnx release/v2.7 10M 0.5655 0.9261 0.7458 0.0218 ch_PP-OCRv4_rec_server_infer.onnx release/v2.7 86M 0.6310 0.9382 0.7846 0.1622 ch_PP-OCRv3_rec_infer.onnx release/v2.6 10M 0.5893 0.9209 0.7551 0.0183 ch_PP-OCRv2_rec_infer.onnx release/v2.3 8.0M 0.4881 0.9029 0.6955 0.0193 ch_ppocr_mobile_v2.0_rec_infer.onnx release/v2.0 4.3M 0.5595 0.8979 0.7287 0.0045 指标说明 link Exact Match (精确匹配准确率) Char Match (字符级准确率) Score(两者综合) $$ Exact\\ Match = \\frac{1}{N}\\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = \\begin{cases} 1 \u0026 \\text{if } p_{i} = g_{i} \\ 0 \u0026 \\text{otherwise } \\end{cases} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $$ Char\\ Match = 1 - \\frac{1}{N} \\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = 1 - NL(p_{i}, g_{i}) $$\n$$ NL(p_{i}, g_{i}) = \\frac{Levenshtein(p_{i}, g_{i})}{\\max \\big(len(p_{i}), len(g_{i}) \\big)} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $Levenshtein(x, y)$: 求字符串 $x$ 和字符串 $y$ 的编辑距离 $max(x, y)$: 求 $x$ 和 $y$ 的最大值 $len(x)$: 求所给字符串 $x$ 的长度 $$ Score = \\frac{1}{2}(Exact\\ Match + Char\\ Match) $$\n" } diff --git a/docs/inference_engine/onnxruntime/index.html b/docs/inference_engine/onnxruntime/index.html index af4864c1..e075a652 100644 --- a/docs/inference_engine/onnxruntime/index.html +++ b/docs/inference_engine/onnxruntime/index.html @@ -316,7 +316,7 @@ -
  • 不同版本模型之间比较
  • +
  • Benchmark: 不同版本模型之间比较
  • @@ -1450,7 +1450,7 @@

    { id: 27 , href: "\/RapidOCRDocs\/docs\/about_model\/model_summary\/", - title: "不同版本模型之间比较", + title: "Benchmark: 不同版本模型之间比较", description: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.", content: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.onnx release/v2.7 10M 0.5655 0.9261 0.7458 0.0218 ch_PP-OCRv4_rec_server_infer.onnx release/v2.7 86M 0.6310 0.9382 0.7846 0.1622 ch_PP-OCRv3_rec_infer.onnx release/v2.6 10M 0.5893 0.9209 0.7551 0.0183 ch_PP-OCRv2_rec_infer.onnx release/v2.3 8.0M 0.4881 0.9029 0.6955 0.0193 ch_ppocr_mobile_v2.0_rec_infer.onnx release/v2.0 4.3M 0.5595 0.8979 0.7287 0.0045 指标说明 link Exact Match (精确匹配准确率) Char Match (字符级准确率) Score(两者综合) $$ Exact\\ Match = \\frac{1}{N}\\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = \\begin{cases} 1 \u0026 \\text{if } p_{i} = g_{i} \\ 0 \u0026 \\text{otherwise } \\end{cases} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $$ Char\\ Match = 1 - \\frac{1}{N} \\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = 1 - NL(p_{i}, g_{i}) $$\n$$ NL(p_{i}, g_{i}) = \\frac{Levenshtein(p_{i}, g_{i})}{\\max \\big(len(p_{i}), len(g_{i}) \\big)} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $Levenshtein(x, y)$: 求字符串 $x$ 和字符串 $y$ 的编辑距离 $max(x, y)$: 求 $x$ 和 $y$ 的最大值 $len(x)$: 求所给字符串 $x$ 的长度 $$ Score = \\frac{1}{2}(Exact\\ Match + Char\\ Match) $$\n" } diff --git a/docs/inference_engine/onnxruntime/infer_optim/index.html b/docs/inference_engine/onnxruntime/infer_optim/index.html index 22956c9b..359e2306 100644 --- a/docs/inference_engine/onnxruntime/infer_optim/index.html +++ b/docs/inference_engine/onnxruntime/infer_optim/index.html @@ -326,7 +326,7 @@ -
  • 不同版本模型之间比较
  • +
  • Benchmark: 不同版本模型之间比较
  • @@ -1867,7 +1867,7 @@

    参考资料 不同版本模型之间比较 +
  • Benchmark: 不同版本模型之间比较
  • @@ -1591,7 +1591,7 @@

    相关对比表格 不同版本模型之间比较 +
  • Benchmark: 不同版本模型之间比较
  • @@ -1450,7 +1450,7 @@

    { id: 27 , href: "\/RapidOCRDocs\/docs\/about_model\/model_summary\/", - title: "不同版本模型之间比较", + title: "Benchmark: 不同版本模型之间比较", description: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.", content: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.onnx release/v2.7 10M 0.5655 0.9261 0.7458 0.0218 ch_PP-OCRv4_rec_server_infer.onnx release/v2.7 86M 0.6310 0.9382 0.7846 0.1622 ch_PP-OCRv3_rec_infer.onnx release/v2.6 10M 0.5893 0.9209 0.7551 0.0183 ch_PP-OCRv2_rec_infer.onnx release/v2.3 8.0M 0.4881 0.9029 0.6955 0.0193 ch_ppocr_mobile_v2.0_rec_infer.onnx release/v2.0 4.3M 0.5595 0.8979 0.7287 0.0045 指标说明 link Exact Match (精确匹配准确率) Char Match (字符级准确率) Score(两者综合) $$ Exact\\ Match = \\frac{1}{N}\\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = \\begin{cases} 1 \u0026 \\text{if } p_{i} = g_{i} \\ 0 \u0026 \\text{otherwise } \\end{cases} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $$ Char\\ Match = 1 - \\frac{1}{N} \\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = 1 - NL(p_{i}, g_{i}) $$\n$$ NL(p_{i}, g_{i}) = \\frac{Levenshtein(p_{i}, g_{i})}{\\max \\big(len(p_{i}), len(g_{i}) \\big)} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $Levenshtein(x, y)$: 求字符串 $x$ 和字符串 $y$ 的编辑距离 $max(x, y)$: 求 $x$ 和 $y$ 的最大值 $len(x)$: 求所给字符串 $x$ 的长度 $$ Score = \\frac{1}{2}(Exact\\ Match + Char\\ Match) $$\n" } diff --git a/docs/inference_engine/openvino/infer-gpu/index.html b/docs/inference_engine/openvino/infer-gpu/index.html index cfd2a3f9..e8550e6f 100644 --- a/docs/inference_engine/openvino/infer-gpu/index.html +++ b/docs/inference_engine/openvino/infer-gpu/index.html @@ -318,7 +318,7 @@ -
  • 不同版本模型之间比较
  • +
  • Benchmark: 不同版本模型之间比较
  • @@ -745,7 +745,7 @@

    -

    不同版本模型之间比较 navigate_next

    +

    Benchmark: 不同版本模型之间比较 navigate_next

    @@ -1502,7 +1502,7 @@

    { id: 27 , href: "\/RapidOCRDocs\/docs\/about_model\/model_summary\/", - title: "不同版本模型之间比较", + title: "Benchmark: 不同版本模型之间比较", description: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.", content: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.onnx release/v2.7 10M 0.5655 0.9261 0.7458 0.0218 ch_PP-OCRv4_rec_server_infer.onnx release/v2.7 86M 0.6310 0.9382 0.7846 0.1622 ch_PP-OCRv3_rec_infer.onnx release/v2.6 10M 0.5893 0.9209 0.7551 0.0183 ch_PP-OCRv2_rec_infer.onnx release/v2.3 8.0M 0.4881 0.9029 0.6955 0.0193 ch_ppocr_mobile_v2.0_rec_infer.onnx release/v2.0 4.3M 0.5595 0.8979 0.7287 0.0045 指标说明 link Exact Match (精确匹配准确率) Char Match (字符级准确率) Score(两者综合) $$ Exact\\ Match = \\frac{1}{N}\\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = \\begin{cases} 1 \u0026 \\text{if } p_{i} = g_{i} \\ 0 \u0026 \\text{otherwise } \\end{cases} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $$ Char\\ Match = 1 - \\frac{1}{N} \\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = 1 - NL(p_{i}, g_{i}) $$\n$$ NL(p_{i}, g_{i}) = \\frac{Levenshtein(p_{i}, g_{i})}{\\max \\big(len(p_{i}), len(g_{i}) \\big)} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $Levenshtein(x, y)$: 求字符串 $x$ 和字符串 $y$ 的编辑距离 $max(x, y)$: 求 $x$ 和 $y$ 的最大值 $len(x)$: 求所给字符串 $x$ 的长度 $$ Score = \\frac{1}{2}(Exact\\ Match + Char\\ Match) $$\n" } diff --git a/docs/inference_engine/openvino/infer/index.html b/docs/inference_engine/openvino/infer/index.html index 4a43effe..70f8c36b 100644 --- a/docs/inference_engine/openvino/infer/index.html +++ b/docs/inference_engine/openvino/infer/index.html @@ -326,7 +326,7 @@ -
  • 不同版本模型之间比较
  • +
  • Benchmark: 不同版本模型之间比较
  • @@ -1754,7 +1754,7 @@

    OpenVINO与ONNXRuntime { id: 27 , href: "\/RapidOCRDocs\/docs\/about_model\/model_summary\/", - title: "不同版本模型之间比较", + title: "Benchmark: 不同版本模型之间比较", description: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.", content: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.onnx release/v2.7 10M 0.5655 0.9261 0.7458 0.0218 ch_PP-OCRv4_rec_server_infer.onnx release/v2.7 86M 0.6310 0.9382 0.7846 0.1622 ch_PP-OCRv3_rec_infer.onnx release/v2.6 10M 0.5893 0.9209 0.7551 0.0183 ch_PP-OCRv2_rec_infer.onnx release/v2.3 8.0M 0.4881 0.9029 0.6955 0.0193 ch_ppocr_mobile_v2.0_rec_infer.onnx release/v2.0 4.3M 0.5595 0.8979 0.7287 0.0045 指标说明 link Exact Match (精确匹配准确率) Char Match (字符级准确率) Score(两者综合) $$ Exact\\ Match = \\frac{1}{N}\\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = \\begin{cases} 1 \u0026 \\text{if } p_{i} = g_{i} \\ 0 \u0026 \\text{otherwise } \\end{cases} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $$ Char\\ Match = 1 - \\frac{1}{N} \\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = 1 - NL(p_{i}, g_{i}) $$\n$$ NL(p_{i}, g_{i}) = \\frac{Levenshtein(p_{i}, g_{i})}{\\max \\big(len(p_{i}), len(g_{i}) \\big)} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $Levenshtein(x, y)$: 求字符串 $x$ 和字符串 $y$ 的编辑距离 $max(x, y)$: 求 $x$ 和 $y$ 的最大值 $len(x)$: 求所给字符串 $x$ 的长度 $$ Score = \\frac{1}{2}(Exact\\ Match + Char\\ Match) $$\n" } diff --git a/docs/install_usage/index.html b/docs/install_usage/index.html index 81e110a3..0c3e9fa7 100644 --- a/docs/install_usage/index.html +++ b/docs/install_usage/index.html @@ -316,7 +316,7 @@ -
  • 不同版本模型之间比较
  • +
  • Benchmark: 不同版本模型之间比较
  • @@ -1476,7 +1476,7 @@

    { id: 27 , href: "\/RapidOCRDocs\/docs\/about_model\/model_summary\/", - title: "不同版本模型之间比较", + title: "Benchmark: 不同版本模型之间比较", description: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.", content: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.onnx release/v2.7 10M 0.5655 0.9261 0.7458 0.0218 ch_PP-OCRv4_rec_server_infer.onnx release/v2.7 86M 0.6310 0.9382 0.7846 0.1622 ch_PP-OCRv3_rec_infer.onnx release/v2.6 10M 0.5893 0.9209 0.7551 0.0183 ch_PP-OCRv2_rec_infer.onnx release/v2.3 8.0M 0.4881 0.9029 0.6955 0.0193 ch_ppocr_mobile_v2.0_rec_infer.onnx release/v2.0 4.3M 0.5595 0.8979 0.7287 0.0045 指标说明 link Exact Match (精确匹配准确率) Char Match (字符级准确率) Score(两者综合) $$ Exact\\ Match = \\frac{1}{N}\\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = \\begin{cases} 1 \u0026 \\text{if } p_{i} = g_{i} \\ 0 \u0026 \\text{otherwise } \\end{cases} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $$ Char\\ Match = 1 - \\frac{1}{N} \\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = 1 - NL(p_{i}, g_{i}) $$\n$$ NL(p_{i}, g_{i}) = \\frac{Levenshtein(p_{i}, g_{i})}{\\max \\big(len(p_{i}), len(g_{i}) \\big)} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $Levenshtein(x, y)$: 求字符串 $x$ 和字符串 $y$ 的编辑距离 $max(x, y)$: 求 $x$ 和 $y$ 的最大值 $len(x)$: 求所给字符串 $x$ 的长度 $$ Score = \\frac{1}{2}(Exact\\ Match + Char\\ Match) $$\n" } diff --git a/docs/install_usage/rapidocr/cli/index.html b/docs/install_usage/rapidocr/cli/index.html index dbd2b218..798095c6 100644 --- a/docs/install_usage/rapidocr/cli/index.html +++ b/docs/install_usage/rapidocr/cli/index.html @@ -320,7 +320,7 @@ -
  • 不同版本模型之间比较
  • +
  • Benchmark: 不同版本模型之间比较
  • @@ -813,26 +813,26 @@

    使用示例 图像预测 + id="cfabdeTab" data-bs-toggle="tab" data-bs-target="#cfabde" + type="button" role="tab" aria-controls="cfabde" aria-selected="true">图像预测 只使用检测 + id="dbeacfTab" data-bs-toggle="tab" data-bs-target="#dbeacf" + type="button" role="tab" aria-controls="dbeacf" aria-selected="true">只使用检测 只使用识别 + id="aebfcdTab" data-bs-toggle="tab" data-bs-target="#aebfcd" + type="button" role="tab" aria-controls="aebfcd" aria-selected="true">只使用识别 可视化查看 + id="cdeabfTab" data-bs-toggle="tab" data-bs-target="#cdeabf" + type="button" role="tab" aria-controls="cdeabf" aria-selected="true">可视化查看 @@ -848,7 +848,7 @@

    使用示例 +
    @@ -881,7 +881,7 @@

    使用示例 +
    @@ -914,7 +914,7 @@

    使用示例 +
    @@ -947,7 +947,7 @@

    使用示例 +
    @@ -1803,7 +1803,7 @@

    使用示例 不同版本模型之间比较 +
  • Benchmark: 不同版本模型之间比较
  • @@ -1468,7 +1468,7 @@

    { id: 27 , href: "\/RapidOCRDocs\/docs\/about_model\/model_summary\/", - title: "不同版本模型之间比较", + title: "Benchmark: 不同版本模型之间比较", description: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.", content: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.onnx release/v2.7 10M 0.5655 0.9261 0.7458 0.0218 ch_PP-OCRv4_rec_server_infer.onnx release/v2.7 86M 0.6310 0.9382 0.7846 0.1622 ch_PP-OCRv3_rec_infer.onnx release/v2.6 10M 0.5893 0.9209 0.7551 0.0183 ch_PP-OCRv2_rec_infer.onnx release/v2.3 8.0M 0.4881 0.9029 0.6955 0.0193 ch_ppocr_mobile_v2.0_rec_infer.onnx release/v2.0 4.3M 0.5595 0.8979 0.7287 0.0045 指标说明 link Exact Match (精确匹配准确率) Char Match (字符级准确率) Score(两者综合) $$ Exact\\ Match = \\frac{1}{N}\\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = \\begin{cases} 1 \u0026 \\text{if } p_{i} = g_{i} \\ 0 \u0026 \\text{otherwise } \\end{cases} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $$ Char\\ Match = 1 - \\frac{1}{N} \\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = 1 - NL(p_{i}, g_{i}) $$\n$$ NL(p_{i}, g_{i}) = \\frac{Levenshtein(p_{i}, g_{i})}{\\max \\big(len(p_{i}), len(g_{i}) \\big)} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $Levenshtein(x, y)$: 求字符串 $x$ 和字符串 $y$ 的编辑距离 $max(x, y)$: 求 $x$ 和 $y$ 的最大值 $len(x)$: 求所给字符串 $x$ 的长度 $$ Score = \\frac{1}{2}(Exact\\ Match + Char\\ Match) $$\n" } diff --git a/docs/install_usage/rapidocr/install/index.html b/docs/install_usage/rapidocr/install/index.html index 2c086efc..f7e2fc09 100644 --- a/docs/install_usage/rapidocr/install/index.html +++ b/docs/install_usage/rapidocr/install/index.html @@ -336,7 +336,7 @@ -
  • 不同版本模型之间比较
  • +
  • Benchmark: 不同版本模型之间比较
  • @@ -1703,7 +1703,7 @@

    安装 不同版本模型之间比较 +
  • Benchmark: 不同版本模型之间比较
  • @@ -860,32 +860,32 @@

    输入 str + id="bfcaedTab" data-bs-toggle="tab" data-bs-target="#bfcaed" + type="button" role="tab" aria-controls="bfcaed" aria-selected="true">str np.ndarray + id="fdecabTab" data-bs-toggle="tab" data-bs-target="#fdecab" + type="button" role="tab" aria-controls="fdecab" aria-selected="true">np.ndarray PIL.Image.Image + id="dcbefaTab" data-bs-toggle="tab" data-bs-target="#dcbefa" + type="button" role="tab" aria-controls="dcbefa" aria-selected="true">PIL.Image.Image Bytes + id="bdafecTab" data-bs-toggle="tab" data-bs-target="#bdafec" + type="button" role="tab" aria-controls="bdafec" aria-selected="true">Bytes Path + id="bcfdeaTab" data-bs-toggle="tab" data-bs-target="#bcfdea" + type="button" role="tab" aria-controls="bcfdea" aria-selected="true">Path @@ -901,7 +901,7 @@

    输入 +
    @@ -941,7 +941,7 @@

    输入 +
    @@ -981,7 +981,7 @@

    输入 +
    @@ -1021,7 +1021,7 @@

    输入 +
    @@ -1063,7 +1063,7 @@

    输入 +
    @@ -1115,38 +1115,38 @@

    输出 只有检测 + id="dfaebcTab" data-bs-toggle="tab" data-bs-target="#dfaebc" + type="button" role="tab" aria-controls="dfaebc" aria-selected="true">只有检测 只有分类 + id="fcbeadTab" data-bs-toggle="tab" data-bs-target="#fcbead" + type="button" role="tab" aria-controls="fcbead" aria-selected="true">只有分类 只有识别 + id="edbcafTab" data-bs-toggle="tab" data-bs-target="#edbcaf" + type="button" role="tab" aria-controls="edbcaf" aria-selected="true">只有识别 检测 + 识别 + id="bfadecTab" data-bs-toggle="tab" data-bs-target="#bfadec" + type="button" role="tab" aria-controls="bfadec" aria-selected="true">检测 + 识别 分类 + 识别 + id="acedbfTab" data-bs-toggle="tab" data-bs-target="#acedbf" + type="button" role="tab" aria-controls="acedbf" aria-selected="true">分类 + 识别 检测 + 分类 + 识别 + id="abcfedTab" data-bs-toggle="tab" data-bs-target="#abcfed" + type="button" role="tab" aria-controls="abcfed" aria-selected="true">检测 + 分类 + 识别 @@ -1162,7 +1162,7 @@

    输出 +
    @@ -1226,7 +1226,7 @@

    输出 +
    @@ -1289,7 +1289,7 @@

    输出 +
    @@ -1355,7 +1355,7 @@

    输出 +
    @@ -1422,7 +1422,7 @@

    输出 +
    @@ -1488,7 +1488,7 @@

    输出 +
    @@ -1578,14 +1578,14 @@

    可视化查看结果 只可视化检测 + id="ecbadfTab" data-bs-toggle="tab" data-bs-target="#ecbadf" + type="button" role="tab" aria-controls="ecbadf" aria-selected="true">只可视化检测 可视化检测和识别 + id="abcefdTab" data-bs-toggle="tab" data-bs-target="#abcefd" + type="button" role="tab" aria-controls="abcefd" aria-selected="true">可视化检测和识别 @@ -1601,7 +1601,7 @@

    可视化查看结果 +
    @@ -1647,7 +1647,7 @@

    可视化查看结果 +
    @@ -2518,7 +2518,7 @@

    可视化查看结果 不同版本模型之间比较 +
  • Benchmark: 不同版本模型之间比较
  • @@ -838,14 +838,14 @@

    Python调用 以文件方式发送POST请求 + id="cbedafTab" data-bs-toggle="tab" data-bs-target="#cbedaf" + type="button" role="tab" aria-controls="cbedaf" aria-selected="true">以文件方式发送POST请求 以base64方式发送POST请求 + id="abdecfTab" data-bs-toggle="tab" data-bs-target="#abdecf" + type="button" role="tab" aria-controls="abdecf" aria-selected="true">以base64方式发送POST请求 @@ -861,7 +861,7 @@

    Python调用 +
    @@ -903,7 +903,7 @@

    Python调用 +
    @@ -1888,7 +1888,7 @@

    API输出 不同版本模型之间比较 +
  • Benchmark: 不同版本模型之间比较
  • @@ -788,14 +788,14 @@

    使用 CPU端推理 + id="feacdbTab" data-bs-toggle="tab" data-bs-target="#feacdb" + type="button" role="tab" aria-controls="feacdb" aria-selected="true">CPU端推理 GPU端推理 + id="efbdacTab" data-bs-toggle="tab" data-bs-target="#efbdac" + type="button" role="tab" aria-controls="efbdac" aria-selected="true">GPU端推理 @@ -811,7 +811,7 @@

    使用 +

    前提是安装了CPU版的PaddlePaddle

    @@ -854,7 +854,7 @@

    使用 +

    前提是安装了GPU版的PaddlePaddle,注意在实例化RapidOCR类时,需要通过参数显式指定使用GPU。

    @@ -1753,7 +1753,7 @@

    推理速度比较 不同版本模型之间比较 +
  • Benchmark: 不同版本模型之间比较
  • @@ -1725,7 +1725,7 @@

    使用步骤 不同版本模型之间比较 +
  • Benchmark: 不同版本模型之间比较
  • @@ -1501,7 +1501,7 @@

    { id: 27 , href: "\/RapidOCRDocs\/docs\/about_model\/model_summary\/", - title: "不同版本模型之间比较", + title: "Benchmark: 不同版本模型之间比较", description: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.", content: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.onnx release/v2.7 10M 0.5655 0.9261 0.7458 0.0218 ch_PP-OCRv4_rec_server_infer.onnx release/v2.7 86M 0.6310 0.9382 0.7846 0.1622 ch_PP-OCRv3_rec_infer.onnx release/v2.6 10M 0.5893 0.9209 0.7551 0.0183 ch_PP-OCRv2_rec_infer.onnx release/v2.3 8.0M 0.4881 0.9029 0.6955 0.0193 ch_ppocr_mobile_v2.0_rec_infer.onnx release/v2.0 4.3M 0.5595 0.8979 0.7287 0.0045 指标说明 link Exact Match (精确匹配准确率) Char Match (字符级准确率) Score(两者综合) $$ Exact\\ Match = \\frac{1}{N}\\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = \\begin{cases} 1 \u0026 \\text{if } p_{i} = g_{i} \\ 0 \u0026 \\text{otherwise } \\end{cases} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $$ Char\\ Match = 1 - \\frac{1}{N} \\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = 1 - NL(p_{i}, g_{i}) $$\n$$ NL(p_{i}, g_{i}) = \\frac{Levenshtein(p_{i}, g_{i})}{\\max \\big(len(p_{i}), len(g_{i}) \\big)} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $Levenshtein(x, y)$: 求字符串 $x$ 和字符串 $y$ 的编辑距离 $max(x, y)$: 求 $x$ 和 $y$ 的最大值 $len(x)$: 求所给字符串 $x$ 的长度 $$ Score = \\frac{1}{2}(Exact\\ Match + Char\\ Match) $$\n" } diff --git a/docs/install_usage/rapidocr_web/nuitka_package/index.html b/docs/install_usage/rapidocr_web/nuitka_package/index.html index 4d1c6b02..da1d3883 100644 --- a/docs/install_usage/rapidocr_web/nuitka_package/index.html +++ b/docs/install_usage/rapidocr_web/nuitka_package/index.html @@ -332,7 +332,7 @@ -
  • 不同版本模型之间比较
  • +
  • Benchmark: 不同版本模型之间比较
  • @@ -1741,7 +1741,7 @@

    补充 不同版本模型之间比较 +
  • Benchmark: 不同版本模型之间比较
  • @@ -1696,7 +1696,7 @@

    运行步骤 不同版本模型之间比较 +
  • Benchmark: 不同版本模型之间比较
  • @@ -1499,7 +1499,7 @@

    { id: 27 , href: "\/RapidOCRDocs\/docs\/about_model\/model_summary\/", - title: "不同版本模型之间比较", + title: "Benchmark: 不同版本模型之间比较", description: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.", content: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.onnx release/v2.7 10M 0.5655 0.9261 0.7458 0.0218 ch_PP-OCRv4_rec_server_infer.onnx release/v2.7 86M 0.6310 0.9382 0.7846 0.1622 ch_PP-OCRv3_rec_infer.onnx release/v2.6 10M 0.5893 0.9209 0.7551 0.0183 ch_PP-OCRv2_rec_infer.onnx release/v2.3 8.0M 0.4881 0.9029 0.6955 0.0193 ch_ppocr_mobile_v2.0_rec_infer.onnx release/v2.0 4.3M 0.5595 0.8979 0.7287 0.0045 指标说明 link Exact Match (精确匹配准确率) Char Match (字符级准确率) Score(两者综合) $$ Exact\\ Match = \\frac{1}{N}\\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = \\begin{cases} 1 \u0026 \\text{if } p_{i} = g_{i} \\ 0 \u0026 \\text{otherwise } \\end{cases} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $$ Char\\ Match = 1 - \\frac{1}{N} \\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = 1 - NL(p_{i}, g_{i}) $$\n$$ NL(p_{i}, g_{i}) = \\frac{Levenshtein(p_{i}, g_{i})}{\\max \\big(len(p_{i}), len(g_{i}) \\big)} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $Levenshtein(x, y)$: 求字符串 $x$ 和字符串 $y$ 的编辑距离 $max(x, y)$: 求 $x$ 和 $y$ 的最大值 $len(x)$: 求所给字符串 $x$ 的长度 $$ Score = \\frac{1}{2}(Exact\\ Match + Char\\ Match) $$\n" } diff --git a/docs/install_usage/rapidocr_web/rapidocr_web/index.html b/docs/install_usage/rapidocr_web/rapidocr_web/index.html index e85c63b4..bb1c2d67 100644 --- a/docs/install_usage/rapidocr_web/rapidocr_web/index.html +++ b/docs/install_usage/rapidocr_web/rapidocr_web/index.html @@ -328,7 +328,7 @@ -
  • 不同版本模型之间比较
  • +
  • Benchmark: 不同版本模型之间比较
  • @@ -1641,7 +1641,7 @@

    使用 不同版本模型之间比较 +
  • Benchmark: 不同版本模型之间比较
  • @@ -1545,7 +1545,7 @@

    在线Demo 不同版本模型之间比较 +
  • Benchmark: 不同版本模型之间比较
  • @@ -1541,7 +1541,7 @@

    不同版本模型之间比较 +
  • Benchmark: 不同版本模型之间比较
  • @@ -1580,7 +1580,7 @@

    相关产品概览图 不同版本模型之间比较 +
  • Benchmark: 不同版本模型之间比较
  • @@ -719,14 +719,14 @@

    2. 使用 终端使用 + id="bdacefTab" data-bs-toggle="tab" data-bs-target="#bdacef" + type="button" role="tab" aria-controls="bdacef" aria-selected="true">终端使用 Python使用 + id="cefbdaTab" data-bs-toggle="tab" data-bs-target="#cefbda" + type="button" role="tab" aria-controls="cefbda" aria-selected="true">Python使用 @@ -742,7 +742,7 @@

    2. 使用 +
    @@ -775,7 +775,7 @@

    2. 使用 +
    @@ -1677,7 +1677,7 @@

    3. 查看效果 不同版本模型之间比较 +
  • Benchmark: 不同版本模型之间比较
  • @@ -1537,7 +1537,7 @@

    不同版本模型之间比较 +
  • Benchmark: 不同版本模型之间比较
  • @@ -1442,7 +1442,7 @@

    { id: 27 , href: "\/RapidOCRDocs\/docs\/about_model\/model_summary\/", - title: "不同版本模型之间比较", + title: "Benchmark: 不同版本模型之间比较", description: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.", content: "各个版本ONNX模型效果对比(仅供参考) link notifications 以下测试结果均在自己构建测试集上评测所得,不代表在其他测试集上结果也是如此。 文本检测模型 link notifications 以下表格中推理时间是基于MacBook Pro M2运行所得,不同机器会有差别,请侧重查看彼此之间的比较。 评测采用的是TextDetMetric库 + text_det_test_dataset,详情可以移步AI Studio运行查看。\n指标计算都是在相同参数下计算得来,差别仅在于模型文件不同。对应模型下载地址:link。\n模型 模型大小 Precision Recall H-mean Speed(s/img) ch_PP-OCRv4_det_infer.onnx 4.5M 0.8300 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 damo/cv_proxylessnas_ocr-detection-db-line-level_damo 5.8M 0.7666 0.8128 0.7890 0.6636 damo/cv_resnet18_ocr-detection-db-line-level_damo 47.2M 0.7749 0.8167 0.7952 0.4121 damo/cv_resnet18_ocr-detection-line-level_damo 未跑通 312M - - - - 文本识别模型 link 测试集: 自己构建中英文(168个) 输入Shape: v2: [3, 32, 320] v3~v4: [3, 48, 320] 模型 对应PaddleOCR分支 模型大小 Exact Match Char Match Score Speed(s/img) ch_PP-OCRv4_rec_infer.onnx release/v2.7 10M 0.5655 0.9261 0.7458 0.0218 ch_PP-OCRv4_rec_server_infer.onnx release/v2.7 86M 0.6310 0.9382 0.7846 0.1622 ch_PP-OCRv3_rec_infer.onnx release/v2.6 10M 0.5893 0.9209 0.7551 0.0183 ch_PP-OCRv2_rec_infer.onnx release/v2.3 8.0M 0.4881 0.9029 0.6955 0.0193 ch_ppocr_mobile_v2.0_rec_infer.onnx release/v2.0 4.3M 0.5595 0.8979 0.7287 0.0045 指标说明 link Exact Match (精确匹配准确率) Char Match (字符级准确率) Score(两者综合) $$ Exact\\ Match = \\frac{1}{N}\\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = \\begin{cases} 1 \u0026 \\text{if } p_{i} = g_{i} \\ 0 \u0026 \\text{otherwise } \\end{cases} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $$ Char\\ Match = 1 - \\frac{1}{N} \\sum_{i=0}^{N} s(p_{i}, g_{i}) $$\n$$ s(p_{i}, g_{i}) = 1 - NL(p_{i}, g_{i}) $$\n$$ NL(p_{i}, g_{i}) = \\frac{Levenshtein(p_{i}, g_{i})}{\\max \\big(len(p_{i}), len(g_{i}) \\big)} $$\n$N$: 总的文本行个数 $p_{i}$: 第 $i$ 条文本行识别结果 $g_{i}$: 第 $i$ 条文本行对应的真实标签 $Levenshtein(x, y)$: 求字符串 $x$ 和字符串 $y$ 的编辑距离 $max(x, y)$: 求 $x$ 和 $y$ 的最大值 $len(x)$: 求所给字符串 $x$ 的长度 $$ Score = \\frac{1}{2}(Exact\\ Match + Char\\ Match) $$\n" } diff --git a/docs/related_projects/related_projects/index.html b/docs/related_projects/related_projects/index.html index bc78c560..35406714 100644 --- a/docs/related_projects/related_projects/index.html +++ b/docs/related_projects/related_projects/index.html @@ -334,7 +334,7 @@ -
  • 不同版本模型之间比较
  • +
  • Benchmark: 不同版本模型之间比较
  • @@ -1689,7 +1689,7 @@

    印章OCR 不同版本模型之间比较 +
  • Benchmark: 不同版本模型之间比较
  • @@ -1540,7 +1540,7 @@

    Buy me a Coffee - 不同版本模型之间比较 + Benchmark: 不同版本模型之间比较 https://rapidai.github.io/RapidOCRDocs/docs/about_model/model_summary/ Thu, 29 Sep 2022 00:00:00 +0000 diff --git a/opengraph/card-base-2_hu06b1a92291a380a0d2e0ec03dab66b2f_17642_filter_18385201140982992681.png b/opengraph/card-base-2_hu06b1a92291a380a0d2e0ec03dab66b2f_17642_filter_18385201140982992681.png new file mode 100644 index 0000000000000000000000000000000000000000..b6b63836d0ad6ed722bfebef42f1dc27e7b5bfa7 GIT binary patch literal 38397 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 diff --git a/sitemap.xml b/sitemap.xml index 243eaaad..620d9b58 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -84,7 +84,7 @@ 2023-09-28T08:38:57+08:00 https://rapidai.github.io/RapidOCRDocs/docs/about_model/model_summary/ - 2024-04-09T15:18:34+08:00 + 2024-04-09T15:22:41+08:00 https://rapidai.github.io/RapidOCRDocs/docs/about_model/support_language/ 2023-09-28T08:38:57+08:00 @@ -147,7 +147,7 @@ 2024-03-04T15:21:12+08:00 https://rapidai.github.io/RapidOCRDocs/ - 2024-04-09T15:18:34+08:00 + 2024-04-09T15:22:41+08:00 https://rapidai.github.io/RapidOCRDocs/categories/