携程验证码识别(深度学习) -- 精度商用

携程验证码的样式

目前携程的验证码分类

  • 缺口拖拽类型: 验证码包含两张图片,一张是缺口部分,一张是背景底图,需要将缺口图片拖拽到背景中缺口的对应位置;
  • 图形点选类型:验证码包含两张图片,一张是上面部分题目(请点击下面的****),一张是下面的背景图片,背景图片中散落着一些形状类型,需要将上面部分的图形,完美匹配下面的目标;
  • 文字点选类型:验证码包含两张图片,一张是上面部分题目(请点击下面的****),一张是下面的背景图片,背景图片中散落着一些文字类型,需要将上面部分的文字,完美陪陪下面的目标;

验证码分类图片展示

拖拽0拖拽1

import requests

url = "https://frp-cup.top:63320/predict"

payload={'nMsgType': '200',
'sU': 'hello_verify',
'sP': 'hello_verify',
'sS': '0',
'Category': '100',
'SubCategory': '0'}
files=[
  ('img_upper',('0_0.png',open('前面小图片.png','rb'),'image/png')),
  ('img_bottom',('0_1.png',open('后面大图片.png','rb'),'image/png'))
]
headers = {}

response = requests.request("POST", url, headers=headers, data=payload, files=files)

print(response.text)

文字点选标题0
文字点选标题1
文字点选标题2
文字点选背景0文字点选背景1文字点选背景2

import requests

url = "https://frp-cup.top:63320/predict"

payload={'nMsgType': '200',
'sU': 'hello_verify',
'sP': 'hello_verify',
'sS': '0',
'Category': '100',
'SubCategory': '989'}
files=[
  ('img_upper',('0_0.png',open('前面小图片.png','rb'),'image/png')),
  ('img_bottom',('0_1.png',open('后面大图片.png','rb'),'image/png'))
]
headers = {}

response = requests.request("POST", url, headers=headers, data=payload, files=files)

print(response.text)

图形点选标题0
图形点选标题1
在图形点选标题2

图形点选背景0图形点选背景1图形点选背景2

import requests

url = "https://frp-cup.top:63320/predict"

payload={'nMsgType': '200',
'sU': 'hello_verify',
'sP': 'hello_verify',
'sS': '0',
'Category': '100',
'SubCategory': '898'}
files=[
  ('img_upper',('0_0.png',open('前面小图片.png','rb'),'image/png')),
  ('img_bottom',('0_1.png',open('后面大图片.png','rb'),'image/png'))
]
headers = {}

response = requests.request("POST", url, headers=headers, data=payload, files=files)

print(response.text)

数据集的收集和打码

当前的数据集,部分是采用爬取的方式进行拉取的,部分是通过效果合成的,目前的量级大概在k级别,对于使用,效果足够了,在收集的过程中,可以发现对于整体的复杂对,携程并没有做太过复杂的变换,可能觉得即使做太过复杂的变换,对于想成功登陆的,也没有质的提升;

方案选择

在整个识别的过程中:

  • 拖拽验证码:可以使用常规的图像算法来匹配,通过对外轮廓的特征处理,也能够达到比较好的效果,当然也可以使用目标检测的方式来进行解决,这样多了打码的环节;
  • 文字点选标题:对于文字点选标题,目前有两种方案来进行选择,一种是将几个汉字作为模型输出的末端,直接进行Softmax,这样比较简单粗暴,实际效果需要验证,但是在观察的时候,对于标题的汉字不是固定的,所以采用这种方式有点麻烦(字体的数量也比较多),所以折中可以选择CRNN的方式进行处理,在处理的过程中,汉字的排列相对比较紧密,这个问题需要特别处理下;
  • 图形点选标题:对于图形点选标题,目前也有两种方案进行选择,一种是将图形看做汉字来进行处理,采取和上面的一样的方式来进行处理,一种是通过常规图像处理的方式来进行处理,也能达到比较好的效果;
  • 文字点选区域、图形点选区域:这两部分区域可以直接采用目标检测的方式去做;

识别效果

目前关于这三类的验证码识别率平均能达到95%+

接口试用方式

接口已经开放,调用方式详见 github … …

https://github.com/MaverickMuzi/CertificateIdentification

效果交流方式

感兴趣的伙伴可以一起交流:
ghost_man_evil@126.com
w_|_x: tinalee_muzi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值