一种图片验证码处理方法及装置与流程

文档序号:11407964阅读:424来源:国知局
一种图片验证码处理方法及装置与流程

本发明涉及计算机数据处理领域,特别涉及一种图片验证码处理方法及装置。



背景技术:

验证码(captcha)是一种区分用户是计算机或人的公共全自动程序。在captcha测试中,作为服务器的计算机会自动生成一个问题由用户来解答,这个问题可以由计算机生成并评判,但是必须只有人类才能解答。由于计算机无法解答captcha的问题,所以回答出问题的用户就可以被认为是人类。

由于验证码可以防止恶意破解密码、刷票、论坛灌水等现象,一定程度上保障了网站的信息安全。然而,在大数据时代,数据的自动采集尤为重要,其常常需要经过验证码的这一道关卡。另一方面,为网站信息安全保驾护航的验证码,必须经受得起自动破解识别程序的考验,因此,验证码必须经过各种自动化测试才能达到高度的安全性。

现有的验证码识别技术,大多识别正确率不高,对于复杂多变的验证码比如噪音点、噪音直线、字符扭曲、字符相连、字符倾斜等情况都未给出系统而科学的解决方案,且无法实现跨平台调用。如在识别字符所在位置固定的验证码时,可以采用定像素宽度切割技术,但此技术仅适合字符位置固定的验证码,通用程度不高。

因此,亟需一种图片验证码处理方法及装置。



技术实现要素:

发明的目的:为了解决现有验证码识别技术存在的识别正确率低、无法科学处理复杂验证码的技术问题,提供了一种图片验证码处理方法及装置,能够解决验证码存在噪音点、噪音直线、字符扭曲变形、字符相连、字符旋转等问题,去噪声效果好,识别正确率高,能够实现跨平台调用。

为达到上述目的,本发明采用的技术方案是:提供了一种图形验证码处理方法,包括以下过程:

步骤1:在python中,对样本集中的验证码样本图像进行预处理;

步骤2:预处理后的样本集聚类产生k-means模型;通过k-means模型得到样本集的多维数组数据,利用pca主成分分析法对多维数组数据降维,并取出数据的典型特征,得到pca模型;降维后的多维数组数据经过svm机器学习训练,得到svc模型;

步骤3:利用k-means模型、pca模型对待识别验证码图像进行处理,利用svc模型对处理后的待识别验证码图像进行识别,并将识别过程封装一个验证码识别接口;

步骤4:将封装好的验证码识别接口打包成webservice,提供给webservice客户端调用。

进一步地,所述对样本集中的验证码样本图像进行预处理,包括以下过程:

获取至少500张验证码样本图像,形成样本集;所述验证码样本图像数量越多越好;

对样本集中每张验证码样本图像进行预处理,预处理后的验证码样本图像均为单个字符;所述预处理包括去除孤立噪点、去除干扰直线、倾斜校正、图像切割中的一种或几种,所述去除孤立噪点采用周边像素计数法或滤波除噪法,所述滤波除噪法采用中通滤波除噪;所述去除干扰直线采用颜色差异法或houghline直线检测法,所述houghline直线检测法引入直线宽度阈值,阈值以上的直线保留,阈值以下的直线去除;所述倾斜校正采用仿射变换法;所述图像切割采用等间隔切割或投影切割。

进一步地,所述预处理后的样本集聚类产生k-means模型,包括以下过程:

获取样本集和样本集对应字符集;

对预处理后的样本集进行尺度不变特征转换,得到样本集sift特征;

将样本集sift特征进行聚类,得到k-means模型。

进一步地,所述通过k-means模型得到样本集的多维数组数据,利用pca主成分分析法对多维数组数据降维,并取出数据的典型特征,得到pca模型,包括以下过程:

利用k-means模型对样本集sift特征分别进行聚类、预测,聚类得到k-means聚类结果数据,预测得到该sift特征的预测值并进行统计,将统计结果存入k-means聚类结果数据中,形成多维数组数据;

利用pca主成分分析法对多维数组数据降维,取出数据的典型特征,得到pca模型。

进一步地,所述利用k-means模型、pca模型对待识别验证码图像进行处理,利用svc模型对处理后的待识别验证码图像进行识别,包括以下过程:

加载待识别验证码图像与pca模型、k-means模型以及svc模型;

将待识别验证码图像进行预处理,通过尺度不变特征转换得到其sift特征;

利用k-means模型对待识别验证码图像sift特征进行预测,得到该sift特征的预测值并进行统计,将统计结果存入多维数组数据中,形成待识别验证码图像测试数据;

利用pca模型对待识别验证码图像测试数据降维;

