首页 > 其他分享 >同盾中文点选验证码识别方法

同盾中文点选验证码识别方法

时间:2024-06-16 16:01:14浏览次数:21  
标签:点选 中文 img format base64 验证码 识别方法 str 同盾

中文验证码一直是识别的难题,首先他分类的种类很多,常见中文都有3500个,而且一般中文验证码都会有变形,导致每一个文字都需要大量训练样本。假设每一个汉字样本需要100个,100×3500=35万个样本,所以标记的样本数量巨大,训练周期长,成本高。

而且通常需要点选的文字数量很多,需要同时全对也是一件不容的事情。假设单个字的正确率是90%,假设需要点选4个汉字,全对的正确率就是0.9的4次方,正确率也只有65%。所以非常困难。

下面我们就以同盾中文验证码为例提供了一个识别方案。只需要点击的中文大图,决定点击顺序的中文小图。如下图所示

import base64
import requests
import datetime
from io import BytesIO
from PIL import Image

t1 = datetime.datetime.now()

#PIL图片保存为base64编码
def PIL_base64(img, coding='utf-8'):
    img_format = img.format
    if img_format == None:
        img_format = 'JPEG'

    format_str = 'JPEG'
    if 'png' == img_format.lower():
        format_str = 'PNG'
    if 'gif' == img_format.lower():
        format_str = 'gif'

    if img.mode == "P":
        img = img.convert('RGB')
    if img.mode == "RGBA":
        format_str = 'PNG'
        img_format = 'PNG'

    output_buffer = BytesIO()
    # img.save(output_buffer, format=format_str)
    img.save(output_buffer, quality=100, format=format_str)
    byte_data = output_buffer.getvalue()
    base64_str = 'data:image/' + img_format.lower() + ';base64,' + base64.b64encode(byte_data).decode(coding)
    # base64_str = base64.b64encode(byte_data).decode(coding)

    return base64_str

# 加载图片
img1 = Image.open(r'E:\Python\lixin_project\OpenAPI接口测试\test_img\48-1.jpg')
# 图片转base64
img1_base64 = PIL_base64(img1)
# 加载图片
img2 = Image.open(r'E:\Python\lixin_project\OpenAPI接口测试\test_img\48-2.jpg')
# 图片转base64
img2_base64 = PIL_base64(img2)

# 验证码识别接口
url = "http://www.detayun.cn/openapi/verify_code_identify/"
data = {
    # 用户的key
    "key":"JX61hWThaR9DQUT4gIBg",
    # 验证码类型
    "verify_idf_id":"48",
    # 点击中文大图
    "img1":img1_base64,
    # 点击顺序的中文小图
    "img2":img2_base64,
}
header = {"Content-Type": "application/json"}

# 发送请求调用接口
response = requests.post(url=url, json=data, headers=header)

# 获取响应数据,识别结果
print(response.text)
print("耗时:", datetime.datetime.now() - t1)

识别结果可视化效果如下

想了解更多验证码识别请访问:得塔云

标签:点选,中文,img,format,base64,验证码,识别方法,str,同盾
From: https://blog.csdn.net/Dxy1239310216/article/details/139577034

相关文章

  • 带有点选和搜索功能的百度地图
    项目中用到了一个地图功能,可以点选和搜索,我选用了百度地图,实现效果如下,参考百度地图官方api修改以适应自己的项目就可以,仅供参考,有问题请留言;1.首先在utils里面新建一个js文件baiduMap exportconstimportBMapGL=()=>newPromise((resolve,reject)=>{//ak......
  • 在K8S中,"节点亲和性"和"节点选择器"的区别在哪里?
    在Kubernetes(K8s)中,“节点选择器”(NodeSelector)和“节点亲和性”(NodeAffinity)都是用来指导Pod调度到合适节点的机制,但它们在功能和灵活性上有一定的区别:节点选择器(NodeSelector):是较早且较为基础的一种调度策略,用于简单匹配节点的标签(labels)。当在Pod的规范中定义了节点选择......
  • 10-验证-中文识别点选
    1.获取图片#@课程:爬虫逆向实战课#@讲师:武沛齐#@课件获取:wupeiqi666importreimporttimeimportddddocrimportrequestsfromseleniumimportwebdriverfromselenium.webdriver.common.byimportByfromselenium.webdriver.chrome.serviceimport......
  • 通达信横盘启动买点选股指标公式源码副图
    {股票指标}LOWV:=LLV(LOW,15);HIGHV:=HHV(HIGH,15);HIGHVV:=HHV(HIGH,40);V0:=V;V1:=REF(V,1);V2:=REF(V,2);V3:=REF(V,3);HV22:=HHV(V,35);D0U:=C>O;D1U:=REF(C,1)>=REF(C,2);横盘:=((HIGHV-LOWV)/HIGHV)<0.15;放量1:=V0>=(1.8*((V1+V2+V3)/3));放量2:=V0&......
  • 综合概念映射与图像识别方法提高学生科学探究课程成绩
    (Anintegratedconceptmappingandimagerecognitionapproachto improvingstudents'scientificinquirycourseperformance) DOI:10.1111/bjet.13177一、摘要研究目的:学者和研究者普遍认为,科学探究是培养学生应用知识和高级思维能力的重要活动。科学探究的过程可以......
  • Yolov5 + Siamese 孪生神经网络 or CNN 图像分类训通杀点选验证码
    声明本文章中所有内容仅供学习交流使用,不用于其他任何目的,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请在公众号【K哥爬虫】联系作者立即删除!前......
  • 四级作文(议论文)观点选择型
    Inthemodernsociety,在现代社会Inthemodernizedworld,在现代化社会Withthegiantleap(巨大的跳跃)oftechnology,econom,societyWiththerapidglobalization(全球化)ofmordernworld,(现代世界飞速全球化)结尾段重设观点+期望Inaword,Aisbrtter//moresuita......
  • Cesium 加载倾斜摄影模型记录(osgb切片,shp拔高切片、模型加载、鼠标移入选中、点选查
    一、shp模型拔高切片shp如果数据量过大,做分类处理,加载会异常慢,所以需要先对其进行分割之后再进行切片(用qgis即可)切片规则设置1、记得勾选构造底面 2、如果你的shp数据中有高度字段的话,可以选择高度字段,如果没有的话,设置固定高度的高度比你的模型稍微高一点,可以保证包着整个模型,......
  • Redis Sentinel(哨兵)实现原理之领导者Sentinel节点选举和故障转移
    领导者Sentinel节点选举Sentinel节点之间会做一个领导者选举的工作,选出一个Sentinel节点作为领导者进行故障转移的工作。Redis使用了Raft算法实现领导者选举。故障转移领导者选举出的Sentinel节点负责故障转移,过程如下:1.在从节点列表中选出一个节点作为新的主节点,这一步是相对复杂......
  • UE5 RenderTexture鼠标点选
    好久没有记录了,大家好,今天分享一个最近解决的UE方面的功能情景:把3维物体渲染到纹理,并在umg中使用Image控件显示纹理。此外还支持鼠标在Image上点击时,选中纹理上对应位置的物体。思路理解:在空间中某点某方向,以某视场角观察3维场景,并把画面渲染到纹理上。在UMG的Image控件显示......