一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种验证码图片识别方法、装置、设备及存储介质与流程

2022-02-23 00:41:27 来源:中国专利 TAG:


1.本文属于验证码技术领域,具体涉及一种验证码图片识别方法、装置、设备及存储介质。


背景技术:

2.验证码图片技术是现代网络安全技术的一部分,例如在用户登录,敏感信息查询等场景下程序都会要求用户输入验证码来验证是否为真人操作。
3.随着图像识别技术的发展,对于简单排列的数字和字母的图片识别已经不是什么难题,有些现有技术中,图像中的字符会采用扭曲,旋转,重叠,往往还会增加干扰线,干扰点等手段增加用户识别的难度,但是难度过大的图像反而不利于用户的识别(比如字符颜色变化、字符变形等原因),违背了通过验证码验证人为操作的初衷,给用户带来了较大的困扰,因此可以通过自动识别技术为用户进行辅助识别,从而提法哦了用户识别验证码的效率和准确率。现有技术中对验证码图像机器识别的效率不高,比如对重叠字符很难进行准确的判断,因此,如何提高验证码自动识别的准确性成为目前亟需解决的技术问题。


技术实现要素:

4.针对现有技术的上述问题,本文的目的在于,提供一种验证码图片识别方法、装置、设备及存储介质,能够提高验证码图片自动识别的准确性。
5.为了解决上述技术问题,本文的具体技术方案如下:
6.一方面,本文提供一种验证码图片识别方法,所述方法包括:
7.将待识别图片进行二值化处理,得到图片有效像素点;
8.将所述有效像素点进行聚类处理,得到相互分离的有效字符区域;
9.根据所述有效字符区域以及预设字符属性集,确定全部有效字符区域中的单个字符区域和黏连字符区域,所述预设字符属性集包括全部字符的预设属性特征;
10.根据所述黏连字符区域,通过预设切割规则得到多个有效字符;
11.根据所述单个字符区域对应的单个字符和所述黏连字符区域中多个有效字符,结合预先训练完成的识别模型,得到所述待识别图片的识别结果。
12.进一步地,所述预设属性特征包括字符高度、字符宽度和字符像素点个数;
13.所述根据所述有效字符区域以及预设字符属性集,确定全部有效字符区域中的单个字符区域和黏连字符区域,包括:
14.针对每个有效字符区域进行如下步骤:
15.获取所述有效字符区域中字符特征;
16.判断所述有效字符区域中字符特征是否落在所述预设字符属性集中的预设属性特征的范围内;
17.若是,则将所述有效字符区域确定为单个字符区域;
18.若否,则将所述有效字符区域确定为黏连字符区域。
19.进一步地,所述判断所述有效字符区域中字符特征是否落在所述预设字符属性集中的预设属性特征的范围内进一步包括:
20.判断所述有效字符区域的宽度是否超过所述预设字符属性集中字符宽度最大值;
21.若是,则将所述有效字符区域确定为黏连字符区域;
22.若否,则判断所述有效字符区域的宽度和高度之比是否超过所述预设字符属性集中单个字符的字符宽度和字符高度之比的最大值;
23.若所述有效字符区域的宽度和高度之比超过所述预设字符属性集中单个字符的字符宽度和字符高度之比的最大值,则将所述有效字符区域确定为黏连字符区域;
24.若所述有效字符区域的宽度和高度之比没有超过所述预设字符属性集中单个字符的字符宽度和字符高度之比的最大值,则将所述有效字符区域确定为单个字符区域。
25.进一步地,所述若所述有效字符区域的宽度和高度之比没有超过所述预设字符属性集中单个字符的字符宽度和字符高度之比的最大值,则将所述有效字符区域确定为单个字符区域,进一步包括:
26.则判断所述有效字符区域中像素点个数是否超过所述预设字符属性集中单个字符像素点个数的最大值;
27.若所述有效字符区域中像素点个数超过所述预设字符属性集中单个字符像素点个数的最大值,则将所述有效字符区域确定为黏连字符区域;
28.若有效字符区域中像素点个数没有超过所述预设字符属性集中单个字符像素点个数的最大值,则将所述有效字符区域确定为单个字符区域。
29.进一步地,所述根据所述黏连字符区域,通过预设切割规则得到多个有效字符,包括:
30.针对每个黏连字符区域进行如下步骤:
31.根据垂直投影法,依次统计所述黏连字符区域在水平方向上预设单元区间内的像素点个数;
32.根据所述黏连字符区域在水平方向上预设单元区间内的像素点个数的变化趋势,确定所述黏连字符区域的候选切割点;
33.当所述候选切割点为一个时,则将所述候选切割点作为目标切割点;
34.当所述候选切割点为多个时,则获取由多个候选切割点得到的候选区域的多个字符特征,并通过所述多个字符特征结合预设筛选规则从多个所述候选切割点中筛选出目标切割点;
35.根据所述目标切割点,对所述黏连字符区域进行切割处理,得到切割后的多个有效字符。
36.进一步地,所述根据垂直投影法,依次统计所述黏连字符区域在水平方向上预设单元区间内的像素点个数,包括:
37.从所述预设字符属性集中确定最小字符宽度,并将所述最小字符宽度作为指定窗口的初始宽度,所述指定窗口包括固定端和移动端;
38.将所述指定窗口的固定端置于所述黏连字符区域的一侧,以所述初始宽度将所述指定窗口的移动端置于所述黏连字符区域的另一侧;
39.将所述移动端依次朝向远离固定端的一侧移动一个预设单元区间;
40.获得所述黏连字符区域在移动端移动范围内的像素点个数。
41.进一步地,所述根据所述黏连字符区域在水平方向上预设单元区间内的像素点个数的变化趋势,确定所述黏连字符区域的候选切割点,包括:
42.根据所述黏连字符区域在水平方向上预设单元区间内的像素点个数,生成所述像素点个数的变化曲线;
43.根据所述变化曲线,计算获得所述变化曲线中像素点变化斜率;
44.将所述像素点变化斜率超过预设值的位置确定为所述黏连字符区域的候选切割点。
45.进一步地,所述根据所述黏连字符区域在水平方向上预设单元区间内的像素点个数的变化趋势,确定所述黏连字符区域的候选切割点,还包括:
46.根据所述黏连字符区域在水平方向上预设单元区间内的像素点个数,生成所述像素点个数的变化曲线;
47.根据所述变化曲线,确定所述变化曲线中波峰位置和波谷位置;
48.将所述波谷位置确定为所述黏连字符区域的候选切割点。
49.进一步地,所述当所述候选切割点为多个时,则获取由多个候选切割点得到的候选区域的多个字符特征,并通过所述多个字符特征结合预设筛选规则从多个所述候选切割点中筛选出目标切割点,包括:
50.根据多个候选切割点,确定针对所述黏连字符区域的切割位置组合,所述切割位置组合中每个切割位置包括至少一个候选切割点;
51.根据所述切割位置组合及每个切割位置中的候选切割点,将所述黏连字符区域进行切割处理,得到每个切割位置对应的多个候选区域;
52.统计每个切割位置对应的多个候选区域中的字符特征,所述字符特征至少包括字符宽度和字符像素点个数;
53.根据所述字符特征,确定每个切割位置对应的多个候选区域中符合单个字符特征的个数;
54.将符合单个字符特征的个数最多的多个候选区域对应的切割位置中的候选切割点确定为目标切割点。
55.进一步地,所述根据所述字符特征,确定每个切割位置对应的多个候选区域中符合单个字符特征的个数,包括:
56.对每个切割位置对应的多个候选区域依次进行如下步骤:
57.判断所述候选区域中字符像素点个数是否超过所述预设字符属性集中单个字符像素点个数的最小值;
58.若是,则继续判断所述候选区域中字符宽度在所述预设字符属性集中单个字符的字符宽度的最小值和最大值之间;
59.若所述候选区域中字符宽度在所述预设字符属性集中单个字符的字符宽度的最小值和最大值之间,则所述候选区域符合单个字符特征;
60.确定符合单个字符特征的候选区域的个数。
61.进一步地,所述将所述有效像素点进行聚类处理,得到相互分离的有效字符区域,包括:
62.统计将所述待识别图片中的有效像素点在垂直方向上的像素点个数;
63.确定像素点个数为零的位置,并将所述位置作为聚类分割点;
64.根据所述聚类分割点,将所述待识别图片中的有效像素点进行分割,得到相互分离的有效字符区域。
65.另一方面,本文还提供一种验证码图片识别装置,所述装置包括:
66.预处理模块,用于将待识别图片进行二值化处理,得到图片有效像素点;
67.有效字符区域生成模块,用于将所述有效像素点进行聚类处理,得到相互分离的有效字符区域;
68.处理模块,用于根据所述有效字符区域以及预设字符属性集,确定全部有效字符区域中的单个字符区域和黏连字符区域,所述预设字符属性集包括全部字符的预设属性特征;
69.切割模块,用于根据所述黏连字符区域,通过预设切割规则得到多个有效字符;
70.识别模块,用于根据所述单个字符区域对应的单个字符和所述黏连字符区域中多个有效字符,结合预先训练完成的识别模型,得到所述待识别图片的识别结果。
71.另一方面,本文还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述所述的方法。
72.最后,本文还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述的方法。
73.采用上述技术方案,本文所述的一种验证码图片识别方法、装置、设备及存储介质,通过对待识别图片进行二值化处理以及聚类处理,可以得到相互分离的有效字符区域,进而根据预设字符属性集确定全部有效字符区域中的单个字符区域和黏连字符区域,然后通过预设切割规则对所述黏连字符区域进行切割处理得到多个有效字符,最后将单个字符区域对应的单个字符和切割得到的多个有效字符输入到预先训练完成的识别模型,得到所述待识别图片的识别结果,本文通过对待识别图片的准确切割处理,再结合机器识别模型可以提高验证码识别的准确性。
74.为让本文的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
75.为了更清楚地说明本文实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本文的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
76.图1示出了本文实施例提供方法的实施环境示意图;
77.图2示出了本文实施例提供的一种验证码图片识别方法的步骤示意图;
78.图3示出了本文实施例中对有效字符区域识别过程示意图;
79.图4示出了本文另一实施例中对有效字符区域识别过程示意图;
80.图5示出了本文实施例中对黏连字符区域切割步骤示意图;
81.图6示出了本文实施例中验证码切割示意图;
82.图7示出了本文实施例中像素点个数变化曲线示意图;
83.图8示出了本文实施例提供的一种验证码图片识别装置的结构示意图;
84.图9示出了本文实施例提供的计算机设备结构示意图。
85.附图符号说明:
86.10、用户;
87.20、业务终端;
88.30、处理装置;
89.40、识别装置;
90.100、预处理模块;
91.200、有效字符区域生成模块;
92.300、处理模块;
93.400、切割模块;
94.500、识别模块;
95.902、计算机设备;
96.904、处理器;
97.906、存储器;
98.908、驱动机构;
99.910、输入/输出模块;
100.912、输入设备;
101.914、输出设备;
102.916、呈现设备;
103.918、图形用户接口;
104.920、网络接口;
105.922、通信链路;
106.924、通信总线。
具体实施方式
107.下面将结合本文实施例中的附图,对本文实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本文一部分实施例,而不是全部的实施例。基于本文中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本文保护的范围。
108.需要说明的是,本文的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本文的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、装置、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
109.现有技术中,由于验证码生成的难度增加,影响了用户正常的识别,进而影响了用户正常的业务处理(比如登录验证,支付验证等场景),给用户带来了较大的困扰,因此可以通过自动识别技术为用户进行辅助识别,从而提法哦了用户识别验证码的效率和准确率。现有技术中对验证码图像机器识别的效率不高,比如对重叠字符很难进行准确的判断。
110.为了解决上述问题,本说明书实施例提供一种验证码图片识别方法,能够提高对验证码自动识别的准确性,进而高效的辅助用户。如图1所示,为所述方法的实施环境示意图,可以包括用户10、业务终端20、处理装置30和识别装置40,所述业务终端20、处理装置30和识别装置40之间建立通讯连接。所述用户10通过所述业务终端20进行相应的业务办理,其中可以涉及账户登录或支付业务等情况,需要进行验证码的输入,以验证所述用户10的真实性,防止恶意破解密码,从而提高数据或资金的安全。所述处理装置30通过获取所述业务终端20上出现的验证码图片,进行二值化、聚类、切割等处理得到多个有效字符以及单个可识别的字符,并将处理后的字符发送给所述识别装置40,所述识别装置40存储有预先训练完成的识别模型,通过将多个有效字符以及单个可识别的字符输入到所述识别模型中可以得到业务终端20中验证码的字符结果,并将识别后的字符通过所述处理装置30发送至所述业务终端20,在所述业务终端20的显示界面现实相应的结果,进而便于用户正确的输入验证码,本文通过对验证码的自动识别,提高了验证码识别的准确性,进而有效的辅助用户正确的输入验证码,提高用户的使用体验。
111.所述识别装置40可以为服务器,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn(content delivery network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。
112.在一个可选的实施例中,所述处理装置30的功能可以在所述识别装置40中实现,即所述识别装置40可以实现对待识别图片的二值化、聚类和切割处理,以及将识别结果直接推送至所述业务终端20。具体的,所述业务终端20和所述处理装置30可以包括但不限于智能手机、台式计算机、平板电脑、笔记本电脑、智能音箱、数字助理、增强现实(augmented reality,ar)/虚拟现实(virtual reality,vr)设备、智能可穿戴设备等类型的电子设备。可选的,电子设备上运行的操作系统可以包括但不限于安卓系统、ios系统、linux、windows等。
113.此外,需要说明的是,图1所示的仅仅是本公开提供的一种应用环境,在实际应用中,还可以包括其他应用环境,例如目标图像分割模型的训练,也可以在处理装置30上实现。
114.具体地,本文实施例提供了验证码图片识别方法,能够提高验证码自动识别的准确性,进而提高对用户的辅助效果。图2是本文实施例提供的一种验证码图片识别方法的步骤示意图,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或装置产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行。具体的如图2所示,所述方法可以包括:
115.s101:将待识别图片进行二值化处理,得到图片有效像素点;
116.s102:将所述有效像素点进行聚类处理,得到相互分离的有效字符区域;
117.s103:根据所述有效字符区域以及预设字符属性集,确定全部有效字符区域中的单个字符区域和黏连字符区域,所述预设字符属性集包括全部字符的预设属性特征;
118.s104:根据所述黏连字符区域,通过预设切割规则得到多个有效字符;
119.s105:根据所述单个字符区域对应的单个字符和所述黏连字符区域中多个有效字符,结合预先训练完成的识别模型,得到所述待识别图片的识别结果。
120.本文通过对待识别图片进行预处理以及切割处理可以得到相互分离的有效字符区域,结合预设字符属性集可以确定全部有效字符区域中的单个字符区域和黏连字符区域,进而对黏连字符区域进行切割处理可以得到多个有效字符,然后将单个字符区域对应的单个字符和所述黏连字符区域中多个有效字符输入到预先训练完成的识别模型中可以得到识别结果,本文通过对黏连字符区域的自动切割,然后结合机器学习模型可以提高对验证码识别的准确性和可靠性。
121.在本说明书实施例中,在步骤s105之后还可以包括:
122.将所述识别结果发送至业务终端,以使所述业务终端显示所述识别结果,这样便于用户根据显示的识别结果输入相应的验证码,从而提高了用户验证码输入的准确性。
123.将所述待识别图片进行二值化处理的过程可以理解为对所述待识别图片的预处理,具体步骤可以为,将所述图片进行灰度处理,可以得到所述图片的灰度图,比如,可以遍历所述待识别图片中每个像素点,通过三个通道r、g、b的像素值结合相应的运算公式计算像素点对应的灰度值,进而得到所述图片的灰度图,其中所述运算公式根据实际情况设置,比如可以为gray=r*0.299 g*0.587 b*0.114。在得到灰度图之后通过设置灰度阈值对灰度图中的每个像素点进行二值化处理,将超过所述灰度阈值的像素点的像素值重新赋值为255,将没有超过所述灰度阈值的像素点的像素值重新赋值为0,其中所述灰度阈值也可以根据实际情况设置,比如可以通过otsu算法确定。
124.可以理解为,所述有效像素点为经过重新赋值后像素值为255的像素点,即为有实际意义的像素点,能够表示真实的字符特征的像素点。但是在验证码生成过程中,在图片的其他位置也可以产生干扰线或干扰点,为了提高有效字符区域中字符识别的可靠性,还可以对所述有效字符区域进行降噪处理,去除掉其中的干扰像素点,比如通过8邻域去噪算法判断出其中的干扰像素点,进而将其去除掉,8邻域去噪算法为干扰点识别的常用技术手段,具体识别的过程在本说明书实施例中不做限定。
125.在本说明书实施例中,所述将所述有效像素点进行聚类处理,得到相互分离的有效字符区域,包括:
126.统计将所述待识别图片中的有效像素点在垂直方向上的像素点个数;
127.确定像素点个数为零的位置,并将所述位置作为聚类分割点;
128.根据所述聚类分割点,将所述待识别图片中的有效像素点进行分割,得到相互分离的有效字符区域。
129.具体地,可以以一个像素点尺寸为统计区间,统计所述有效像素点沿水平方向上每个像素点尺寸上的像素点个数,即通过垂直投影的方式统计所述有效像素点在垂直方向上像素点个数,在像素点为零的位置说明有效像素点以该位置分割成两个独立的区域,这
样依次确定像素点为零的位置,可以将所述有效像素点分割成相互分离的不同的有效字符区域。
130.在本说明书实施例中,所述预设字符属性集包括全部标准字符的预设属性特征;其中所述预设字符可以为全部出现的标准字符,比如0~9,a~z,在一些其他实施例中,也可以包括汉字字符,可以为常用于验证码的汉字字符,也可以为随机抽取预设数量的汉字字符,比如100、500、1000等。所述预设属性特征为相应字符的属性特征,比如字符高度、字符宽度和字符像素点个数,在一些其他实施例中也可以包括其他属性特征,比如字符周长,字符面积等,在本说明书实施例中不做限定。
131.需要说明的是,所述预设字符属性集为标准字符的属性特征,不同的字体具备不同的属性特征,作为可选地,可以选择times new roman字体,当然了,选择的字体是在获得相关版权的基础上使用的,所述预设字符属性集可以适应于各种场景下的验证码识别过程。
132.在本说明书实施例中,如图3所示,所述根据所述有效字符区域以及预设字符属性集,确定全部有效字符区域中的单个字符区域和黏连字符区域,包括:
133.针对每个有效字符区域进行如下步骤:
134.s201:获取所述有效字符区域中字符特征;
135.s202:判断所述有效字符区域中字符特征是否落在所述预设字符属性集中的预设属性特征的范围内;
136.s203:若是,则将所述有效字符区域确定为单个字符区域;
137.s204:若否,则将所述有效字符区域确定为黏连字符区域。
138.可以理解为,在划分出不同的有效字符区域的基础上,由于验证码图片中的字符可能会发生变形、扭曲、旋转,因此单个字符的属性特征和标准字符的属性特征也很难完全一致,因此通过分析每个有效字符区域中的字符特征是否落在预设字符属性集中的字符预设属性特征的范围内,即可粗粒度的判断该有效字符区域是单个字符区域还是黏连字符区域。
139.作为可选地,所述判断所述有效字符区域中字符特征是否落在所述预设字符属性集中的预设属性特征的范围内进一步包括:
140.判断所述有效字符区域的宽度是否超过所述预设字符属性集中字符宽度最大值;
141.若是,则将所述有效字符区域确定为黏连字符区域;
142.若否,则判断所述有效字符区域的宽度和高度之比是否超过所述预设字符属性集中单个字符的字符宽度和字符高度之比的最大值;
143.若所述有效字符区域的宽度和高度之比超过所述预设字符属性集中单个字符的字符宽度和字符高度之比的最大值,则将所述有效字符区域确定为黏连字符区域;
144.若所述有效字符区域的宽度和高度之比没有超过所述预设字符属性集中单个字符的字符宽度和字符高度之比的最大值,则将所述有效字符区域确定为单个字符区域。
145.可以理解为,本文通过所述有效字符区域的尺寸来判断其是否在标准字符尺寸的范围内,黏连字符区域可以为字符重叠形成的字符区域,一般情况下,验证码不会出现完全重叠(即100%)的情况,否则会极大的影响用户的识别,在出现部分重叠时,重叠后字符的宽度明显会比较大,进而超过标准字符中宽度最大值,因此通过对有效字符区域中宽度进
行分析可以判断其是否属于黏连字符区域。进一步地,在一些重叠幅度较大的字符区域中,字符的宽度可能没有超过标准字符宽度的最大值,在重叠字符中,宽度出现增加的情况下,宽度/高度的值必然也会增加,因此还可以通过宽度/高度的值来判断其是否属于黏连字符区域。
146.进一步实施例中,由于验证码字符中存在扭曲变形旋转等情况,通过字符宽度以及字符宽度和字符高度之比也很难直接将单个字符区域和黏连字符区域区别开来,作为可选地,所述若所述有效字符区域的宽度和高度之比没有超过所述预设字符属性集中单个字符的字符宽度和字符高度之比的最大值,则将所述有效字符区域确定为单个字符区域,进一步包括:
147.则判断所述有效字符区域中像素点个数是否超过所述预设字符属性集中单个字符像素点个数的最大值;
148.若所述有效字符区域中像素点个数超过所述预设字符属性集中单个字符像素点个数的最大值,则将所述有效字符区域确定为黏连字符区域;
149.若有效字符区域中像素点个数没有超过所述预设字符属性集中单个字符像素点个数的最大值,则将所述有效字符区域确定为单个字符区域。
150.可以理解为,将像素点个数作为单个字符的进一步判断条件可以有效的避免由于字符变形扭曲等手段带来的字符尺寸发生变化的情况,可以进一步提高单个字符判断的可靠性和准确性。比如在字符发生扭曲时,其宽度会发生变化,当扭曲后的宽度超过标准字符宽度最大值时,则不能通过字符宽度以及字符宽度/高度的值来识别有效字符区域,而字符发生扭曲时,只是形状的变化,字符自身像素点的个数其实没有发生改变,或者改变的幅度很小,因此可以通过字符像素点的个数来进一步识别有效字符区域。
151.示例性,如图4所示,为本说明书实施例中有效字符区域识别的一个实例示意图,可以包括如下步骤:
152.步骤1.1:获取有效字符区域中字符特征。在本步骤中,所述字符特征包括字符宽度、字符高度和字符像素点个数;
153.步骤1.2:判断有效字符区域的字符宽度是否超过单个字符宽度最大值。在本步骤中,若是,则进入步骤1.3,若否,则进入步骤1.6,其中单个字符宽度最大值可以为标准字符中全部宽度的最大值;
154.步骤1.3:判断有效字符区域的字符宽高比是否超过单个字符宽高比最大值。在本步骤中,若是,则进入步骤1.4,若否,则进入步骤1.6,其中单个字符宽高比最大值可以为标准字符中全部宽高比的最大值;
155.步骤1.4:判断有效字符区域的字符像素点个数是否超过单个字符像素点个数最大值。在本步骤中,若是,则进入步骤1.5,若否,则进入步骤1.6,其中单个字符像素点个数最大值为标准字符中全部像素点个数的最大值;
156.步骤1.5:将所述有效字符区域确定为单个字符区域;
157.步骤1.6:将所述有效字符区域确定为黏连字符区域。
158.通过上述步骤可以实现对有效字符区域类型的高效识别,先以有效字符区域的尺寸特征为识别条件,再以有效字符区域的像素点特征进一步识别,可以充分可靠性的判断出有效字符区域的类型。
159.在本说明书实施例中,如图5所示,所述根据所述黏连字符区域,通过预设切割规则得到多个有效字符,包括:
160.针对每个黏连字符区域进行如下步骤:
161.s301:根据垂直投影法,依次统计所述黏连字符区域在水平方向上预设单元区间内的像素点个数;
162.s302:根据所述黏连字符区域在水平方向上预设单元区间内的像素点个数的变化趋势,确定所述黏连字符区域的候选切割点;
163.s303:当所述候选切割点为一个时,则将所述候选切割点作为目标切割点;
164.s304:当所述候选切割点为多个时,则获取由多个候选切割点得到的候选区域的多个字符特征,并通过所述多个字符特征结合预设筛选规则从多个所述候选切割点中筛选出目标切割点;
165.s305:根据所述目标切割点,对所述黏连字符区域进行切割处理,得到切割后的多个有效字符。
166.可以理解为,当所述有效字符区域为单个字符区域时,则不用对其进行分割处理,当所述有效字符区域为黏连字符区域时,则需要对黏连字符区域进行切割处理,以获得其中包含的多个有效字符,其中所述预设单元区间可以为一个像素点区间,这样就可以依次获得所述黏连字符区域在水平方向上像素点个数,进而根据像素点个数的变化趋势确定候选切割点,可以提高候选切割点确定的效率。
167.当所述候选切割点为一个时,则表示该黏连字符区域是通过两个字符的重叠形成的,因此存在一个进行切割的位置,将该位置(即候选切割点)确定为目标切割点。
168.当所述候选切割点为多个时,可能表示该黏连字符区域是通过两个以上字符重叠形成的,或者是字符出现扭曲重叠等情形,在本说明书实施例中,可以只考虑通过两个以上字符重叠形成的黏连字符区域的情形,便于通过切割后的字符区域进行判断是否将所述候选切割点确定为目标切割点。
169.在本说明书实施例中,所述根据垂直投影法,依次统计所述黏连字符区域在水平方向上预设单元区间内的像素点个数,包括:
170.从所述预设字符属性集中确定最小字符宽度,并将所述最小字符宽度作为指定窗口的初始宽度,所述指定窗口包括固定端和移动端;
171.将所述指定窗口的固定端置于所述黏连字符区域的一侧,以所述初始宽度将所述指定窗口的移动端置于所述黏连字符区域的另一侧;
172.将所述移动端依次朝向远离固定端的一侧移动一个预设单元区间;
173.获得所述黏连字符区域在移动端移动范围内的像素点个数。
174.示例性地,以“i或i”的字符宽度为最小字符宽度,将该字符宽度作为指定窗口的初始宽度,所述指定窗口的初始宽度可以理解为识别字符的最小窗口,当小于该初始宽度后,则不能识别出有效字符,通过设置指定窗口可以提高有效字符识别的效率,进而提高了验证码识别的速度。
175.如图6所示,为“a”、“b”和“c”三个字符重叠后形成的黏连字符区域,x0和x1组成的窗口则为指定窗口的初始位置,其中x0为指定窗口的固定端,x1为指定窗口的移动端,将该指定窗口设置在所述黏连字符区域的左侧,x1向右侧依次移动一个预设单元区间,并统计
该预设单位区间内像素点在垂向上的全部个数,这样依次多次就能获得多个像素点个数,直到所述移动端移动到所述黏连字符区域的最右侧。当然,所述指定窗口还可以设置在所述黏连字符区域的最右侧,这样移动端就向左移动获得每个预设单元区间内像素点个数。
176.在获得不同位置像素点个数的基础上,还可以通过所述像素点个数的变化趋势确定所述黏连字符区域的候选切割点,作为可选地,可以包括如下步骤:
177.根据所述黏连字符区域在水平方向上预设单元区间内的像素点个数,生成所述像素点个数的变化曲线;
178.根据所述变化曲线,计算获得所述变化曲线中像素点变化斜率;
179.将所述像素点变化斜率超过预设值的位置确定为所述黏连字符区域的候选切割点。
180.可以理解为,对于单个字符,在水平方向上像素点的个数(即从水平方向上依次统计字符在垂向上像素点的个数)变化趋势基本一致,即像素点很少发生较大的突变,当出现字符重叠时,在重叠部位,像素点个数相对前一位置会有较大的变化,因此在连续变化曲线上就会导致该重叠开始部位曲线突然上升的趋势,因此可以通过曲线变化的斜率来确定候选切割点。所述预设值可以根据实际情况设置,比如2、5等,在本说明书实施例中不做限定。
181.需要说明的是,通过曲线变化的斜率来确定候选切割点是一种成功率较高的方式,但是对一些特殊字符也可能存在单个字符的像素点个数的曲线变化率超过预设值的情况,这种情况不在本说明书的范围内。
182.在一些其他实施例中,除了通过斜率来判断候选切割点,还可以有如下判断候选切割点的方式:
183.根据所述黏连字符区域在水平方向上预设单元区间内的像素点个数,生成所述像素点个数的变化曲线;
184.根据所述变化曲线,确定所述变化曲线中波峰位置和波谷位置;
185.将所述波谷位置确定为所述黏连字符区域的候选切割点。
186.可以理解为,通过波谷位置判断候选切割点可以有效将字符重叠后的像素点个数的变化特征和曲线变化趋势结合在一起,在字符重叠后,开始重叠的部位必然是处于波谷位置,如图7所示,为像素点个数的变化曲线,可以看出在m和n位置为两个波谷位置,因此可以将m和n作为候选切割点,本文可以形象直观的将候选切割点找出来,提高了候选切割点确定的效率和可靠性。
187.在本说明书实施例中,所述当所述候选切割点为多个时,则获取由多个候选切割点得到的候选区域的多个字符特征,并通过所述多个字符特征结合预设筛选规则从多个所述候选切割点中筛选出目标切割点,包括:
188.根据多个候选切割点,确定针对所述黏连字符区域的切割位置组合,所述切割位置组合中每个切割位置包括至少一个候选切割点;
189.根据所述切割位置组合及每个切割位置中的候选切割点,将所述黏连字符区域进行切割处理,得到每个切割位置对应的多个候选区域;
190.统计每个切割位置对应的多个候选区域中的字符特征,所述字符特征至少包括字符宽度和字符像素点个数;
191.根据所述字符特征,确定每个切割位置对应的多个候选区域中符合单个字符特征
的个数;
192.将符合单个字符特征的个数最多的多个候选区域对应的切割位置中的候选切割点确定为目标切割点。
193.可以理解为,不同切割位置对应不同的候选切割点组合,这样就可以得到切割位置组合,然后从切割位置组合中选出切割效果最佳的切割位置,进而将最佳的切割位置对应的候选切割点作为目标切割点,其中切割效果最佳即为切割得到的单个字符区域最多,示例性地,如图7所示,通过上述步骤确定出a和b为两个候选切割点,这样可以形成三个切割位置,分别为a、b以及a和b,进而得到由三个切割位置组成的切割位置组合,通过三个切割位置可以得到三种不同的候选区域组合,通过依次计算每种切割位置得到候选区域中副歌单个字符特征的个数,将单个字符特征个数最多的候选区域组合对应的切割位置作为目标切割位置,相应地,目标切割位置中的候选切割点都作为目标切割点。通过不同候选切割点的组合可以快速的确定其中对黏连字符区域有效分割的点,从而避免了多切割和少切割。
194.进一步实施例中,所述根据所述字符特征,确定每个切割位置对应的多个候选区域中符合单个字符特征的个数,包括:
195.对每个切割位置对应的多个候选区域依次进行如下步骤:
196.判断所述候选区域中字符像素点个数是否超过所述预设字符属性集中单个字符像素点个数的最小值;
197.若是,则继续判断所述候选区域中字符宽度在所述预设字符属性集中单个字符的字符宽度的最小值和最大值之间;
198.若所述候选区域中字符宽度在所述预设字符属性集中单个字符的字符宽度的最小值和最大值之间,则所述候选区域符合单个字符特征;
199.确定符合单个字符特征的候选区域的个数。
200.可以理解为,通过提取每个候选区域中的字符特征,比如字符宽度,字符像素点个数等,进而通过所述字符特征与标准字符的特征进行比较,来判断其是否满足单个字符特征,由于切割后的候选区域可能也会存在扭曲旋转,甚至部分重叠的现象,因此候选区域的字符特征很难与标准字符的字符特征保持一致,本文通过候选区域的字符特征与标准字符的字符特征范围进行比较,可以很大程度的对候选区域的类型进行识别,从而提高了对候选区域所属类型识别的可靠性。
201.需要说明的是,本说明书实施例可以通过像素点个数和字符宽度来判断候选区域是否满足单个字符特征,在一些其他的实施例中也可以有其他的判断条件或标准,在本说明书实施例中不做限定。
202.在本说明书实施例中,所述预先训练完成的识别模型可以通过如下步骤获得:
203.步骤2.1:获取训练集数据,所述训练集数据包括提前标注的验证码图片,作为可选地,可以通过验证码生成程序获取训练集数据;
204.步骤2.2:对所述训练集数据进行预处理,得到每个验证码图片对应的多个有效字符;
205.步骤2.3:每个验证码图片对应的多个有效字符输入到初始训练模型中,得到预测结果;
206.步骤2.4:根据所述预设结果和所述验证码图片的标注结果,对所述初始训练模型进行训练,得到针对所述验证码图片的识别模型。
207.本文通过上述模型训练过程可以快速得到针对验证码图片的识别模型,模型训练的过程为常规的训练过程,其中所述识别模型可以为卷积神经网络(convolutional neural network,cnn)模型,在一些其他实施例中,也可以有其他的机器学习模型,在本说明书实施例中不做限定。
208.其中步骤2.2中对验证码图片的预处理可以包括如下步骤:
209.步骤2.2.1:将训练集数据中的验证码图片进行二值化处理,得到图片有效像素点;
210.步骤2.2.2:将所述有效像素点进行聚类处理,得到相互分离的有效字符区域;
211.步骤2.2.3:根据所述有效字符区域以及预设字符属性集,确定全部有效字符区域中的单个字符区域和黏连字符区域,所述预设字符属性集包括全部字符的预设属性特征;
212.步骤2.2.4:根据所述黏连字符区域,通过预设切割规则得到多个有效字符;
213.步骤2.2.5:将单个字符区域对应的单个字符和所述黏连字符区域中多个有效字符确定为所述验证码图片对应的多个有效字符。
214.可以理解为,上述对训练集数据的预处理过程和在识别过程中对待识别图片的处理过程一致,这样可以快速高效的确定验证码图片中的有效字符,从而提高了后续模型训练的速度和准确性。
215.基于同一发明构思,本说明书实施例还提供一种验证码图片识别装置,如图8所示,所述装置包括:
216.预处理模块100,用于将待识别图片进行二值化处理,得到图片有效像素点;
217.有效字符区域生成模块200,用于将所述有效像素点进行聚类处理,得到相互分离的有效字符区域;
218.处理模块300,用于根据所述有效字符区域以及预设字符属性集,确定全部有效字符区域中的单个字符区域和黏连字符区域,所述预设字符属性集包括全部字符的预设属性特征;
219.切割模块400,用于根据所述黏连字符区域,通过预设切割规则得到多个有效字符;
220.识别模块500,用于根据所述单个字符区域对应的单个字符和所述黏连字符区域中多个有效字符,结合预先训练完成的识别模型,得到所述待识别图片的识别结果。
221.通过上述装置所取得的有益效果和上述方法所取得的的有益效果一致,本说明书实施例不做赘述。
222.如图9所示,为本文实施例提供的一种计算机设备,本文中的装置可以为本实施例中的计算机设备,执行上述本文的方法,所述计算机设备902可以包括一个或多个处理器904,诸如一个或多个中央处理单元(cpu),每个处理单元可以实现一个或多个硬件线程。计算机设备902还可以包括任何存储器906,其用于存储诸如代码、设置、数据等之类的任何种类的信息。非限制性的,比如,存储器906可以包括以下任一项或多种组合:任何类型的ram,任何类型的rom,闪存设备,硬盘,光盘等。更一般地,任何存储器都可以使用任何技术来存储信息。进一步地,任何存储器可以提供信息的易失性或非易失性保留。进一步地,任何存
储器可以表示计算机设备902的固定或可移除部件。在一种情况下,当处理器904执行被存储在任何存储器或存储器的组合中的相关联的指令时,计算机设备902可以执行相关联指令的任一操作。计算机设备902还包括用于与任何存储器交互的一个或多个驱动机构908,诸如硬盘驱动机构、光盘驱动机构等。
223.计算机设备902还可以包括输入/输出模块910(i/o),其用于接收各种输入(经由输入设备912)和用于提供各种输出(经由输出设备914))。一个具体输出机构可以包括呈现设备916和相关联的图形用户接口(gui)918。在其他实施例中,还可以不包括输入/输出模块910(i/o)、输入设备912以及输出设备914,仅作为网络中的一台计算机设备。计算机设备902还可以包括一个或多个网络接口920,其用于经由一个或多个通信链路922与其他设备交换数据。一个或多个通信总线924将上文所描述的部件耦合在一起。
224.通信链路922可以以任何方式实现,例如,通过局域网、广域网(例如,因特网)、点对点连接等、或其任何组合。通信链路922可以包括由任何协议或协议组合支配的硬连线链路、无线链路、路由器、网关功能、名称服务器等的任何组合。
225.对应于图2-图5中的方法,本文实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法的步骤。
226.本文实施例还提供一种计算机可读指令,其中当处理器执行所述指令时,其中的程序使得处理器执行如图2至图5所示的方法。
227.应理解,在本文的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本文实施例的实施过程构成任何限定。
228.还应理解,在本文实施例中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
229.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本文的范围。
230.所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
231.在本文所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
232.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显
示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本文实施例方案的目的。
233.另外,在本文各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
234.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本文的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本文各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
235.本文中应用了具体实施例对本文的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本文的方法及其核心思想;同时,对于本领域的一般技术人员,依据本文的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本文的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献