PaddleOCR适配昇腾开源验证任务心得

举报
p_xcn 发表于 2024/11/13 17:14:42 2024/11/13
【摘要】 PaddleOCR是一套丰富的OCR工具库开源项目,支持文字检测、文字方向检测、多语种文本识别、手写体文本识别等多种OCR相关前沿算法。本文将介绍在华为的Ascend NPU上配置PaddleOCR 项目的过程中遇到的问题和解决方案,以及心得总结。

一、背景介绍

PaddleOCR是一套丰富的OCR工具库开源项目,支持文字检测、文字方向检测、多语种文本识别、手写体文本识别等多种OCR相关前沿算法。本文将介绍在华为的Ascend NPU上配置PaddleOCR 项目的过程中遇到的问题和解决方案,以及心得总结。

二、资源清单

Kunpeng CPU:

产品名称

CPU架构

实例类型

公共镜像

镜像版本

弹性云服务器

鲲鹏计算

鲲鹏通用计算增强型kc1.large.4

Huawei Cloud EulerOS

Huawei Cloud EulerOS 2.0 64bit for kAi2p with HDK 23.0.1 and CANN 7.0.0.1 RC

Ascend NPU:

产品名称

芯片类型

CANN版本

驱动版本

操作系统

堡垒机

昇腾910B3

CANN 7.0.1.5

23.0.6

Huawei Cloud EulerOS 2.0

三、遇到的问题和解决方案

具体步骤详见:https://blog.csdn.net/qq_54958500/article/details/143500816?spm=1001.2014.3001.5502

验证DEMO地址:https://gitcode.com/can_glan/opensource-demo-PaddleOCR-241115/overview

1.环境搭建阶段

  • 问题:在安装依赖过程中遇到Preparing metadata (setup.py) ... error error: subprocess-exited-with-error问题。
    • 解决方案:安装patch命令:
      sudo yum install patch
  • 问题:运行Python脚本时出现ImportError: libGL.so.1: cannot open shared object file: No such file or directory。
    • 解决方案:安装OpenGL库:
      sudo yum install mesa-libGL

2. Gradio开放Web应用界面

  • 问题:Gradio开放Web应用界面需要关联公网。
    • 解决方案:在ECS详情页查看弹性公网IP,并在安全组中设置对应的开放端口号。

3. 部署到昇腾NPU阶段

  • 问题:PaddlePaddle框架适配昇腾NPU目前只支持CANN 8.0.RC1,需要确保CANN驱动版本对应。
    • 解决方案:拉取飞桨官方发布的昇腾 NPU 开发镜像。

      docker pull registry.baidubce.com/device/paddle-npu:cann80RC1-ubuntu20-aarch64-gcc84-py39
  • 问题:调用模型时设置use_npu=True推理速度会很慢。
    • 解决方案:调用模型时不用设置use_npu=True,但实际初始化时已经自动检测并调用了NPU设备,提高了运行性能。
  • 问题:下载模型时出现报错。
    • 解决方案:改为采用手动下载。

      mkdir -p ~/.paddleocr/whl/cls
      wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar -O ~/.paddleocr/whl/cls/ch_ppocr_mobile_v2.0_cls_infer.tar
      tar -xvf ~/.paddleocr/whl/cls/ch_ppocr_mobile_v2.0_cls_infer.tar
      查看源码发现加载模型时设置use_onnx = False就不会下载模型文件,修改代码为加载本地模型即可:

      det_model_dir = '~/.paddleocr/whl/det/ch_PP-OCRv4_det_infer'
      rec_model_dir = '~/.paddleocr/whl/rec/ch_PP-OCRv4_rec_infer'
      cls_model_dir = '~/.paddleocr/whl/cls/ch_ppocr_mobile_v2.0_cls_infer'
      ocr = PaddleOCR(det_model_dir=det_model_dir, rec_model_dir=rec_model_dir, cls_model_dir=cls_model_dir, use_angle_cls=True, lang="ch", use_onnx=False)

4. 图像处理阶段

  • 问题:如果测试图片格式为PNG时报错:libpng warning: iCCP: bad parameters to zlib,libpng error: bad parameters to zlib,double free or corruption (!prev)。
    • 解决方案:需要移除iCCP配置文件。

      if 'icc_profile' in image.info:
          image.info.pop('icc_profile', None)

四、验证结果

- DEMO内容:选择合适的中英文OCR预训练模型,上传带有文字的图像使用模型进行文本识别推理,并通过gradio构建一个简单的Web应用界面展示模型推理效果。

Kunpeng CPU:

前端链接:http://113.44.138.39:7861/

Ascend NPU:

五、心得总结

在使用PaddleOCR的过程中,遇到了多个常见问题,这些问题主要集中在环境配置、网络应用部署、特定硬件适配以及数据格式处理上。通过针对性地安装必要的软件包、手动下载模型文件、调整图像处理逻辑以及合理配置硬件环境,成功解决了上述问题。

特别需要注意的是,在使用昇腾NPU进行部署时,应严格遵循官方提供的环境搭建指南,确保所有依赖项正确安装,并注意可能存在的兼容性问题。

通过这些经验,我们不仅能够更好地理解和掌握如何有效地利用PaddleOCR进行OCR相关的开发工作,还能提高系统的稳定性和性能。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。