利用svc模型对降维后的待识别验证码图像测试数据进行识别,并给出识别结果。

本发明还提供了一种图片验证码处理装置,包括:

图像预处理模块,用于在python中,对样本集中的验证码样本图像进行预处理;

模型建立模块,用于将预处理后的样本集聚类产生k-means模型;通过k-means模型得到样本集聚类结果数据,利用pca主成分分析法对样本集聚类结果数据降维,并取出数据的典型特征,得到pca模型;降维后的样本集聚类结果数据经过svm机器学习训练,得到svc模型;

模型识别模块,用于利用k-means模型、pca模型对待识别验证码图像进行处理,利用svc模型对处理后的待识别验证码图像进行识别,并将识别过程封装一个验证码识别接口;

服务调用模块,用于将封装好的验证码识别接口打包成webservice,提供给webservice客户端调用。

进一步地,所述图像预处理模块,具体用于:

获取至少500张验证码样本图像,形成样本集;

对样本集中每张验证码样本图像进行预处理,预处理后的验证码样本图像均为单个字符;所述预处理包括去除孤立噪点、去除干扰直线、倾斜校正、图像切割中的一种或几种。

进一步地,所述模型建立模块,具体用于:

获取样本集和样本集对应字符集;

对预处理后的样本集进行尺度不变特征转换,得到样本集sift特征;

将样本集sift特征进行聚类,得到k-means模型。

进一步地,所述模型建立模块,具体用于:

利用k-means模型对样本集sift特征分别进行聚类、预测,聚类得到k-means聚类结果数据,预测得到该sift特征的预测值并进行统计,将统计结果存入k-means聚类结果数据中,形成多维数组数据;

利用pca主成分分析法对多维数组数据降维,取出数据的典型特征,得到pca模型。

进一步地,所述模型识别模块,具体用于:

加载待识别验证码图像与pca模型、k-means模型以及svc模型;

将待识别验证码图像进行预处理,通过尺度不变特征转换得到其sift特征;

利用k-means模型对待识别验证码图像sift特征进行预测,得到该sift特征的预测值并进行统计,将统计结果存入多维数组数据中,形成待识别验证码图像测试数据;

利用pca模型对待识别验证码图像测试数据降维;

利用svc模型对降维后的待识别验证码图像测试数据进行识别,并给出识别结果。

本发明的有益效果是:本发明通过对样本集进行尺度不变特征转换、聚类、pca主成分分析和svm机器学习训练,得到验证码图像样本集的k-means模型、pca模型以及svc模型,并利用上述模型对待识别验证码图像进行识别,能够处理复杂多变的验证码图像,且识别正确率95%以上;同时,将识别过程封装为验证码识别接口,并打包成webservice提供给webservice客户端调用,可实现跨平台调用,通用性好,具有一定的应用前景。

附图说明

图1是本发明实施例1图片验证码处理方法的实现流程图。

图2是本发明实施例1图片验证码处理方法步骤2的具体流程图。

图3是本发明实施例1图片验证码处理方法步骤3的具体流程图。

图4是本发明实施例3图片验证码处理装置的结构框图。

具体实施方式

为使本发明解决的技术问题、采用的技术方案和达到的技术效果更加清楚,下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。

实施例1

参照图1-3,本实施例公开了一种图片验证码的处理方法,包括以下过程:

步骤1:在python中,利用opencv包对样本集中的验证码样本图像进行预处理;具体包括以下过程:

步骤1.1:获取2000张验证码样本图像,形成样本集;所述验证码样本图像的获取方式为人工标注;

步骤1.2:对样本集中每张验证码样本图像进行预处理,预处理后的验证码样本图像为单个字符;所述预处理包括去除孤立噪点、去除干扰直线、倾斜校正、图像切割中的一种或几种;

步骤2:预处理后的样本集聚类产生k-means模型;通过k-means模型得到样本集的多维数组数据,利用pca主成分分析法对多维数组数据降维,并取出数据的典型特征,得到pca模型;降维后的多维数组数据经过svm机器学习训练,得到svc模型;具体包括以下过程:

步骤2.1:获取样本集和样本集对应字符集;获取方式为人工标注;

步骤2.2:对预处理后的样本集进行尺度不变特征转换,得到样本集sift特征;

步骤2.3:将样本集sift特征进行聚类,得到k-means模型;

步骤2.4:利用k-means模型对样本集sift特征分别进行聚类、预测,聚类得到k-means聚类结果数据,预测得到该sift特征的预测值并进行统计,将统计结果存入k-means聚类结果数据中,形成多维数组数据;

步骤2.5:扩大待训练的数据集;将待训练的数据集扩大4倍,所述待训练的数据集包括样本集和样本集对应字符集,目的是为了弥补样本集过小的缺陷,使得到的模型更加准确;

步骤2.6:按照给定的比例参数将样本集分为训练集与测试集,此处比例参数设定0.85,即训练集在样本集的占比为0.85;

步骤2.7:利用pca主成分分析法对多维数组数据降维,取出数据的典型特征,得到pca模型;

步骤2.8:将训练集中的多维数组数据与样本集对应字符集数据一一对应,进行svm支持向量机训练,得到svc模型。

步骤3:利用k-means模型、pca模型对待识别验证码图像进行处理,利用svc模型对处理后的待识别验证码图像进行识别,并将识别过程封装成一个验证码识别接口;具体包括以下过程:

步骤3.1:加载待识别验证码图像、pca模型、k-means模型以及svc模型;所述待识别验证码图像存在背景噪点、字符倾斜等问题;

步骤3.2:将待识别验证码图像进行预处理,通过尺度不变特征转换得到其sift特征;所述待识别验证码图像的预处理过程为:先进行灰度化处理,二值化后,再进行投影切割,得到的字符独立不含噪音,虽然还有倾斜,但已基本可用于训练svc模型;

步骤3.3:利用k-means模型对待识别验证码图像sift特征进行预测,得到该sift特征的预测值并进行统计,将统计结果存入多维数组数据中,形成待识别验证码图像测试数据;

步骤3.4:利用pca模型对待识别验证码图像测试数据降维;

步骤3.5:利用svc模型对降维后的待识别验证码图像测试数据进行识别,并给出识别结果;

步骤3.6:将上述过程打包,整体封装为验证码识别接口。

步骤4:将封装好的验证码识别接口打包成webservice,提供给java的webservice客户端调用;具体包括以下过程:

步骤4.1:将封装好的验证码识别接口打包成webservice;

步骤4.2:运行python服务器端的webservice,新建一个webservice的project;

步骤4.3:输入服务器端python的webservice地址;

步骤4.4:新建一个applicationproxy对象;

步骤4.5:调用getimagevalue_test()方法,完成跨平台调用。

本实施1对于复杂多变的验证码诸如噪音点、噪音直线、字符扭曲变形、字符相连、字符旋转等各种情况都提出了解决办法,并且经过验证可得到较为理想的去噪效果,具有以下优点:

(1)图像预处理(验证码样本图像和待识别验证码图像)包括但不限于去除孤立噪点、去除干扰直线、倾斜校正、图像切割等过程,为得到字符清晰的二值化验证码图片,不同的验证码图像可采用不同的解决方案,灰度化、二值化、倾斜校正、切割,可以看成切片式的编程,对于不同类型验证码,组合不同的图像处理方法即可。

(2)开创性的用色彩聚类(k-means)去除穿越字符的干扰直线。

(3)在训练机器学习模型时,采用先进的sift聚类,pca主成分分析降维,极大地提高了模型的识别正确率。

(4)能处理不同特征的验证码,还可以通过webservice跨语言跨平台进行调用。

实施例2

本实施例公开了一种图片验证码处理方法,包括以下过程:

步骤1:在python中,利用opencv包对样本集中的验证码样本图像进行预处理;具体包括以下过程:

步骤1.1:获取4000张验证码样本图像,形成样本集;所述获取方式为人工标注;

步骤1.2:对样本集中每张验证码样本图像进行预处理,预处理后的验证码样本图像为单个字符;所述预处理包括去除孤立噪点、去除干扰直线、倾斜校正、图像切割中的一种或几种;

步骤2:预处理后的样本集聚类产生k-means模型;通过k-means模型得到样本集的多维数组数据,利用pca主成分分析法对多维数组数据降维,并取出数据的典型特征,得到pca模型;降维后的多维数组数据经过svm机器学习训练,得到svc模型;具体包括以下过程:

步骤2.1:获取样本集和样本集对应字符集;

步骤2.2:对预处理后的样本集进行尺度不变特征转换,得到样本集sift特征;

步骤2.3:将样本集sift特征进行聚类,得到k-means模型;

步骤2.4:利用k-means模型对样本集sift特征分别进行聚类、预测,聚类得到k-means聚类结果数据,预测得到该sift特征的预测值并进行统计,将统计结果存入k-means聚类结果数据中,形成多维数组数据;

步骤2.5:扩大待训练的数据集;将待训练的数据集扩大6倍,所述待训练的数据集包括样本集和样本集对应字符集,目的是为了弥补样本集过小的缺陷,使得到的模型更加准确;

步骤2.6:按照给定的比例参数将样本集分为训练集与测试集,此处比例参数设定0.9,即训练集在样本集的占比为0.9;

