paddleocr是paddlepaddle专门做ocr的库,我们简单用一下
- 参考 PaddleOCR—图片文字识别提取—快速使用教程_paddleocr使用教程-CSDN博客
目录
1 安装
1.1 前言
1.2 安装paddleocr
1.3 安装paddlepaddle
1.4 安装cuda
1.5 安装cudnn
1.6 配置 zlibwapi.dll
2 基本使用
3 针对单行文本的识别
3.1 识别本地图像
3.2 服务
3.3 请求
1 安装
1.1 前言
我使用的系统为windows,python版本为python3.7,paddleocr版本为2.7.0.2
我的显卡是GTX970M,估计是硬件问题,后续使用代码的时候如果使用GPU就不能预测出结果,但CPU可以预测出结果。但在更新CUDA后,在任务管理器中可以查看到GPU的使用情况(之前很少)
综上所述下面安装paddlepaddle-gpu版流程是不一定正确的
1.2 安装paddleocr
pip intall paddleocr
1.3 安装paddlepaddle
之后安装paddlepaddle,由于3.7是很早的版本了,所以直接执行 pip install paddlepaddle-gpu 大概率是可以对应上paddleocr的,最终安装paddlepaddle的版本为2.5.2
1.4 安装cuda
paddlepaddle-gpu-2.5.2需要cuda与cudnn,我目前这两个版本都比较落后,所以我们需要安装一下新的
首先找到cuda的安装包 CUDA Toolkit Archive | NVIDIA Developer
这里的Version指的是windows server,一般选最新的就行,感兴趣可以看一下这个 windows server_百度百科
之后你会下载下来这样一个exe
打开
OK
- 这个只是临时存放的路径,如果我们C盘空间不够可以换其他的地方
等
到100%后,等一会儿会出现这个
等
安装完cuda之后,显卡驱动会自动更新到合适的版本
如果按照上面的方式安装的话,默认安装在 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.0
安装之后环境变量也自动给你搞好了
确定这里有环境变量之后,我们重新启动一下,重启后执行 nvcc -V 可以显示cuda12.0
1.5 安装cudnn
我们首先进入cudnn的下载地址 Log in | NVIDIA Developer ,首先你需要登录一下
之后需要做个问卷,随便选选就行了,但是你最好每个空都填一填,不然通过不了
同意
更多
进到这个页面,这个页面需要加载一会儿,完全加载完毕后再进行下面的操作
向下滚到这,然后点击
点开之后点这个
之后你会获得这样一个压缩包
解压之后的文件夹内会有这四个文件
把这三个文件夹的东西,手动复制到CUDA的安装目录下
lib会有一个x64的子文件夹,你打开x64,把这些lib文件扔进去
1.6 配置 zlibwapi.dll
- 参考 解决问题:Could not locate zlibwapi.dll. Please make sure it is in your library path!-CSDN博客
我直接用的人家的百度云链接,解压之后会得到这么三个文件
打开dll_x64找到zlibwapi.dll与zlibwapi.lib
将zlibwapi.lib放在CUDA/v12.0/lib/x64中
将zlibwapi.dll放在 CUDA/v12.0/bin 中
2 基本使用
我们准备预测这个图像
在预测前我们需要准备simfang.ttf
simfang.ttf 是仿宋字体,可以在 C:\Windows\Fonts 中找到
之后我们直接使用文档中的代码 doc/doc_ch/quickstart.md · PaddlePaddle/PaddleOCR - Gitee.com
对代码做一些修改
运行后会生成result.jpg
打开后是这样的
3 针对单行文本的识别
3.1 识别本地图像
比如验证码,我们先写个demo
from paddleocr import PaddleOCR# Paddleocr目前支持的多语言语种可以通过修改lang参数进行切换
# 例如`ch`, `en`, `fr`, `german`, `korean`, `japan`
ocr = PaddleOCR(use_angle_cls=True, lang="ch",use_gpu=False) # need to run only once to download and load model into memory
img_path = './RandCode.png'
result = ocr.ocr(img_path, cls=True)
print()
print(result[0][0][1][0])
我现在想识别这个图像
运行后可以得到结果
3.2 服务
现在每一次预测都实例化一次对象,这个时间比较长,我们简单搞一个服务
3.3 请求
之后我们直接发请求就可以了
经测试车牌也可以检测出来,比如
但必须是单行文本(服务端只做了简单处理,如果处理好一点也没有问题),比如这个就不行