CN108038484B - 空心验证码快速识别方法 - Google Patents
空心验证码快速识别方法 Download PDFInfo
- Publication number
- CN108038484B CN108038484B CN201711308376.9A CN201711308376A CN108038484B CN 108038484 B CN108038484 B CN 108038484B CN 201711308376 A CN201711308376 A CN 201711308376A CN 108038484 B CN108038484 B CN 108038484B
- Authority
- CN
- China
- Prior art keywords
- character
- marking
- verification code
- identifying
- image
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/60—Type of objects
- G06V20/62—Text, e.g. of license plates, overlay texts or captions on TV images
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2413—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
- G06F18/24147—Distances to closest patterns, e.g. nearest neighbour classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/20—Image preprocessing
- G06V10/26—Segmentation of patterns in the image field; Cutting or merging of image elements to establish the pattern region, e.g. clustering-based techniques; Detection of occlusion
- G06V10/267—Segmentation of patterns in the image field; Cutting or merging of image elements to establish the pattern region, e.g. clustering-based techniques; Detection of occlusion by performing operations on regions, e.g. growing, shrinking or watersheds
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/20—Image preprocessing
- G06V10/28—Quantising the image, e.g. histogram thresholding for discrimination between background and foreground patterns
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
- G06V30/14—Image acquisition
- G06V30/148—Segmentation of character regions
- G06V30/153—Segmentation of character regions using recognition of characters or words
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Molecular Biology (AREA)
- Health & Medical Sciences (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Image Analysis (AREA)
- Character Discrimination (AREA)
Abstract
本发明属于验证码识别技术领域,特别涉及一种空心验证码快速识别方法,该方法包含:首先,在预处理阶段,对验证码的字符轮廓线进行细化处理;其次,通过内外轮廓线仅针对字符块进行填充,得到实心字符;然后,分割得到单个字符和字符组件;接着,分析字符组件的结构特点和次序关联,运用最小近邻算法进行合并得到无冗余的单个字符;最后,利用卷积神经网络对分割和合并后得到的单个字符进行识别,得到最终破解结果。与现有识别方法相比,本发明既保持原有结构不被破坏,又保证精准修复字符轮廓线断裂之处,能够减少填充时间,提高填充精度,实现对空心验证码的准确获取、快速识别,识别成功率得到大大提高,适用性强,具有较好的应用价值。
Description
技术领域
本发明属于验证码识别技术领域,特别涉及一种空心验证码快速识别方法。
背景技术
随着互联网的飞速发展和普及,各种网络服务为人们的生活提供了极大的便利,例如电子商务、网络教学、电子邮件、社交网络等。但是,恶意软件会对这些服务进行主动攻击,包括批量注册、机器发帖、群发垃圾邮件、大规模刷票等。为了与之对抗,全自动开放式人机区分图灵测试CAPTCHA(Completely Automated Public Turing Test to tellComputers and Human Apart)应运而生。它是一种区分用户是人类还是计算机的公共自动程序,也称之为HIP(Human Interactive Proofs)或验证码技术。它作为加强网络安全验证的一种机制,已广泛应用于包括Google、Yahoo、Microsoft等大型网站在内的各种网络服务。随之诞生的验证码破解技术主要关注发现验证码的安全漏洞,促进更加安全验证码技术的研究。验证码破解问题涉及图像处理、模式识别、图像理解、人工智能、计算机视觉等多学科。开展验证码破解技术的研究对促进网络数据安全性、验证验证码设计技术的发展具有理论价值和现实意义。验证码破解研究的开展距今已有十余年的历史,在此期间,它得到了世界范围内相关研究者们的广泛关注,也取得了一些成绩。但是已有的验证码识别方法大多数适用于实心验证码,为数不多的针对空心验证码的识别方法在识别精度和识别速度上存在改进的空间。
发明内容
针对现有技术中的不足,本发明提供一种空心验证码快速识别方法,实用性强,在识别成功率和识别速度上具有较好优势。
按照本发明所提供的设计方案,一种空心验证码快速识别方法,包含如下内容:
A)将输入的验证码图片进行预处理,依次执行二值化、细化操作,得到单像素线条的字符轮廓线图片,并对字符轮廓线进行修复,得到封闭的空心字符图像;
B)针对封闭的空心字符图像,标记连通区域,寻找噪块并将其标记为背景,通过移除噪块并重新标记连通区域,填充非背景区域,得到实心字符串;
C)根据连通区域的标记对实心字符串进行分割,得到单个字符和字符组件;
D)分割后若得到的是单个字符则执行步骤E,若为字符组件,则需合并字符组件为单个字符后执行步骤E;
E)通过卷积神经网络对单个字符进行识别。
上述的,A)预处理中,执行二值化操作的过程如下:首先将输入的验证码图片转换为灰度图片,然后通过预设阈值将灰度图片转换为二值图像。
上述的,A)预处理中,执行细化操作的过程如下:针对二值图像中的像素,通过8-邻域元素进行细化删除,得到字符轮廓线为单像素线条的图片。
上述的,A)预处理中,对字符轮廓线进行修复,包含:首先在字符轮廓线中确定断点位置,然后依据就近原则将在预设阈值范围内的两个断点进行连接,得到封闭的空心字符图像。
优选的,B)中标记连通区域,寻找噪块并将其标记为背景,通过移除噪块并重新标记连通区域,填充非背景区域,包含:
B1)按照列顺序,对图像中每个簇进行编码,其中,簇为每个列中连续的白色像素序列;
B2)依次扫描每个簇,设置每个簇的首次标记,并将其作为等价标记保存在等价表中;
B3)将等价表中的等价标记分解转换为等价类,根据等价类重新标记簇,得到连通区域的标记矩阵;
B4)利用像素的8-邻域元素移除图像的外轮廓线,将由内轮廓线围成的连通区域标记为噪块,即背景区域;
B5)在连通区域的标记矩阵中,通过移除噪块并填充非背景区域,得到实心字符串。
上述的,D)中包含:对于分割后字符,首先判断其是否为单个字符,若是,直接进行字符识别,否则,将字符组件中的字符零件合并为单个字符,再进行字符识别。
优选的,将字符组件中的字符及零件合并为单个字符,包含如下内容:首先,根据图片分割后产生的单个字符个数和图片实际包含字符个数,确定合并次数;然后,对于每次合并,选取两个字符零件进行合并。
上述的,对于每次合并,选取两个字符零件进行合并,包含:从字符组件中选取像素总数最少的字符块作为其中一个待合并字符零件;然后,根据字符块大小和其与左、右邻边字符块的宽度,选择另一个待合并字符零件;将选取的两个待合并字符零件进行合并。
本发明的有益效果:
本发明针对现有验证码识别方法中对具有粘连、重叠、扭曲等特点的空心验证码识别效果不佳的情形,提供一种快速有效的空心验证码破解方法,包含预处理、填充、分割、合并和识别等阶段;首先,在预处理阶段,对验证码的字符轮廓线进行细化处理,既保持原有结构不被破坏,又保证精准修复字符轮廓线断裂之处;其次,区别于传统的将噪块和字符块全部填充方法,通过内外轮廓线仅针对字符块进行填充,从而准确得到实心字符,能够减少填充时间,提高填充精度;然后,分割得到绝大多数的单个字符和少量字符零件;接着,分析字符零件的结构特点和次序关联,运用最小近邻算法进行合并得到无冗余的单个字符;最后,利用卷积神经网络(CNN)对分割和合并后得到的单个字符进行识别,得到最终破解结果;实现对空心验证码的准确获取、快速识别,识别成功率得到大大提高,适用性强。
附图说明:
图1为本发明的方法流程图;
图2为实施例中识别原理框图;
图3为实施例中实施例中预处理前后图片示意图;
图4为实施例中标记连通区域示意图;
图5为实施例中标记噪块示意图;
图6为实施例中剔除噪块字符连通区域重新排序标记示意图;
图7为实施例中填充字符后的实心字符示意图;
图8为实施例中分割后字符示意图;
图9为实施例中卷积神经网络结构示意图;
图10为实施例中识别方法的示意图;
图11为仿真实验中本发明识别验证码各阶段所占时间比重。
具体实施方式:
下面结合附图和技术方案对本发明作进一步清楚、完整的说明,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
为针对现有验证码识别方法中对具有粘连、重叠、扭曲等特点的空心验证码识别效果不佳的情形,本发明实施例提供一种空心验证码快速识别方法,参见图1所示,包含如下内容:
101)将输入的验证码图片进行预处理,依次执行二值化、细化操作,得到单像素线条的字符轮廓线图片,并对字符轮廓线进行修复,得到封闭的空心字符图像;
102)针对封闭的空心字符图像,标记连通区域,寻找噪块并将其标记为背景,通过移除噪块并重新标记连通区域,填充非背景区域,得到实心字符串;
103)根据连通区域的标记对实心字符串进行分割,得到单个字符和字符组件;
104)分割后若得到的是单个字符则执行步骤105,若为字符组件,则需合并字符组件为单个字符后执行步骤105;
105)通过卷积神经网络对单个字符进行识别。
在预处理阶段,引入细化操,能够既保持空心字符原有结构不被破坏,又保证精准修复字符轮廓线;在填充阶段,基于8-邻域像素检测提出内外轮廓线填充的方法,可以准确区分字符块和噪块,并针对字符块填充,将空心字符快速转化为实心字符;在合并阶段,根据字符零件的结构特点和次序关联,将其合并为待识别的单个字符,且绝无冗余字符产生,可以大为减少待识别字符的数目,以提高破解效率。
实施例二,参见图2所示,一种空心验证码快速识别方法,包含五个阶段:预处理、填充、分割、合并和识别:
预处理:将验证码图片转换为二值图片,然后进行细化并进行字符轮廓线修复。
填充:首先,对所有连通区域进行标记;然后,利用内外轮廓算法找出噪块;接下来,将噪块标记为背景;最后,填充非背景区域即得到实心字符串。
分割:利用填充阶段中得到的不同连通区域标记将实心字符串分割为大多数的单个字符和为数不多的字符组件。
合并:利用最小近邻算法将分割阶段中得到的字符组件合并为单个字符。
识别:利用卷积神经网络进行识别。
下面通过算法对这五个步骤做进一步说明,其中,Step1~Step3是预处理阶段,Step4~Step6是填充阶段,Step7是分割阶段,Step8是合并阶段,Step9是识别阶段。
输入:待破解的空心验证码图像;
输出:破解结果。
Step1.对验证码图像I分别进行灰度化和二值化操作。
如果输入的验证码为RGB图像,则首先利用公式(1)将之转换为灰度图Ig,其中R、G、B分别表示红、绿、蓝三个颜色通道数值。
Ig=0.29894×R+0.58704×G+0.11403×B (1)
然后,再利用公式(2)将灰度图像转换为二值图像IB,其中T为阈值,这里推荐阈值为0.8。
Step2.对二值图像IB进行细化操作,具体步骤如下:
①执行第一个子迭代过程,如果像素P同时满足条件G1、G2和G3,则删除。
条件G1:XH(p)=1 (3)
x1,x2,...x8是p的8-邻域元素,它们从p的东邻开始按逆时针排列。
条件G2:2≤min{n1(p),n2(p)}≤3 (6)
②执行第二个子迭代过程,如果像素P同时满足条件G1、G2和G4,则删除。
③反复执行①和②,直到没有像素可以被删掉为止。
经过细化处理后的空心验证码图像中,字符轮廓线均为单像素线条,如图3所示,图3中:(a)为原始图像,(b)为二值化操作后的图像,(c)为细化操作后的图像。验证码图像中,空心字符轮廓线是具有任意不等的粗度,这将导致后续确定断点时的复杂度增加并且产生大量冗余点,难以准确定位,细化操作后,便可比较容易解决此问题;相比未处理的字符,细化后的字符消除阴影,轮廓更加清晰,简化后续处理。
Step3.修复轮廓线,具体步骤如下:
首先,在字符轮廓线中确定断点位置,需要满足以下两个条件。
①当前像素px,y=1,这里px,y表示坐标为(x,y)的像素值;
然后,断点连接时,依据就近原则,将在阈值范围内的两个断点相连。此时根据验证码图片实际情况,设置阈值大小。如果在阈值范围内没有另一个断点存在,则说明此处无需连接。断点连接后,得到封闭的空心字符图像。
Step4.标记连通区域,具体步骤如下:
①按照列顺序,在细化后的图像中,使用Rs,Re,Cs对每个簇进行编码。
run(k)=(Rs(k),Re(k),Cs(k))k=1,2,…,n (11)
,其中,簇是每个列中连续的白色像素序列,n是图像中簇的总数,Rs(k),Re(k),Cs(k)分别代表第k个簇的开始行、结束行和开始列。
②依次扫描每个簇,并利用公式(12)设置首次标记。
其中,lf(k)保存第k个簇的首次标记,p′代表标记值,它的初始值设为0。公式中三个不同条件如下:C1表示第k个簇不与之前列中的任何簇相连;C2表示第k个簇与之前列中的第q个簇相连;C3表示第k个簇与之前列中的m个簇相连。
③将lf(t1),…,lf(tm)作为等价标记保存在等价表中。
④使用Dulmage-Mendelsohn分解变换将等价标记转换成等价类。
⑤根据处理后的等价类重新标记簇。
经过上述处理,产生一个与原图像矩阵大小相同的标记矩阵,黑色像素处全部标记为0;第r个白色像素连通区域标记为ID(r):
ID(r)=r r=1,2,3,...,sum (13)
其中,sum为连通区域总数。如图4所示,非字符笔画连通区域主要有两部分构成:一是字符本身内部的连通区域,如3、4、6、11;二是字符之间粘连形成的连通区域,如8、9;二者具有共同特征,即均由内轮廓线封闭而成。
Step5.消除外轮廓线。
对于已标记连通区域图像,保存所有轮廓线像素即标记号为0像素px,y=0的坐标;
依次对每个轮廓线像素执行
{
检查当前像素的八邻域中是否存在背景像素即标记号为1的像素,即x1=1||x2=1||x3=1||x4=1||x5=1||x6=1||x7=1||x8=1;
若存在,则将当前像素的标记号改变为背景像素标记号px,y=1;
}
消除外轮廓线后,得到有内轮廓线构成的图像,并记录由内轮廓线构成的连通区域。当所有外轮廓线像素均改变为背景时,便得到内轮廓线,例如,处理图4中的图像,最终得到内轮廓线封闭构成连通区域如图5所示。
Step6.移除噪块并填充空心字符。
在原始的标记矩阵中,记录字符组件总数sum′=sum。
对标记不为1的连通区域即字符组件进行重新排序;
经过以上处理,将空心字符填充为实心字符。
将由内轮廓线封闭的连通区域标记均改为背景连通区域标记1。然后,对字符连通区域重新排序标记。将图6中字符连通区域2、3、4、5依次填充,则空心字符变为实心字符;填充后的字符,如图7所示。
Step7.将实心字符串分割为多个字符组件。
根据不同的连通区域标记,分别单独保存每个连通区域像素,得到分割后的字符组件。
将实心字符图像切割为单个字符或者字符组件。分割字符时,根据字符连通区域标记号,依次取出各字符连通区域像素值,分别存储在新的矩阵中,得到多个字符零件图像。这里字符零件图像矩阵和之前验证码图像大小相同,且分割后的字符零件保持在原矩阵中的相对位置不变,如图8(a)所示。分割完成后,可能会出现两种情况:第一种是验证码图像中的字符均被单个分割出来,如图8(a)所示的单个字符图像;第二种是验证码图像中的字符被分割为多个字符零件,如图8(b)所示的字符组件图像。单个字符无需再做处理,直接进行识别;而字符零件则需要进行合并后,再进行识别。
Step8.将字符组件合并为单个字符。
对于分割产生的结果,如果是单个字符,则无需合并直接识别;如果不是,则需要将多个组件合并为单个字符,以备后用。具体步骤如下:
①由于零件个数不多且为避免合并错误和混乱,每次只合并两个零件。因此,合并次数的计算公式为:
k=S1-S0 (14)
其中:k表示合并次数,S1表示单张图片分割产生的字符零件个数,S0表示单张图片实际包含的字符个数。
②考虑最小字符零件是最有可能需要进行合并,将像素总数最少的作为其中一个待合并字符零件。
③利用公式(18)选择另一个待合并字符零件:
其中:C2保存另一个待合并字符零件序号,wl为字符组块和左边字符块C1-1合并得到新字符组块宽度,wr为字符组块C1和右边字符块C1+1合并得到新字符组块宽度,wt为设定的字符块最大宽度。
经过该步骤,所有字符组件合并成为单个字符,可以直接进行识别。
Step9.利用卷积神经网络识别得到最终结果。
在卷积神经网络中,允许直接输入待识别图片,无需特征提取和数据重建;使用多层滤波器,能够提取图片最显著特征;网络具备某种程度的位移、尺度、形变鲁棒性。经典的卷积神经网络LeNet-5采用卷积层和下采样层交替排列的结构,包含输入层和输出层共七层,如图9所示:
①输入层接受待识别字符图片,其尺寸归一化为28×28像素;
②第一层为卷积层输出特征图outputmaps为6,卷积核大小kernelsize为5;
③第二层为下采样层scale为2;
④第三层为卷积层输出特征图outputmaps为12;
⑤第四层为下采样层scale为2;
⑥第五层为卷积层产生一维向量。
因此,本发明中采用卷积神经网络来进行字符识别,从而保证获得高识别率。
对应于上述的空心验证码快速识别方法实施例,本发明还提供一种空心验证码快速识别系统,参见图10所示,包含:预处理模块201,转换模块202,分割模块203,合并模块204和识别模块205,其中,
预处理模块201,用于对输入的验证码图片进行预处理,得到封闭的空心字符图像;
转换模块202,用于对封闭的空心字符图像标记连通区域,利用移除外轮廓线通过标记内轮廓线围成的连通区域为噪块的方式寻找噪块并将其标记为背景,通过移除噪块并填充非背景区域,得到实心字符串;
分割模块203,用于根据连通区域的标记对实心字符串进行分割,得到字符组件;
合并模块204,用于利用字符块大小及其左右邻居字符块宽度,通过最小邻近算法对字符组件进行合并,得到单个字符;
识别模块205,用于利用卷积神经网络对单个字符进行识别。
进一步地,预处理模块201包含二值化处理单元,细化单元和修复单元,其中,二值化处理单元,用于将输入的验证码图片转换为灰度图片并通过预设阈值将灰度图片转换为二值图像;细化单元,用于通过8-邻域元素对二值图像中的像素进行细化删除,得到字符轮廓线为单像素线条的图片;修复单元,用于通过在字符轮廓线中确定断点位置,并依据就近原则将在预设阈值范围内的两个断点进行连接,得到封闭的空心字符图像。
基于以上实施例,为进一步验证本发明的有效性,下面通过仿真实验对本发明做进一步解释说明:
使用Matlab 2015a作为编程平台,在台式PC机上测试,其配置如下:处理器为3.10GHz Intel Core i5-2400,内存为4.00GB,操作系统为64位Windows 10专业版。本实验使用CNN作为识别分类器。
破解验证码的过程中,每个处理阶段的平均攻击速度及比重,如其中,关键步骤分割和合并所占时间不到20%。有近一半的时间消耗在预处理阶段,其中细化和封闭轮廓线所占时间比重分别为17.24%和17.90%。填充阶段虽然包含三个步骤,但都简单易行,仅占到8.32%。另外,采用卷积神经网络做识别,直接输入图像利用深度神经网络自动提取特征,并进行分类,因此消耗比较多的时间,占28.58%。
表所示的各阶段平均破解速度和图11中各阶段所占时间比重。破解单张验证码图片的平均时间仅为48.25ms。其中,关键步骤分割和合并所占时间不到20%。有近一半的时间消耗在预处理阶段,其中细化和封闭轮廓线所占时间比重分别为17.24%和17.90%。填充阶段虽然包含三个步骤,但都简单易行,仅占到8.32%。另外,采用卷积神经网络做识别,直接输入图像利用深度神经网络自动提取特征,并进行分类,因此消耗比较多的时间,占28.58%。
表1
为了评估本发明方法的识别速度,与2013年Gao等首次分析空心验证码的健壮性并提出的一种通用方法(记为方法A)及利用2D log-Gabor滤波器实现实心和空心字符分割的方法(记为方法B)进行对比实验。
方法A主要处理过程如下:①预处理:验证码图片二值化,然后修复轮廓线。②分割:首先使用颜色填充分割算法将所有不是黑色的像素点填充为不同颜色;然后,根据阈值判断出非字符笔画形成的颜色噪块并消除;最后,利用膨胀算法去除黑色轮廓线,并根据不同颜色块分割得到字符组件。③组合:首先,按照从上往下,从左往右的顺序给每一个字符组件编号,编号顺序从1开始,依次递增;然后,借鉴拼图思想,按顺序分段将字符组件之间进行多种组合,从而形成多个可能的字符块。④识别:使用卷积神经网络对字符块进行识别,得到结果和对应识别相似度。该识别相似度越大,则识别结果正确性越高。⑤搜索:利用深度优先搜索算法遍历所有的路径并求出其权值之和,记录权值之和最大的路径,得到字符组合做为最终识别结果。
方法B:首先,使用2D log-Gabor滤波器直接对字符进行分割获取字符零件,可同时适用于空心和实心字符。其次,利用最短路径对待识别字符数目进行精简。然后,使用K-近邻分类算法对字符块进行识别。最后,利用动态规划算法,在识别结果中确定最优组合作为最终识别结果。
在破解验证码的过程中,三种方法的攻击速度如表2所示:
表2破解速度对比表(ms/piece)
方法A/B对Tencent验证码的识别速度分别139.29ms和134.63ms,本发明的识别速度是48.25ms;方法A/B对BotDetect验证码的识别速度分别1032.93ms和979.94ms,本发明的识别速度是177.54ms。根据对比结果,现有方法的平均识别速度彼此非常接近,都远慢于本发明的识别速度。同时,我们可以看到,Tencent的识别速度比BotDetect的更快,因为后者有更多的字符组件。总的来说,本发明的空心验证码识别方案在识别速度方面优于现有的两种识别方法。
对于腾讯验证码,我们详细地比较了方法A和本发明识别方法的识别速度。从表2可知,本发明方法的填充和分割阶段的时间消耗是6.56ms/piece,方法A的是63.85ms/piece,它是本发明方法的10倍以上。首先,在方法A中填充所有连通区域所耗费的时间是本发明方法中仅填充字符区域所耗费时间的4倍。另外,方法A使用膨胀算法去除黑色轮廓线,它的时间消耗非常大。此外,方法A中组合时间是本发明方法中合并时间的近5倍,其主要原因是存在大量冗余字符。
表3方法A和本发明方法识别的不同之处
Note:“+”represents“increase”;“-”respects“discrease”.
从表3可知,它在本发明方法的预处理阶段需要占用更多一点的时间,这是因为额外引入了细化操作;在所有阶段中,所提出的方法比方法A节省了约65.47%的时间,特别是在填充分割阶段和合并/合并阶段,识别时间分别减少了90.63%和80.56%。从另一个角度来看,这也充分验证了细化给整个攻击带来的优化。总之,与方法A和B相比,本发明使识别成功率提高了约8%~25%,平均识别时间缩短了2/3~4/5。最后,实验结果表明,与现有的典型的空心验证码破解方法相比,本文方法兼具更高的破解成功率和更快的破解速度。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (4)
1.一种空心验证码快速识别方法,其特征在于,包含如下内容:
A)将输入的验证码图片进行预处理,依次执行二值化、细化操作,得到单像素线条的字符轮廓线图片,并对字符轮廓线进行修复,得到封闭的空心字符图像;
B)针对封闭的空心字符图像,标记连通区域,寻找噪块并将其标记为背景,通过移除噪块并重新标记连通区域,填充非背景区域,得到实心字符串;
C)根据连通区域的标记对实心字符串进行分割,得到单个字符和字符组件;
D)分割后若得到的是单个字符则执行步骤E,若为字符组件,则需合并字符组件为单个字符后执行步骤E;
E)通过卷积神经网络对单个字符进行识别;
B)中标记连通区域,寻找噪块并将其标记为背景,通过移除噪块并重新标记连通区域,填充非背景区域,包含:
B1)按照列顺序,对图像中每个簇进行编码,其中,簇为每个列中连续的白色像素序列;
B2)依次扫描每个簇,设置每个簇的首次标记,并将其作为等价标记保存在等价表中;
B3)将等价表中的等价标记分解转换为等价类,根据等价类重新标记簇,得到连通区域的标记矩阵;
B4)利用像素的8-邻域元素移除图像的外轮廓线,将由内轮廓线围成的连通区域标记为噪块,即背景区域;
B5)在连通区域的标记矩阵中,通过移除噪块重新标记连通区域并填充非背景区域,得到实心字符串;
D)包含:对于分割后的字符,首先判断其是否为单个字符,若是,执行步骤E),否则,将字符组件中的字符零件合并为单个字符,再执行步骤E);
将字符组件中的字符零件合并为单个字符,包含如下内容:首先,根据图片分割后产生的单个字符个数和图片实际包含字符个数,确定合并次数;然后,对于每次合并,选取两个字符零件进行合并;
对于每次合并,选取两个字符零件进行合并,包含:从字符组件中选取像素总数最少的字符块作为其中一个待合并字符零件;然后,根据字符块大小和其与左、右邻边字符块的宽度,选择另一个待合并字符零件;将选取的两个待合并字符零件进行合并。
2.根据权利要求1所述的空心验证码快速识别方法,其特征在于,A)预处理中,执行二值化操作的过程如下:首先将输入的验证码图片转换为灰度图片,然后通过预设阈值将灰度图片转换为二值图像。
3.根据权利要求2所述的空心验证码快速识别方法,其特征在于,A)预处理中,执行细化操作的过程如下:针对二值图像中的像素,通过8-邻域元素进行细化删除,得到字符轮廓线为单像素线条的图片。
4.根据权利要求1或3所述的空心验证码快速识别方法,其特征在于,A)预处理中,对字符轮廓线进行修复,包含:首先在字符轮廓线中确定断点位置,然后依据就近原则将在预设阈值范围内的两个断点进行连接,得到封闭的空心字符图像。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711308376.9A CN108038484B (zh) | 2017-12-11 | 2017-12-11 | 空心验证码快速识别方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711308376.9A CN108038484B (zh) | 2017-12-11 | 2017-12-11 | 空心验证码快速识别方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108038484A CN108038484A (zh) | 2018-05-15 |
CN108038484B true CN108038484B (zh) | 2020-05-05 |
Family
ID=62101858
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711308376.9A Active CN108038484B (zh) | 2017-12-11 | 2017-12-11 | 空心验证码快速识别方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108038484B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110069915B (zh) * | 2019-03-12 | 2021-04-13 | 杭州电子科技大学 | 一种基于轮廓提取的九宫格图形验证码识别方法 |
CN110348450A (zh) * | 2019-07-15 | 2019-10-18 | 中国工商银行股份有限公司 | 用于图像验证码的安全评估方法、装置和计算机系统 |
CN111259366B (zh) * | 2020-01-22 | 2021-06-18 | 支付宝(杭州)信息技术有限公司 | 一种基于自监督学习的验证码识别器的训练方法和装置 |
CN111739038B (zh) * | 2020-08-05 | 2020-11-17 | 成都四方伟业软件股份有限公司 | 一种手绘图轮廓线断点自动连接方法及装置 |
CN113301019B (zh) * | 2021-04-23 | 2023-04-07 | 杭州安恒信息技术股份有限公司 | 验证码漏洞检测方法、装置、电子装置和存储介质 |
CN113554033B (zh) * | 2021-09-18 | 2021-12-10 | 深圳市一号互联科技有限公司 | 智能文本机器人的文本识别方法、装置及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05225400A (ja) * | 1992-02-13 | 1993-09-03 | Nec Corp | ウェハー識別文字認識装置 |
CN102930277A (zh) * | 2012-09-19 | 2013-02-13 | 上海珍岛信息技术有限公司 | 一种基于识别反馈的字符图像验证码识别方法 |
CN106446897A (zh) * | 2016-09-09 | 2017-02-22 | 浪潮软件股份有限公司 | 一种空心验证码的识别方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120291122A1 (en) * | 2011-05-13 | 2012-11-15 | University Of Wollongong | Multi Dimensional CAPTCHA System and Method |
-
2017
- 2017-12-11 CN CN201711308376.9A patent/CN108038484B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05225400A (ja) * | 1992-02-13 | 1993-09-03 | Nec Corp | ウェハー識別文字認識装置 |
CN102930277A (zh) * | 2012-09-19 | 2013-02-13 | 上海珍岛信息技术有限公司 | 一种基于识别反馈的字符图像验证码识别方法 |
CN106446897A (zh) * | 2016-09-09 | 2017-02-22 | 浪潮软件股份有限公司 | 一种空心验证码的识别方法 |
Non-Patent Citations (3)
Title |
---|
The Robustness of Hollow CAPTCHAs;Haichang Gao et al.;《ACM》;20131108;第3-5节 * |
人民币冠字号码识别算法的研究;闵凯;《中国优秀硕士学位论文全文数据库 信息科技辑》;20160415;正文第四章 * |
空心验证码健壮性研究;王伟;《中国优秀硕士学位论文全文数据库 信息科技辑》;20141115;正文第三章 * |
Also Published As
Publication number | Publication date |
---|---|
CN108038484A (zh) | 2018-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108038484B (zh) | 空心验证码快速识别方法 | |
US10817741B2 (en) | Word segmentation system, method and device | |
Cao et al. | Learning crisp boundaries using deep refinement network and adaptive weighting loss | |
He et al. | Configuration-transition-based connected-component labeling | |
CN104573688A (zh) | 基于深度学习的移动平台烟草激光码智能识别方法及装置 | |
CN104809481A (zh) | 一种基于自适应色彩聚类的自然场景文本检测的方法 | |
CN107766854B (zh) | 一种基于模板匹配实现快速页码识别的方法 | |
CN108615058A (zh) | 一种字符识别的方法、装置、设备及可读存储介质 | |
CN112069900A (zh) | 基于卷积神经网络的票据文字识别方法及系统 | |
CN113723330B (zh) | 一种图表文档信息理解的方法及系统 | |
CN110413319A (zh) | 一种基于深度语义的代码函数味道检测方法 | |
CN110598581B (zh) | 基于卷积神经网络的光学乐谱识别方法 | |
CN110516676A (zh) | 一种基于图像处理的银行卡号识别系统 | |
CN110781898A (zh) | 一种中文ocr后处理的无监督学习方法 | |
CN116258854A (zh) | 一种基于密集连接策略和图像梯度的路面裂缝分割方法 | |
JP2000285190A (ja) | 帳票識別方法および帳票識別装置および記憶媒体 | |
CN113538472B (zh) | 一种基于编码-解码网络的向量场引导精细化分割方法 | |
CN114581932A (zh) | 一种图片表格线提取模型构建方法及图片表格提取方法 | |
De Nardin et al. | Few-shot pixel-precise document layout segmentation via dynamic instance generation and local thresholding | |
Guo et al. | Trust: An accurate and end-to-end table structure recognizer using splitting-based transformers | |
Boraik et al. | Characters segmentation from Arabic handwritten document images: hybrid approach | |
CN115439850B (zh) | 基于审单的图文字符识别方法、装置、设备及存储介质 | |
CN111985479A (zh) | 一种用于列车综合线路图的智能识别系统 | |
Van Phan et al. | Collecting handwritten nom character patterns from historical document pages | |
Yang et al. | Deep learning aided system design method for intelligent reimbursement robot |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |