前言
github上有个非常好的开源验证码识别库,很多python猿都知道的python库。所以如果你是PHP猿,想通过php-curl实现一些功能肯定会遇到验证码识别关卡,这时你有两个选择:
- 花钱对接付费API接口;
- 本地搭建python库API接口;
花钱能解决的问题,不是问题,没钱可花那是你的问题 :@(哭泣)我没钱,所以我选择第二种自己搭建本地接口,当然如果你有服务器,也可以在服务器上使用docker搭建个线上API接口。
不废话,库的名字就是ddddocr
(带带弟弟OCR)自己去搜,看自述文件基本都会了,有功能的介绍,同时里面扩展部分,还有一键部署ddddocr api库链接。
本文着重介绍下,这个一键部署api的库ocr_api_server。
安装python
这个库支持 本地电脑安装运行 和 线上服务器运行 ,本地比较简单,先在电脑上下载个python版本3.7-3.9 64位,那就选择3.8版本的python吧。
python官网:https://www.python.org/
点击菜单 Downloads -> Windows 下方找到Python 3.8.10 Download Windows installer (64-bit)
下载即可。
如果是64位系统,下方链接直接下载!
https://www.python.org/ftp/python/3.8.10/python-3.8.10-amd64.exe
和其他Windows软件一样,界面化安装很简单了。
安装过程中记得加入系统环境变量,有个PATH的框框记得打勾。
命令行执行 python -v
得到python版本信息说明安装成功。
下载ocr_api_server库
最简单运行方式
# 安装依赖 pip install -r requirements.txt -i https://pypi.douban.com/simple # 运行 可选参数如下 # --port 9898 指定端口,默认为9898 # --ocr 开启ocr模块 默认开启 # --old 只有ocr模块开启的情况下生效 默认不开启 # --det 开启目标检测模式 # 最简单运行方式,只开启ocr模块并以新模型计算 python ocr_server.py --port 9898 --ocr # 开启ocr模块并使用旧模型计算 python ocr_server.py --port 9898 --ocr --old # 只开启目标检测模块 python ocr_server.py --port 9898 --det # 同时开启ocr模块以及目标检测模块 python ocr_server.py --port 9898 --ocr --det # 同时开启ocr模块并使用旧模型计算以及目标检测模块 python ocr_server.py --port 9898 --ocr --old --det
上面只需要cmd执行两行,第一行和下方五选一看注释选择。
接口使用方法
# 1、测试是否启动成功,可以通过直接GET访问http://{host}:{port}/ping来测试,如果返回pong则启动成功 # 2、OCR/目标检测请求接口格式: # http://{host}:{port}/{opt}/{img_type}/{ret_type} # opt:操作类型 ocr=OCR det=目标检测 slide=滑块(match和compare两种算法,默认为compare) # img_type: 数据类型 file=文件上传方式 b64=base64(imgbyte)方式 默认为file方式 # ret_type: 返回类型 json=返回json(识别出错会在msg里返回错误信息) text=返回文本格式(识别出错时回直接返回空文本) # 例子: # OCR请求 # resp = requests.post("http://{host}:{port}/ocr/file", files={'image': image_bytes}) # resp = requests.post("http://{host}:{port}/ocr/b64/text", data=base64.b64encode(file).decode()) # 目标检测请求 # resp = requests.post("http://{host}:{port}/det/file", files={'image': image_bytes}) # resp = requests.post("http://{host}:{port}/det/b64/json", data=base64.b64encode(file).decode()) # 滑块识别请求 # resp = requests.post("http://{host}:{port}/slide/match/file", files={'target_img': target_bytes, 'bg_img': bg_bytes}) # jsonstr = json.dumps({'target_img': target_b64str, 'bg_img': bg_b64str}) # resp = requests.post("http://{host}:{port}/slide/compare/b64", files=base64.b64encode(jsonstr.encode()).decode())
好了,ddddocr api本地搭建并启用,至于识别成功率我测试搜狗验证码大概能有60-70%吧。
评论(0)