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
- 解决方案:安装patch命令:
- 问题:运行Python脚本时出现ImportError: libGL.so.1: cannot open shared object file: No such file or directory。
- 解决方案:安装OpenGL库:
sudo yum install mesa-libGL
- 解决方案:安装OpenGL库:
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
- 解决方案:拉取飞桨官方发布的昇腾 NPU 开发镜像。
- 问题:调用模型时设置use_npu=True推理速度会很慢。
- 解决方案:调用模型时不用设置use_npu=True,但实际初始化时已经自动检测并调用了NPU设备,提高了运行性能。
- 问题:下载模型时出现报错。
- 解决方案:改为采用手动下载。
查看源码发现加载模型时设置use_onnx = False就不会下载模型文件,修改代码为加载本地模型即可:
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
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)
- 解决方案:需要移除iCCP配置文件。
四、验证结果
- DEMO内容:选择合适的中英文OCR预训练模型,上传带有文字的图像使用模型进行文本识别推理,并通过gradio构建一个简单的Web应用界面展示模型推理效果。
Kunpeng CPU:
前端链接:http://113.44.138.39:7861/
Ascend NPU:
五、心得总结
在使用PaddleOCR的过程中,遇到了多个常见问题,这些问题主要集中在环境配置、网络应用部署、特定硬件适配以及数据格式处理上。通过针对性地安装必要的软件包、手动下载模型文件、调整图像处理逻辑以及合理配置硬件环境,成功解决了上述问题。
特别需要注意的是,在使用昇腾NPU进行部署时,应严格遵循官方提供的环境搭建指南,确保所有依赖项正确安装,并注意可能存在的兼容性问题。
通过这些经验,我们不仅能够更好地理解和掌握如何有效地利用PaddleOCR进行OCR相关的开发工作,还能提高系统的稳定性和性能。
- 点赞
- 收藏
- 关注作者
评论(0)