ONNX 模型库
返回模型

说明文档

模型卡片:PHOCR

一个开源高性能光学字符识别(OCR)工具包 PHOCR

PHOCR:高性能 OCR 工具包

English | 简体中文

PHOCR 是一个开源高性能光学字符识别(OCR)工具包,专为高效识别中文、日文、韩文、俄文、越南文和泰文等多语言文本而设计。PHOCR 采用完全自主研发的识别模型(PH-OCRv1),性能显著优于现有解决方案。

动机

当前基于 token 预测的模型架构对上下文 token 的准确性高度敏感。即使只有上千个重复样本,也可能导致模型产生持续性记忆。虽然大多数开源文本识别模型目前能达到百分比级别的字符错误率(CER),但我们的目标是将这一指标进一步降低到千分级别。在这个水平上,对于处理 1 亿字符的系统,总识别错误数将减少到 100 万以下——这是一个数量级的提升。

特性

  • 自研识别模型PH-OCRv1 在文档场景下实现了低于 0.x% 的字符错误率。在英文场景下甚至达到了 0.0x% 的字符错误率。
  • 多语言支持:中文、英文、日文、韩文、俄文等
  • 丰富词表:每种语言都配备了全面的词表。中文:15,316,韩文:17,388,日文:11,186,俄文:292。
  • 高性能:优化的推理引擎,支持 ONNX Runtime
  • 易于集成:简洁的 Python API,便于快速部署
  • 跨平台:支持 CPU 和 CUDA

可视化

安装

# 选择以下**一种**安装方式:

# 方式 1:安装 ONNX Runtime CPU 版本
pip install phocr[cpu]

# 方式 2:安装 ONNX Runtime GPU 版本
pip install phocr[cuda]
# 必需:请确保已正确安装 CUDA toolkit 和 cuDNN 库
# 您可以通过 conda 安装 cuda runtime 和 cuDNN:
conda install -c nvidia cuda-runtime=12.1 cudnn=9
# 或手动安装相应的 CUDA toolkit 和 cuDNN 库

# 方式 3:手动管理 ONNX Runtime
# 您可以自行安装 `onnxruntime` 或 `onnxruntime-gpu`,然后安装 PHOCR
pip install phocr

快速开始

from phocr import PHOCR

# 初始化 OCR 引擎
engine = PHOCR()

# 对图像进行 OCR 识别
result = engine("path/to/image.jpg")
print(result)

# 可视化结果
result.vis("output.jpg")
print(result.to_markdown())

## 仅识别

基准测试

我们对 PHOCR 与主流 OCR 解决方案进行了全面的基准测试对比,涵盖多种语言和场景。我们自主研发的 PH-OCRv1 模型相比现有解决方案展现出显著优势。

整体性能对比

<table style="width: 90%; margin: auto; border-collapse: collapse; font-size: small;"> <thead> <tr> <th rowspan="2">模型</th> <th colspan="4">中文和英文<br><span style="font-weight: normal; font-size: x-small;">CER ↓</span></th> <th colspan="2">日文<br><span style="font-weight: normal; font-size: x-small;">CER ↓</span></th> <th colspan="2">韩文<br><span style="font-weight: normal; font-size: x-small;">CER ↓</span></th> <th colspan="1">俄文<br><span style="font-weight: normal; font-size: x-small;">CER ↓</span></th> </tr> <tr> <th><i>英文</i></th> <th><i>简体中文</i></th> <th><i>中英混合</i></th> <th><i>繁体中文</i></th> <th><i>文档</i></th> <th><i>场景</i></th> <th><i>文档</i></th> <th><i>场景</i></th> <th><i>文档</i></th> </tr> </thead> <tbody> <tr> <td>PHOCR</td> <td><strong>0.0008</strong></td> <td><strong>0.0057</strong></td> <td><strong>0.0171</strong></td> <td><strong>0.0145</strong></td> <td><strong>0.0039</strong></td> <td><strong>0.0197</strong></td> <td><strong>0.0050</strong></td> <td><strong>0.0255</strong></td> <td><strong>0.0046</strong></td> </tr> <tr> <td>百度</td> <td>0.0014</td> <td>0.0069</td> <td>0.0354</td> <td>0.0431</td> <td>0.0222</td> <td>0.0607</td> <td>0.0238</td> <td>0.212</td> <td>0.0786</td> </tr> <tr> <td>阿里</td> <td>-</td> <td>-</td> <td>-</td> <td>-</td> <td>0.0272</td> <td>0.0564</td> <td>0.0159</td> <td>0.102</td> <td>0.0616</td> </tr> <tr> <td>PP-OCRv5</td> <td>0.0149</td> <td>0.0226</td> <td>0.0722</td> <td>0.0625</td> <td>0.0490</td> <td>0.1140</td> <td>0.0113</td> <td>0.0519</td> <td>0.0348</td> </tr> </tbody> </table>

