前言:以下都是针对cpu做的测试。

关于ocr识别速度的相关影响因素经过实测,这边简单总结了几个:
  • 图片质量
  • 模型大小与精度
  • 运行环境(硬件性能等)

由于运行环境客观不可变,针对一般的生产环境上,一般来说在看重用户体验的情况下对识别速度要求比较高,那么我们可以从模型和图片预处理入手来加快识别速度。

先给出大概,后续会针对每个做简单说明

模型

调用方式 优点 缺点
PP-OCRv5 本地部署 pdf的ocr处理流程大概在4分钟;识别效果好 内存占用大概在4g;第一次请求要做模型下载
依图 商用API调用 ocr本地不消耗资源 请求相对较贵,效果次于PP-OCRv5
TrWebOCR 本地部署 cpu密集型,不怎么消耗内存ocr流程15分钟,3分钟一张图片 一次ocr流程处理需要20分钟左右;且服务需要单独部署
wechatocr 本地部署 本地部署,几乎不消耗资源

合规性?识别效果最差;要么是github的驱动问题,或者是deb版的微信ocr支持较差,linux驱动要自己编译

谷歌ocr (tesseract ocr ) :

        关于谷歌ocr,我测了下,识别速度挺快的,可以到秒级甚至毫秒级响应,消耗资源也不多,但是把,好像对中文,尤其是那种有点模糊的中文识别率很差,还会胡说八道,,,,,可能是我没调教好的原因,实测支持语言多,对英文识别效果好。

glm-ocr:识别速度慢,较消耗资源(估计是模型的原因,谷歌ocr可能是使用传统的方式做ocr)
glmocr        : 2分26秒


paddleocr: 安装参考官网,可从pip清华源安装 飞浆( paddleX依赖  paddleocr    PP-DocBee2-3B解析模型)

测试结果如下:
一张图片加载模型加推理
PaddleOCR-VL :9 分钟
PP-StructureV3: 3 分钟
PP-OCRv5      :  18 秒
PP-OCRv4      :  12 秒

pdf推理
pp-ocrv5            :3分钟
pp-ocrv5-mobile     :1分钟


结论

综上,目前来看还是paddle ocr好用mobile系列模型已经可以吊打市面很多模型了,速度和准确率都不错,本地资源消耗也不高。

关于调优:

1.是开高性能推理(本地实测,针对cpu环境这个开了好像没啥软用)

2. 还有一个可选参数,具体参看

PaddleOCR/docs/version3.x/pipeline_usage/table_recognition_v2.md-代码预览-PaddleOCR:基于飞桨生态的OCR与文档智能引擎项目 - AtomGit | GitCode

这里给出我代码里的初始化代码,以供参考

def _initialize(self):
        """延迟初始化 PaddleOCR"""
        if self._initialized:
            return

        try:
            from paddleocr import PaddleOCR

            det_model = settings.ocr.text_detection_model
            rec_model = settings.ocr.text_recognition_model

            self._ocr = PaddleOCR(
                text_detection_model_name=det_model,
                text_recognition_model_name=rec_model,
                use_doc_orientation_classify=False,    # 关闭文档方向分类
                use_doc_unwarping=False,              # 关闭文档扭曲矫正
                use_textline_orientation=False,       # 关闭文本行方向分类
                cpu_threads=13,
                lang='ch',                            # 使用中文模型
                device="cpu",                         # 强制使用 CPU
                #enable_hpi=True,                      # 开启 HPI,自动选择最优后端(ONNX Runtime/OpenVINO)
                text_det_limit_side_len=960,          # 限制检测图像最长边(默认 960),此值越小越快
                text_recognition_batch_size=16,        # 降低识别批处理大小,适合 CPU 环境
            )
            self._initialized = True
            logger.info(f"V5Engine initialized with det={det_model}, rec={rec_model}")
        except ImportError as e:
            logger.error(f"Failed to import PaddleOCR: {e}")
            raise RuntimeError("PaddleOCR not installed. pip install paddleocr paddlepaddle")

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