前言
前面有篇文章介绍了 【网站验证码识别】 ,但是其是利用 tesseract 工具的命令行来实现图片内容的识别。
这几天我突然想起,大学时参加百度 AI 比赛用过其 PaddleHub 框架,而且该工具有支持 Python 的第三方库,这不就可以尝试一下。
【新增】先决条件
- python >= 3.7
- paddle = 2.5.1
- paddlehub = 2.4.0
- numpy <= 1.23
无脑安装使用
只要基本熟悉 Python,那么按照官网文档基本没有如何问题。
PaddleHub
Paddle Inference 文档地址:https://www.paddlepaddle.org.cn/inference/v2.5/guides/install/python_install.html#pip-tensorrt
PaddleHub 文档地址:https://www.paddlepaddle.org.cn/tutorials/projectdetail/520792#anchor-2
PaddleHub 模型库地址:https://www.paddlepaddle.org.cn/hublist
首先需要先安装 Paddle,然后再安装 PaddleHub:
pip install paddlepaddle==2.5.1 paddlehub==2.4.0 -i https://mirror.baidu.com/pypi/simple
Paddle 是飞桨的原生推理库,提供服务器端的高性能推理能力,验证是否安装成功:
import paddle as pp
pp.utils.run_check()
# Jupyter 输出信息
Running verify PaddlePaddle program ...
PaddlePaddle works well on 1 CPU.
PaddlePaddle is installed successfully! Let's start deep learning with PaddlePaddle now.
PaddleHub 是飞桨预训练模型应用工具,完成模型的管理和一键预测,验证是否安装成功:
import paddlehub as hub
hub.server_check()
# Jupyter 输出信息
[2023-12-22 22:03:51,546] [ INFO] - Request Hub-Server successfully.
True
寻找预训练模型库
PaddleHub 模型库地址:https://www.paddlepaddle.org.cn/hublist
非常实用的预训练模型库,基本上通用的预训练模型都有,其中就包括了 OCR 文本识别库。
我选择的是最靠前的 chinese_ocr_db_crnn_server 预训练模型,结果我在使用过程中发现,小写字母识别率太低了,个人感觉应该是模型的问题,于是选择了第二个预训练模型 chinese_ocr_db_crnn_mobile,相对来说比第一个的识别率高多了,针对于验证码图片来说。
完整代码
chinese_ocr_db_crnn_mobile 模型地址:https://www.paddlepaddle.org.cn/hubdetail?name=chinese_ocr_db_crnn_mobile
只需要等待模型自动下载安装好,就会自动设别图片:
import paddlehub as hub
ocr = hub.Module(name="chinese_ocr_db_crnn_mobile", enable_mkldnn=True)
result = ocr.recognize_text(paths=['auth_img.png'])
result[0]['data'][0]['text']
# Jupyter 输出信息
'GMu3'