前言

github上有个非常好的开源验证码识别库,很多python猿都知道的python库。所以如果你是PHP猿,想通过php-curl实现一些功能肯定会遇到验证码识别关卡,这时你有两个选择:

  1. 花钱对接付费API接口;
  2. 本地搭建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/

2022-08-31 06 07 03.png

点击菜单 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库

iShot_2022-09-05_07.23.10.jpg

最简单运行方式

# 安装依赖
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%吧。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。