说明

高级用法

启用全局 KV 缓存后,我们使用 PyTorch(CUDA)实现了一个简单版本。当使用 torch(CUDA)运行时,您可以在 ORTSeq2Seq(...) 中设置 use_cache=True 来启用缓存,这也允许更大的批次大小。

语言特定配置

更多示例请参见 demo.py

评估与基准测试

PHOCR 提供了全面的基准测试工具,用于评估模型在不同语言和场景下的性能。

快速基准测试

运行完整的基准测试流程:

sh benchmark/run_recognition.sh

计算模型预测的字符错误率(CER):

sh benchmark/run_score.sh

基准测试数据集

PHOCR 使用标准化的基准测试数据集进行公平对比:

进一步改进

  • 字符错误率(CER),包括标点符号,可以通过对训练语料进行额外的归一化处理进一步降低。
  • 文本检测精度可以通过采用更先进的检测框架进一步提升。

贡献

我们欢迎各种贡献!请随时提交 issue、功能请求或 pull request。

支持

如有问题和需要支持,请在 GitHub 上提交 issue 或联系维护者。

致谢

非常感谢 RapidOCR 提供的检测和主要框架。

许可证

  • 本项目基于 Apache 2.0 许可证发布
  • OCR 检测和分类模型的版权归百度所有
  • PHOCR 识别模型基于修改版 MIT 许可证 - 详情请参见 LICENSE 文件

引用

如果您在研究中使用 PHOCR,请引用:

@misc{phocr2025,
  title={PHOCR: High-Performance OCR Toolkit},
  author={PuHui Lab},
  year={2025},
  url={https://github.com/puhuilab/phocr}
}

puhuilab/PHOCR

作者 puhuilab

image-to-text transformers
↓ 0 ♥ 0

创建时间: 2025-07-13 14:01:06+00:00

更新时间: 2025-07-17 07:55:44+00:00

在 Hugging Face 上查看

文件 (27)

.gitattributes
LICENSE
README.md
README_CN.md
config.json
configuration.json
onnx/PH-OCRv1/rec/ch_rec_decoder_v1.onnx ONNX
onnx/PH-OCRv1/rec/ch_rec_encoder_v1.onnx ONNX
onnx/PH-OCRv1/rec/jp_rec_decoder_v1.onnx ONNX
onnx/PH-OCRv1/rec/jp_rec_encoder_v1.onnx ONNX
onnx/PH-OCRv1/rec/ko_rec_decoder_v1.onnx ONNX
onnx/PH-OCRv1/rec/ko_rec_encoder_v1.onnx ONNX
onnx/PH-OCRv1/rec/ru_rec_decoder_v1.onnx ONNX
onnx/PH-OCRv1/rec/ru_rec_encoder_v1.onnx ONNX
onnx/PP-OCRv4/cls/ch_ppocr_mobile_v2.0_cls_infer.onnx ONNX
onnx/PP-OCRv4/det/Multilingual_PP-OCRv3_det_infer.onnx ONNX
onnx/PP-OCRv4/det/ch_PP-OCRv4_det_infer.onnx ONNX
onnx/PP-OCRv4/det/ch_PP-OCRv4_det_server_infer.onnx ONNX
onnx/PP-OCRv4/det/en_PP-OCRv3_det_infer.onnx ONNX
onnx/PP-OCRv5/det/ch_PP-OCRv5_mobile_det.onnx ONNX
onnx/PP-OCRv5/det/ch_PP-OCRv5_server_det.onnx ONNX
resources/fonts/FZYTK.TTF
resources/fonts/cyrillic.ttf
resources/fonts/japan.ttc
resources/fonts/korean.ttf
resources/fonts/方正宋黑.TTF
vis.gif