字符识别方法及装置、用户设备、服务器
技术领域
本申请涉及图像识别技术领域,尤其涉及一种字符识别方法及装置、用户设备、服务器。
背景技术
目前,利用图像识别(Image Identification)技术识别图像中包含的特定字符被应用于众多领域。例如,在一种示例性场景中,用户通过用户设备扫描获得某目标图像,并识别该目标图像中是否包含特定字符。
在相关技术中,用户设备在扫描获得的目标图像后,通常需要将该目标图像发送到服务器,以通过服务器上的字符识别算法来识别该目标图像中是否包含特定字符。然而,随着各大应用的用户数的激增,可能在一个较短时间段内有大量用户设备向服务器发送待识别的图像进行字符识别,这在一定程度上造成服务器的处理压力过大,甚至影响其运行性能。
发明内容
有鉴于此,本申请提供一种字符识别方法及装置、用户设备、服务器。
为实现上述目的,本申请提供技术方案如下:
根据本申请的第一方面,提出了一种字符识别方法,包括:
用户设备获得待识别的图像;
所述用户设备通过第一字符识别模型识别所述图像中是否包含目标字符;
若识别出所述图像中不包含所述目标字符,所述用户设备向服务器发送所述图像;
其中所述服务器用于通过第二字符识别模型识别所述图像中是否包含所述目标字符。
根据本申请的第二方面,提出了一种字符识别方法,包括:
在用户设备通过第一字符识别模型识别出待识别的图像中不包含目标字符后,服务器接收所述用户设备发送的所述图像;
所述服务器通过第二字符识别模型识别所述图像中是否包含所述目标字符。
根据本申请的第三方面,提出了一种字符识别装置,应用于用户设备,包括:
获得单元,用于获得待识别的图像;
第一识别单元,用于通过第一字符识别模型识别所述图像中是否包含目标字符;
发送单元,用于在识别出所述图像中不包含所述目标字符后,向服务器发送所述图像;
其中所述服务器用于通过第二字符识别模型识别所述图像中是否包含所述目标字符。
根据本申请的第四方面,提出了一种字符识别装置,应用于服务器,包括:
接收单元,用于在用户设备通过第一字符识别模型识别出待识别的图像中不包含目标字符后,接收所述用户设备发送的所述图像;
第二识别单元,用于通过第二字符识别模型识别所述图像中是否包含所述目标字符。
根据本申请的第五方面,提出了一种用户设备,包括存储器、处理器及存储于存储器上并可被处理器运行的计算机程序,所述处理器在执行所述计算机程序时实现如下步骤:
获得待识别的图像;
通过第一字符识别模型识别所述图像中是否包含目标字符;
若识别出所述图像中不包含所述目标字符,向服务器发送所述图像;
其中所述服务器用于通过第二字符识别模型识别所述图像中是否包含所述目标字符。
根据本申请的第六方面,提出了一种服务器,包括存储器、处理器及存储于存储器上并可被处理器运行的计算机程序,所述处理器在执行所述计算机程序时实现如下步骤:
在用户设备通过第一字符识别模型识别出待识别的图像中不包含目标字符后,接收所述用户设备发送的所述图像;
通过第二字符识别模型识别所述图像中是否包含所述目标字符。
通过以上技术方案可见,在用户设备获得待识别的图像后,首先通过第一字符识别模型识别所述图像中是否包含目标字符,在所述用户设备识别出所述图像中不包含所述目标字符后,再由所述用户设备向服务器发送所述图像,以使得所述服务器通过第二字符识别模型识别所述图像中是否包含所述目标字符。在上述过程中,对于某些图像而言,可能通过用户设备上的第一字符识别模型便可以识别出目标字符,故而避免了向服务器发送该图像并进行字符识别的过程,降低了服务器的负担;另一方面,在用户设备未识别出目标字符之后,还可通过向服务器发送该图像并进行字符识别,从而确保了字符识别过程的准确性。
附图说明
图1示出了一示例性实施例提供的一种字符识别方法的流程;
图2示出了一示例性实施例提供的第一字符识别模型的逻辑结构;
图3示出了一示例性实施例提供的应用于用户设备的字符识别方法的流程;
图4示出了一示例性实施例提供的应用于服务器的字符识别方法的流程;
图5示出了一示例性实施例提供的另一种字符识别方法的流程;
图6示出了一示例性实施例提供的又一种字符识别方法的流程;
图7示出了一示例性实施例提供的用于字符识别的场景;
图8示出了一示例性实施例提供的一种电子设备的结构;
图9示出了一示例性实施例提供的应用于用户设备的一种字符识别装置的框图;
图10示出了一示例性实施例提供的应用于服务器的一种字符识别装置的框图;
图11示出了一示例性实施例提供的应用于服务器的另一种字符识别装置的框图;
图12示出了一示例性实施例提供的应用于服务器的又一种字符识别装置的框图。
具体实施方式
目前,一些互联网平台会推出一种让用户在自然场景下通过收集特定字符来获得某种奖励的活动。其中,用户收集特定字符的方式一般是通过用户设备来扫描包含特定字符的图像,上述特定字符可以为一种汉字,例如:“福”、“囍”等寓意较好的汉字。通常,在自然场景中,字符的形式多种多样,包括:各类相对规整的印刷体形式、各类较难识别的手写形式或艺术字形式等。除了字符形式多样外,图像的拍摄环境(如:光照情况、拍摄角度、拍摄距离、相机分辨率等)也不尽相同,造成字符识别难度较大。
在相关技术中,常见的字符识别方法包括以下几种:
1、光学字符识别(Optical Character Recognition,OCR):
光学字符识别技术主要用于对高质量的文档图像(如印刷体文字)进行字符识别,其过程可以包括:图像二值化、图像降噪、倾斜校正、字符切割、特征提取、对比识别、字词后处理等。目前,光学字符识别技术还不适合用于对手写等形式的识别。
2、基于Adaboost算法的目标检测技术:
Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的弱分类器,然后把这些弱分类器集合起来,得到强分类器。Adaboost算法使用的哈尔(Haar)特征可以通过积分图像计算得到,同时,Adaboost采用了很多个强分类器级联的方式,使得很多不包含目标字符的图像在早期就被分类器排除掉,只有真正的包含目标字符的图像才能通过所有强分类器。基于Adaboost算法的目标检测技术具有较高的计算效率和相对较好的检测性能。由于该目标检测技术采用的特征相对简单,检测速度尚可,但检测率不是太高。
3、基于卷积神经网络(Convolutional Neural Network,CNN)的识别
技术:
通过收集足够多的正样本及负样本,并采用卷积神经网络进行深度学习得到识别模型,学习得到的模型可以较识别出绝大多数的目标字符,识别率极高。然而,目前基于CNN学习得到的模型所占的存储空间较大(多则上百兆),同时识别过程的计算量也非常大,使得基于CNN的字符识别技术还不适合应用在用户设备上。
在相关技术中,为了提高字符识别的准确性,用户设备在扫描获得的目标图像后,通常需要将该目标图像发送到服务器,以通过服务器上的字符识别算法来识别该目标图像中是否包含特定字符。然而,随着各大应用的用户数的激增,可能在一个较短时间段内有大量用户设备向服务器发送待识别的图像进行字符识别,这在一定程度上造成服务器的处理压力过大,甚至影响其运行性能。为此,本文提出用以解决以上问题中的至少一个方面的技术方案。
图1示出了一示例性实施例提供的一种字符识别方法的流程。如图1所示,在一实施例中,可通过客户端(Client)设备和服务器(Server)来实现该方法,所述方法包括下述步骤101~105,其中:
在步骤101中,用户设备获得待识别的图像。
用户设备可以通过摄像模组获得待识别的图像,或用户设备从存储器中读取一预先存储的图像作为待识别的图像。
在步骤102中,用户设备通过第一字符识别模型识别所述图像中是否包含目标字符。其中,若通过第一字符识别模型识别出所述图像中不包含所述目标字符(即识别不成功),则进入步骤104;若通过第一字符识别模型识别出所述图像中包含所述目标字符(即识别成功),则进入步骤103。
在步骤103中,用户设备输出识别结果。
其中,输出的识别结果用以提示用户当前待识别图像中包含所述目标字符。当然,在一实施例中,也可以省去输出识别结果的步骤,例如:字符识别结果只是由服务器或用户设备记录,而并不需要向用户进行展示。
在步骤104中,用户设备向服务器发送所述图像。
在步骤105中,服务器通过第二字符识别模型识别所述图像中是否包含所述目标字符。最终,服务器将通过第二字符识别模型识别得到的结果向用户设备返回,以使得用户设备输出该结果。
在一实施例中,电子设备(用户设备或服务器)可通过图形处理器(GraphicsProcessing Unit,GPU)来调用字符识别模型,以实现字符识别过程。
在识别某图像中是否包含目标字符的过程中,先是通过用户设备利用第一字符识别模型进行识别,若没有识别出,再由用户设备将待识别的图像上传至服务器上,由服务器利用第二字符识别模型进行识别,最终得出识别结果。可以看出,对于某些图像(如:较为规整的印刷体)而言,由于识别难度较低,可能通过用户设备上的第一字符识别模型便可以识别出目标字符,故而避免了向服务器发送该图像并进行字符识别的过程,降低了服务器的负担,特别是可以有效缓解在高并发状态(如:新年来临之际集“福”活动)下服务器的处理压力。另一方面,对于某些图像(如:识别难度较大的手写体)而言,在用户设备未识别出目标字符之后,还可通过向服务器发送该图像并进行字符识别,从而确保了字符识别过程的准确性。
在一实施例中,受限于用户设备的硬件性能,一般不适合将算法复杂度较高的识别模型部署到用户设备上运行,为此,第一字符识别模型的算法复杂度需要低于第二字符识别模型的算法复杂度。其中,算法复杂度可以用以表征某算法对应的可执行程序在运行时所需要的资源量的多少,所述资源可包括时间资源和/或内存资源。算法复杂度包括时间复杂度和/或空间复杂度。通常,一个算法花费的时间与算法中语句的执行次数成正比例,一个算法中的语句执行次数称为语句频度或时间频度,记为T(n)。算法的时间复杂度是指执行算法所需要的计算工作量。关于如何计算一个算法的算法复杂度的过程,是本领域技术人员所能掌握的公知技术,本文不再予以详述。总之,对于通过机器学习得到的字符识别样本而言,一般地,识别准确性较高的模型,其算法复杂度也有相对较高,模型文件也相对更大;识别准确性较低的模型,其算法复杂度也有相对较低,模型文件也相对更小。
第一字符识别模型和第二字符识别模型可以利用不同的算法训练得到,如:通过Adaboost算法训练获得第一字符识别模型,通过基于卷积神经网络(CNN)的深度学习(DeepLearning)算法训练获得第二字符识别模型。当然,第一字符识别模型和第二字符识别模型也可以利用相同算法(如:Adaboost算法)训练得到。其中,在训练第一字符识别模型、第二字符识别模型时,可以分别设定不同的参数(如:正样本的命中率,和/或负样本的虚警率,和/或强分类器的级数),以使得最终得到的第一字符识别模型算法复杂度较低,而第二字符识别模型的算法复杂度较高。或者,可以采用不同数量的样本来训练获得第一字符识别模型和第二字符识别模型,如:在训练第二字符识别模型时,可采用更多较难识别的样本进行训练。需要说明的是,在其他可行实施例中,也可以通过某些深度学习(Deep Learning)算法训练获得第一字符识别模型。其中,训练第一字符识别模型所使用的深度学习算法可以为轻量级的算法。
在一实施例中,在通过基于卷积神经网络的深度学习算法训练获得第二字符识别模型的过程中,可在现有模型基础上进行微调(FineTune),或,可基于现有CNN网络结构进行重新训练,或,设计全新的CNN网络从零开始训练,等等。本申请可用的CNN网络包括但不限于:Alexnet、VGG、Googlenet、ResNet等。由于不同CNN网络需要的算法复杂度不同,故可根据计算机实际的硬件能力来选择合适的CNN网络进行模型训练。
在一实施例中,以利用Adaboost算法训练获得第一字符识别模型为例,获得第一字符识别模型的过程可具体包括如下步骤:
步骤10:获得目标字符对应的正样本集及负样本集。
其中,正样本集包含若干正样本,负样本集包含若干负样本,正样本为包含目标字符的图像样本,负样本为不包含目标字符的图像样本。图像样本中包含的目标字符的形式可为各类印刷体、手写体等。为便于机器学习,样本中包含的目标字符一般为正立的,图像的拍摄角度一般是正对着的。
步骤20:对正样本集及负样本集进行预处理,得到预处理后的正样本集及负样本集。
所述预处理动作可包括但不限于如下一种或多种:
①通过一定大小的矩形框将正样本中包含的目标字符标注出来;
②根据标注所述目标字符的矩形框,对正样本图像进行归一化到指定大小(如:24×24),使得目标字符大致处在正样本的中间位置;
③对归一化得到的正样本图像作一定程度的旋转(面内或面外);
④对样本图像添加一些噪声;
⑤对样本图像作平滑模糊;
⑥模拟非均匀照明操作。
步骤30:根据用户设定的用于训练所述第一字符识别模型的参数值,使用预处理后的正样本集及负样本集训练得到第一字符识别模型。其中,所述参数值对应的参数包括:训练分类器所用的正、负样本数目,和/或正样本的命中率(Hit Rate),和/或负样本的虚警率(False Alarm),和/或强分类器的级数。
图2示出了一示例性实施例提供的第一字符识别模型的逻辑结构。如图2所示,第一字符识别模型可包含用于检测目标字符的级联分类器,所述级联分类器由至少两个强分类器(Strong Classifier)组成,每个强分类器(Strong Classifier)由多个弱分类器(Weak Classifier)集成。通过Adaboost算法获得的弱分类器所采用的特征可以是哈尔(Haar)特征、和/或多块局部二值模式(Multi-block Local Binary Pattern,MBLBP)特征、和/或方向梯度直方图(Histogram of Oriented Gradient,HOG)特征等。第一字符识别模型包含的强分类器的级数N(2≤N)可以根据实际需要设定。其中,将若干强分类器由简单到复杂排列,希望经过训练使得每一强分类器有较高的正样本检测率(Hit Rate),而负样本虚警率(False Alarm)较低。例如:对于每一强分类器,其正样本检测率≈99%,负样本虚警率≈50%,表明强分类器可以将99%的实际上包含目标字符的图像识别为“包含目标字符的图像”,而将50%的实际上不包含目标字符的图像识别为“包含目标字符的图像”。其中,当待识别图像通过某强分类器的检测后,则会继续进入下一级强分类器的检测。在一种实际应用中,可以通过设定尽量大的强分类器级数,来获得较高的检测率及较低的误识率(即虚警率)。例如:当N=20时,第一字符识别模型的检测率≈0.9920≈98%,误识率≈0.520≈0.0001%。关于Adaboost算法,由于是本领域技术人员所能掌握的公知技术,故本文不再予以详述。
在一实施例中,在通过基于卷积神经网络的深度学习算法训练获得第二字符识别模型的过程中,可以使用前述用于训练第一字符识别模型的正、负样本集。但是,由于通过第二字符识别模型(采用CNN网络)进行字符识别时,将整个待识别图像作为输入进行一次性识别,而不像通过第一字符识别模型(采用Adaboost算法)进行字符识别时,会采用滑动窗对整幅图像的特定区域逐一进行扫描。故,在进行样本倍增时,样本图像内包含的目标字符在样本图像上的分布位置需要更加分散一些,目标字符的大小变化范围也要更大一些。
图3示出了一示例性实施例提供的应用于用户设备的字符识别方法的流程。如图3所示,参照上述图1所示的过程,若从用户设备的角度来实现,该方法包括如下步骤201~203,其中:
在步骤201中,用户设备获得待识别的图像。
在步骤202中,用户设备通过第一字符识别模型识别所述图像中是否包含目标字符。
在步骤203中,若识别出所述图像中不包含所述目标字符,用户设备向服务器发送所述图像;其中,所述服务器用于通过第二字符识别模型识别所述图像中是否包含所述目标字符。
利用图3所示的方法,对于某些图像(如:较为规整的印刷体)而言,由于识别难度较低,可能通过用户设备上的第一字符识别模型便可以识别出目标字符,故而避免了向服务器发送该图像并进行字符识别的过程,降低了服务器的负担,特别是可以有效缓解在高并发状态(如:新年来临之际集“福”活动)下服务器的处理压力。另一方面,对于某些图像(如:识别难度较大的手写体)而言,在用户设备未识别出目标字符之后,还可通过向服务器发送该图像并进行字符识别,从而确保了字符识别过程的准确性。
图4示出了一示例性实施例提供的应用于服务器的字符识别方法的流程。如图4所示,参照上述图1所示的过程,若从服务器的角度来实现,该方法可包括如下步骤301~302,其中:
在步骤301中,在用户设备通过第一字符识别模型识别出待识别的图像中不包含目标字符后,服务器接收用户设备发送的所述图像。
在步骤302中,服务器通过第二字符识别模型识别所述图像中是否包含所述目标字符。
利用图4所示的方法,对于某些图像(如:较为规整的印刷体)而言,由于识别难度较低,可能通过用户设备上的第一字符识别模型便可以识别出目标字符,故而避免了向服务器发送该图像并进行字符识别的过程,降低了服务器的负担,特别是可以有效缓解在高并发状态(如:新年来临之际集“福”活动)下服务器的处理压力。另一方面,对于某些图像(如:识别难度较大的手写体)而言,在用户设备未识别出目标字符之后,还可通过向服务器发送该图像并进行字符识别,从而确保了字符识别过程的准确性。
在其他实施例中,若用户设备的硬件性能足够好,也可以在用户设备上部署算法复杂度较高的第一字符识别模型。例如:基于卷积神经网络(CNN)的深度学习(DeepLearning)算法,对此本申请不作限制。
图5示出了一示例性实施例提供的另一种字符识别方法的流程。如图5所示,本实施例可通过客户端(Client)设备和服务器(Server)来实现该方法。在图1所示的流程的基础上,本实施例在步骤105之前,还包括:
步骤106:服务器通过第三字符识别模型识别图像中是否包含目标字符。若识别出图像中包含目标字符,得出识别结果;若识别出图像中不包含目标字符,进入步骤105。
其中,所述第三字符识别模型的算法复杂度低于所述第二字符识别模型的算法复杂度、且高于所述第一字符识别模型的算法复杂度。
由于第三字符识别模型的算法复杂度高于第一字符识别模型的算法复杂度,通常,第三字符识别模型比第一字符识别模型的识别精度更高,这使得某些无法被第一字符识别模型识别出包含目标字符的图像(如:某些手写体),可以被第三字符识别模型识别出包含目标字符的图像。又因为第三字符识别模型的算法复杂度低于第二字符识别模型的算法复杂度,理论上第三字符识别模型比第二字符识别模型的识别效率更高,需消耗的服务器资源也更少,所以,在增加该第三字符识别模型后,使得某些情况下并不需要执行第二字符识别模型的字符识别过程,从而在一定程度上降低服务器的负担,同时也能够提高字符识别过程的准确性。
在一实施例中,可以通过同一算法训练得到第一字符识别模型和第三字符识别模型。然而,为了使得第三字符识别模型对字符识别的准确性能够高于第一字符识别模型,可以在训练第一字符识别模型和第三字符识别模型前,分别设定不同的参数值。其中,所述参数值对应的参数包括:训练分类器所用的正、负样本数目,和/或正样本的命中率,和/或负样本的虚警率,和/或强分类器的级数等。举例而言,若用于训练获得第一字符识别模型和第三字符识别模型的算法为Adaboost算法,则在训练第一字符识别模型时,可以将强分类器的级数设定为N1,在训练第三字符识别模型时,可以将强分类器的级数设定为N2,其中,N1<N2。
在其他实施例中,在使用同一算法(如Adaboost算法)训练第一字符识别模型和第三字符识别模型时,也可以采用相同或相类似的参数,但是,可以利用不同的样本来分别训练第一字符识别模型和第三字符识别模型。如:可以将包含目标字符的图像样本细分到各个类别(如:印刷体、手写体、贴画等),在训练第三字符识别模型时,可采用更多第一字符识别模型无法识别出的正样本进行训练;或,在训练第三字符识别模型时,使用的样本中属于某类别(如手写体)的样本占比更大。
当然,在另一实施例中,也可通过不同算法训练得到第一字符识别模型和第三字符识别模型,如:通过Adaboost算法训练获得第一字符识别模型,通过深度学习算法训练获得第三字符识别模型。
图6示出了一示例性实施例提供的又一种字符识别方法的流程。如图6所示,在一实施例中,可通过客户端(Client)设备和服务器(Server)来实现该方法。在图5所示的流程的基础上,本实施例在步骤106之前,还包括:
步骤107:服务器通过预识别模型识别所述图像中是否包含所述目标字符。若通过所述预识别模型识别出所述图像中包含所述目标字符,进入步骤106。当然,在服务器只有第二字符识别模型的实施例中,若通过所述预识别模型识别出所述图像中包含所述目标字符,则若通过所述预识别模型识别出所述图像中包含所述目标字符,直接进入步骤105。反之,若通过预识别模型识别出所述图像中不包含所述目标字符,则可以直接认定图像不要需要进行后续的识别动作(如:通过服务器上的第二字符识别模型和/或第三字符识别模型来识别)。
本实施例通过设置上述预识别模型,可以进一步降低服务器的负担。因为对于用户拍摄到的某些明显不包含任意目标字符的图像(如:人脸图像),用户设备上的第一字符识别模型在识别失败后,仍会传送到服务器并通过第二字符识别模型进行识别,对明显不包含目标字符的图像完整地执行上述过程,是对计算机资源的一种不必要的浪费,且给服务器带来一定的负担。而预识别模型正是为了过滤掉一些明显不包含目标字符的图像而产生的,从而在一定程度上降低通过服务器上的第二字符识别模型和/或第三字符识别模型进行识别的可能性。
值得一提的是,上述预识别模型也可以运用于用户设备上。若通过该预识别模型识别出所述图像中包含所述目标字符,则向服务器发送待识别的图像;反之,则不向服务器发送待识别的图像。通过预识别模型过滤掉一些明显不包含目标字符的图像,从而通过避免向服务器传送该肯定不包含目标字符的图像,降低了网络资源的消耗。
在一实施例中,所述预识别模型的算法复杂度低于所述第一字符识别模型的算法复杂度。举例而言,可通过Adaboost算法训练获得上述预识别模型。其中,所述预识别模型可以包含用于检测所述目标字符的级联分类器,所述级联分类器由至少两个强分类器组成。其中,若定义所述第一字符识别模型包含的强分类器级数为N,定义所述预识别模型包含的强分类器级数为M,则M<N。更具体地,上述预识别模型可以包含级数非常少的强分类器,但是,该预识别模型的总检出率非常高。例如,当M=5时,若每一级强分类器的正样本检测率≈99%,负样本虚警率≈50%,则,预识别模型的总检出率≈0.995≈0.95099,也就是说,超过95%的包含目标字符的图像会通过该预识别模型,只有不到5%的包含目标字符的图像可能被漏检。如果某个待识别图像没有通过该预识别模型,则可以认为其包含目标字符的概率极低,从而可直接判定该图像不包含目标字符,拒绝进入下一模型的识别。反之,只有通过该预识别模型的图像才会被送入下一模型进行精确度更高的识别。当然,预识别模型的实现方式并不限于Adaboost算法。例如,也可基于小型的CNN网络训练得到一个准确度较低的预识别模型等。
以下结合具体场景来阐述以上技术方案。如图7所示,在一种字符识别场景中,包括用户使用的用户设备10(或称客户端设备)及通过网络与用户设备10实现交互的服务器20。其中,用户设备10中存储有第一字符识别模型13,服务器20中至少存储有第二字符识别模型21。在可选的实施例中,该服务器20中还可根据实际需要存储有预识别模型25和/或第三字符识别模型23。在字符识别过程中,用户利用用户设备10对准某个被拍摄物体(其上可包含目标字符),并通过用户设备10上设置的摄像模组11获得上述被拍摄物体的图像,随后,摄像模组11将获得的图像输入至第一字符识别模型13进行识别。当第一字符识别模型13无法从上述图像中识别出目标字符后,用户设备10可通过网络将该图像传送至服务器20,以使得服务器20通过第二字符识别模型21、和/或预识别模型25、和/或第三字符识别模型23进行识别。
图8示出了一示例性实施例提供的一种电子设备的结构。如图8所示,所述电子设备可以为用户设备或服务器,该电子设备可以包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成字符识别装置。当然,除了软件实现方式之外,本申请并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
如图9所示,在一实施例中,一种应用于用户设备的字符识别装置,包括:获得单元501、第一识别单元502以及发送单元503,其中:
获得单元501被配置为获得待识别的图像。
第一识别单元502被配置为通过第一字符识别模型识别所述图像中是否包含目标字符。
发送单元503被配置为在识别出所述图像中不包含所述目标字符后,向服务器发送所述图像。
其中,所述服务器用于通过第二字符识别模型识别所述图像中是否包含所述目标字符。
在一实施例中,所述第一字符识别模型的算法复杂度可以低于所述第二字符识别模型的算法复杂度。
在一实施例中,用于训练所述第一字符识别模型的算法包括Adaboost算法、和/或深度学习算法,用于训练所述第二字符识别模型的算法包括基于卷积神经网络的深度学习算法。
在进一步的实施例中,所述装置还可以包括预识别单元,其中,预识别单元被配置为通过预识别模型识别所述图像中是否包含所述目标字符,所述预识别模型的算法复杂度低于所述第一字符识别模型的算法复杂度。
相应地,所述发送单元503被配置为:在通过所述预识别模型识别出所述图像中包含所述目标字符后,向所述服务器发送所述图像。
在一实施例中,所述第一字符识别模型和所述预识别模型包含用于检测所述目标字符的级联分类器,所述级联分类器由至少两个强分类器组成,所述第一字符识别模型包含的强分类器级数大于所述预识别模型包含的强分类器级数。
如图10所示,在一实施例中,一种应用于服务器的字符识别装置,包括:接收单元601及第二识别单元602,其中:
接收单元601被配置为在用户设备通过第一字符识别模型识别出待识别的图像中不包含目标字符后,接收所述用户设备发送的所述图像。
第二识别单元602被配置为通过第二字符识别模型识别所述图像中是否包含所述目标字符。
在一实施例中,所述第一字符识别模型的算法复杂度可以低于所述第二字符识别模型的算法复杂度。
如图11所示,在一实施例中,在上述图10所示的结构的基础上,一种应用于服务器的字符识别装置,还可以包括第三识别单元603,该第三识别单元603被配置为通过第三字符识别模型识别所述图像中是否包含所述目标字符。其中,所述第三字符识别模型的算法复杂度低于所述第二字符识别模型的算法复杂度、且高于所述第一字符识别模型的算法复杂度。
相应地,所述第二识别单元602被配置为:在通过所述第三字符识别模型识别出所述图像中不包含所述目标字符后,通过所述第二字符识别模型识别所述图像中是否包含所述目标字符。
在进一步的实施例中,可以通过同一算法训练所述第一字符识别模型和所述第三字符识别模型,用于训练所述第一字符识别模型和所述第三字符识别模型的参数值不同;其中所述参数值对应的参数包括:训练分类器所用的正、负样本数目,和/或正样本的命中率,和/或负样本的虚警率,和/或强分类器的级数。
在进一步的实施例中,用于训练获得所述第一字符识别模型和所述第三字符识别模型的算法可以是Adaboost算法。
如图12所示,在一实施例中,在上述图11所示的结构的基础上,一种应用于服务器的字符识别装置,还可以包括预识别单元604,该预识别单元604,被配置为通过预识别模型识别所述图像中是否包含所述目标字符;其中,所述预识别模型的算法复杂度可以低于所述第一字符识别模型的算法复杂度。
相应地,所述第二识别单元602被配置为:在通过所述预识别模型识别出所述图像中包含所述目标字符后,可以通过所述第二字符识别模型识别所述图像中是否包含所述目标字符。
在进一步的实施例中,所述第一字符识别模型和所述预识别模型可以包含用于检测所述目标字符的级联分类器,所述级联分类器可以由至少两个强分类器组成,所述第一字符识别模型包含的强分类器级数可以大于所述预识别模型包含的强分类器级数。
需说明的是,在不相违背的前提下,上述装置实施例和上述方法实施例可以互为补充。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。