步骤2.7:利用pca主成分分析法对多维数组数据降维,取出数据的典型特征,得到pca模型;

步骤2.8:开始svm训练,将训练集中的多维数组数据与样本集对应字符集数据一一对应,进行svm支持向量机训练,得到svc模型。

步骤3:利用k-means模型、pca模型对待识别验证码图像进行处理,利用svc模型对处理后的待识别验证码图像进行识别,并将识别过程封装成一个验证码识别接口;具体包括以下过程:

步骤3.1:加载待识别验证码图像与pca模型、k-means模型以及svc模型;所述待识别验证码图像存在背景噪点、直线干扰、字符倾斜等问题;

步骤3.2:将待识别验证码图像进行预处理,通过尺度不变特征转换得到其sift特征;所述待识别验证码图像的预处理过程为:先进行灰度化处理,二值化后,再进行投影切割,从而得到独立的字符;

步骤3.3:利用k-means模型对待识别验证码图像sift特征进行预测,得到该sift特征的预测值并进行统计,将统计结果存入多维数组数据中,形成待识别验证码图像测试数据;

步骤3.4:利用pca模型对待识别验证码图像测试数据降维;

步骤3.5:利用svc模型对降维后的待识别验证码图像测试数据进行识别,并给出识别结果;

步骤3.6:将上述过程整体封装为验证码识别接口。

步骤4:将封装好的验证码识别接口打包成webservice,提供给c++的webservice客户端调用;具体包括以下过程:

步骤4.1:将封装好的验证码识别接口打包成webservice;

步骤4.2:运行python服务器端的webservice;

步骤4.3:输入服务器端python的webservice地址;

步骤4.4:新建一个applicationproxy对象;

步骤4.5:调用getimagevalue_test()方法,完成跨平台调用。

实施例3

参照图4,本实施例公开了一种图片验证码处理装置,包括:

图像预处理模块,用于在python中,对样本集中的验证码样本图像进行预处理;

模型建立模块,用于将预处理后的样本集聚类产生k-means模型;通过k-means模型得到样本集聚类结果数据,利用pca主成分分析法对样本集聚类结果数据降维,并取出数据的典型特征,得到pca模型;降维后的样本集聚类结果数据经过svm机器学习训练,得到svc模型;

模型识别模块,用于利用k-means模型、pca模型对待识别验证码图像进行处理,利用svc模型对处理后的待识别验证码图像进行识别,并将识别过程封装一个验证码识别接口;

服务调用模块,用于将封装好的验证码识别接口打包成webservice,提供给webservice客户端调用。

所述图像预处理模块,具体用于:

获取至少500张验证码样本图像,形成样本集;

对样本集中每张验证码样本图像进行预处理,预处理后的验证码样本图像均为单个字符;所述预处理包括去除孤立噪点、去除干扰直线、倾斜校正、图像切割中的一种或几种。

所述模型建立模块,具体用于:

获取样本集和样本集对应字符集;

对预处理后的样本集进行尺度不变特征转换,得到样本集sift特征;

将样本集sift特征进行聚类,得到k-means模型;

利用k-means模型对样本集sift特征分别进行聚类、预测;聚类得到k-means聚类结果数据,预测得到该sift特征的预测值并进行统计,将统计结果存入k-means聚类结果数据中,形成多维数组数据;

扩大待训练的数据集,所述待训练的数据集包括样本集和样本集对应字符集;目的是为了弥补样本集过小的缺陷,使得到的模型更加准确;

按照给定的比例参数将样本集分为训练集与测试集;

利用pca主成分分析法对多维数组数据降维,取出数据的典型特征,得到pca模型;

开始svm训练,将训练集中的多维数组数据与样本集对应字符集数据一一对应,进行svm支持向量机训练,得到svc模型。

所述模型识别模块,具体用于:

加载待识别验证码图像与pca模型、k-means模型以及svc模型;

将待识别验证码图像进行预处理,通过尺度不变特征转换得到其sift特征;

利用k-means模型对待识别验证码图像sift特征进行预测,得到该sift特征的预测值并进行统计,将统计结果存入多维数组数据中,形成待识别验证码图像测试数据;

利用pca模型对待识别验证码图像测试数据降维;

利用svc模型对降维后的待识别验证码图像测试数据进行识别,并给出识别结果。

所述调用识别模块,具体用于:

将封装好的验证码识别接口打包成webservice;

运行python服务器端的webservice;

输入服务器端python的webservice地址;

新建一个applicationproxy对象;

调用getimagevalue_test()方法,完成跨平台调用。

注意,上述内容仅为本发明的较佳实施例。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其它等效实施例,而本发明的范围由所附的权利要求范围决定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1