本申请涉及图像处理技术领域,特别涉及一种字符识别方法及装置、电子设备、计算机可读存储介质。
背景技术:
光学字符识别(ocr,opticalcharacterrecognition)是指电子设备通过检测图像上字符暗、亮的模式确定其形状,从而将形状翻译成计算机文字的过程。光学字符识别被广泛地应用于生产和生活的各类场景中。简单背景下的光学字符识别的正确率已经可以满足应用的需求,而对于复杂背景,识别正确率仍有较大的提升空间。
技术实现要素:
本申请实施例的目的在于提供一种字符识别方法及装置、电子设备、计算机可读存储介质,用于提高复杂背景下的字符识别正确率。
一方面,本申请提供了一种字符识别方法,包括:
采集待识别图像;
将所述待识别图像作为已训练的目标检测网络的输入,获得所述目标检测网络输出的所述待识别图像的字符位置信息;
从所述待识别图像中裁切出与所述字符位置信息对应的待识别子图像;
将所述待识别子图像作为已训练的分类网络的输入,获得所述分类网络输出的所述待识别子图像中的字符;
依据所述字符位置信息排序对应于每一字符位置信息的字符,得到字符识别结果。
在一实施例中,所述将所述待识别图像作为已训练的目标检测网络的输入,获得所述目标检测网络输出的所述待识别图像中的字符位置信息,包括:
将所述待识别图像作为所述目标检测网络的输入,通过所述目标检测网络将所述待识别图像划分为多个单元格、对每一单元格计算得到边界框预测结果;其中,所述边界框预测结果包括中心点相对坐标、边界框置信度;
筛选所述边界框置信度大于第一阈值的边界框预测结果,作为边界框识别结果;
基于所述边界框识别结果对应单元格的位置信息,将所述边界框识别结果中的中心点相对坐标调整为中心点坐标,得到所述字符位置信息。
在一实施例中,所述目标检测网络,通过如下方式训练得到:
将第一训练集中第一样本图像作为深度学习网络的输入,获得所述第一样本图像中的字符位置预测结果;其中,所述第一样本图像携带字符位置标签;
通过所述字符位置预测结果和所述字符位置标签计算置信度评分;
依据所述字符位置预测结果和所述字符位置标签之间的差异,以及所述置信度评分,调整所述深度学习网络的网络参数;
重复上述过程,直至所述深度学习网络收敛,得到所述目标检测网络。
在一实施例中,所述从所述待识别图像裁切与所述字符位置信息对应的待识别子图像,包括:
基于所述字符位置信息、预设裁切宽度和预设裁切高度,对所述待识别图像进行裁切,得到待识别子图像。
在一实施例中,所述分类网络,通过如下方式训练得到:
将第二训练集中第二样本图像作为深度学习网络的输入,获得对应于所述第二样本图像的分类结果;其中,所述第二样本图像携带字符标签;
通过所述字符标签和所述分类结果之间的差异,调整所述深度学习网络的网络参数;
重复上述过程,直至所述深度学习网络收敛,得到所述分类网络。
在一实施例中,所述依据所述字符位置信息排序对应于每一字符位置信息的字符,得到字符识别结果,包括:
依据所述字符位置信息确定字符之间的相对位置关系;
基于所述相对位置关系和预设字符次序对字符进行排序,将排序后的字符串作为字符识别结果。
在一实施例中,在将排序后的字符串作为字符识别结果之前,所述方法还包括:
判断排序后的字符串中是否存在预设单位字符;
若存在,基于所述单位字符拆分所述字符串,得到至少两个字符串。
另一方面,本申请还提供了一种字符识别装置,包括:
采集模块,用于采集待识别图像;
定位模块,用于将所述待识别图像作为已训练的目标检测网络的输入,获得所述目标检测网络输出的所述待识别图像的字符位置信息;
裁切模块,用于从所述待识别图像中裁切出与所述字符位置信息对应的待识别子图像;
识别模块,用于将所述待识别子图像作为已训练的分类网络的输入,获得所述分类网络输出的所述待识别子图像中的字符;
排序模块,用于依据所述字符位置信息排序对应于每一字符位置信息的字符,得到字符识别结果。
进一步,本申请还提供了一种电子设备,所述电子设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述字符识别方法。
另外,本申请还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序可由处理器执行以完成上述字符识别方法。
在本申请实施例中,通过目标检测网络识别出待识别图像中的字符位置信息后,裁切出与字符位置信息对应的待识别子图像,减少了图像中复杂背景对分类网络的干扰,使得分类网络可以关注待识别子图像中的信息,分类计算出字符,依据字符位置信息对字符排序后,获得字符识别结果;本申请通过依据深度学习的方法以定位加分类的方式,提高了复杂背景下字符识别正确率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍。
图1为本申请一实施例提供的应用场景示意图;
图2为本申请一实施例提供的电子设备的结构示意图;
图3为本申请一实施例提供的字符识别方法的流程示意图;
图4为本申请一实施例提供的目标检测网络的训练方法的流程示意图;
图5为本申请一实施例提供的分类网络的训练方法的流程示意图;
图6为本申请一实施例提供的字符识别装置的框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
图1为本申请一实施例提供的字符识别方法的应用场景示意图。如图1所示,该应用场景包括服务端30和客户端20,服务端30可以是服务器、服务器集群或者云计算中心,服务端30可以对客户端20采集的电子器件表面的图像执行字符识别的业务。客户端20可以是摄像头、智能手机、平板电脑等智能设备。
如图2所示,本实施例提供一种电子设备1,包括:至少一个处理器11和存储器12,图2中以一个处理器11为例。处理器11和存储器12通过总线10连接,存储器12存储有可被处理器11执行的指令,指令被处理器11执行,以使电子设备1可执行下述的实施例中方法的全部或部分流程。在一实施例中,电子设备1可以是上述服务端30。
存储器12可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(staticrandomaccessmemory,简称sram),电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,简称eeprom),可擦除可编程只读存储器(erasableprogrammablereadonlymemory,简称eprom),可编程只读存储器(programmablered-onlymemory,简称prom),只读存储器(read-onlymemory,简称rom),磁存储器,快闪存储器,磁盘或光盘。
本申请还提供了一种计算机可读存储介质,存储介质存储有计算机程序,计算机程序可由处理器11执行以完成本申请提供的字符识别方法。
图3为本申请一实施例提供的字符识别方法的流程示意图,如图3所示,该方法可以包括以下步骤310-步骤350。
步骤310:采集待识别图像。
其中,待识别图像可以包括拍摄现实场景、事物的照片,待识别图像中存在字符,字符可以包括英文字母和数字。
在一实施例中,电子器件表面可以经镭射雕刻在标示牌上形成指示功率、电感等参数的字符。在该实施例中,服务端可以控制相机拍摄电子器件上指定区域,获得待识别图像。其中,待识别图像包括指定区域内镭射形成的多个字符。
步骤320:将所述待识别图像作为已训练的目标检测网络的输入,获得所述目标检测网络输出的所述待识别图像的字符位置信息。
其中,目标检测网络可以是yolov1(youonlylookonce)网络、yolov2网络、yolov3网络中的任意一种,字符位置信息用以表征待识别图像中字符的位置。
在一实施例中,服务端可以将待识别图像作为上述目标检测网络的输入,通过目标检测网络将待识别图像划分为多个单元格(gridcell)、对每一单元格计算边界框(boundingbox)的预测结果,上述预测结果包括中心点相对坐标、边界框的宽度和高度、边界框置信度。边界框预测结果可表示为(x,y,w,h,c),(x,y)表示中心点相对坐标,w表示边界框的宽度,h表示边界框的高度,c表示边界框置信度。
其中,中心点相对坐标是边界框的中心点,相对于该中心点所处的单元格的左上角坐标的偏移值。单元格所在坐标系中,单元格的宽度和长度经归一化处理,因此,上述偏移值处于0到1之间。边界框的宽度w是相对于待识别图像的宽度的比值,处于0到1之间;边界框的高度h是相对于待识别图像的高度的比值,处于0到1之间。边界框置信度c表示预测出的边界框内存在字符的概率,处于0到1之间。
服务端可以筛选边界框置信度大于第一阈值的边界框预测结果,作为边界框识别结果。其中,第一阈值用于区分可能真实存在字符的边界框,可以是经验值0.7。
服务端可以基于边界框识别结果对应单元格的位置信息,将边界框识别结果中的中心点相对坐标调整为中心点坐标,得到字符位置信息。其中,单元格的位置信息可以是单元格的左上角坐标;中心点坐标是边界框中心点在单元格所处坐标系中的坐标位置;字符位置信息表示字符在待识别图像中所处的位置,可以包括中心点坐标、边界框的宽度和高度。
比如:边界框识别结果对应单元格的左上角坐标为(4,5),中心点相对坐标为(0.4,0.5),调整后的中心点坐标为(4.4,5.5)。
步骤330:从所述待识别图像中裁切出与所述字符位置信息对应的待识别子图像。
其中,待识别子图像指待识别图像中需接受进一步识别的局部图像。
服务端可以依据字符位置信息中的中心点坐标确定待识别子图像的中心点,并基于字符位置信息中边界框的宽度和高度确定待识别子图像所占图像区域,并裁切出待识别子图像。
在一实施例中,为避免通过多个字符位置信息中的宽度和高度裁切出尺寸不一的待识别子图像,减少后续修正待识别子图像的尺寸的操作,服务端可以基于字符位置信息中的中心点坐标确定待识别子图像的中心点,并基于预设裁切宽度和裁切高度确定待识别子图像所占的图像区域,并裁切待识别子图像。其中,裁切宽度是需要裁切的待识别子图像的宽度,裁切高度是需要裁切的待识别子图像的高度。
步骤340:将所述待识别子图像作为已训练的分类网络的输入,获得所述分类网络输出的所述待识别子图像中的字符。
其中,分类网络可以是resnet50网络。
服务端对待识别图像进行裁切后,可能得到多个待识别子图像。服务端可以将每一待识别子图像分别输入分类网络,通过分类网络对待识别子图像进行分类计算,得到待识别子图像中的字符。逐个分类后,获得多个字符。
步骤350:依据所述字符位置信息排序对应于每一字符位置信息的字符,得到字符识别结果。
其中,上述字符识别结果为排序后形成的字符串。
在一实施例中,服务端可以依据字符位置信息确定各字符之间的相对位置关系,并基于上述相对位置关系和预设字符次序对字符进行排序,得到排序后的字符串。其中,字符次序可以按照实际应用场景进行配置,比如,可以是自左往右,自上而下。
在一实施例中,字符和其对应的字符位置信息可以包括:1和(3.2,3.0)、0和(3.8,3.0)、u和(4.5,3.0)、h(5.2,3.0)、5和(3.2,4.0)、9和(3.8,4.0)、2和(4.5,4.0)、3和(5.2,4.0)、m和(5.8,4.0)、d和(6.4,4.0)。服务端可以基于上述字符位置信息确定以下相对位置关系:1在0、u、h左边,1在5、9、2、3、m、d上面;0在u、h左边,0在5、9、2、3、m、d上面;u在h左边,u在5、9、2、3、m、d上面;h在5、9、2、3、m、d上面;5在9、2、3、m、d左边;9在2、3、m、d左边;2在3、m、d左边;3在m、d左边;m在d左边。
服务端可以依据上述相对位置关系和自左往右,自上而下的次序,排序得到字符串10uh5923md。
在一实施例中,在一些应用场景中,待识别图像中的字符存在特定含义。比如,电子器件上的字符形成的字符串可能表示器件参数。在这种情况下,为获得更好的字符识别结果,服务端可以对排序得到的字符串进行拆分。
服务端可以判断上述字符串中是否存在预设单位字符。其中,单位字符是表示参数单位的字符,比如,电流的单位字符为a、ma,电压的单位字符为v,功率的单位字符为w、mv。
可基于字符识别的应用场景配置单位字符库,单位字符库中包含场景下常用的单位字符。服务端可以将单位字符库中的单位字符逐个查找上述字符串,若查到,说明存在单位字符。如果字符串中查找到的字符与至少两个单位字符相同,以最长的单位字符为准。比如:字符串中包含ma,这里的字符a即与单位字符a、单位字符ma匹配,此时确定存在单位字符ma。
若存在单位字符,服务端可以基于单位字符拆分字符串,得到至少两个字符串,并将多个字符串作为字符识别结果。
查找到单位字符后,服务端可以将单位字符和单位字符前的若干字符作为一个字符串,从而拆分出至少两个字符串。比如:对于字符串10uh5923nd,服务端可以查找到单位字符uh和nd,从而拆分出字符串10uh和5923nd。
在一实施例中,执行步骤320之前,首先需训练上述目标检测网络。
参见图4,为本申请一实施例提供的目标检测网络的训练方法的流程示意图,如图4所示,该方法包括以下步骤410至步骤440。
步骤410:将第一训练集中第一样本图像作为深度学习网络的输入,获得所述第一样本图像中的字符位置预测结果;其中,所述第一样本图像携带字符位置标签。
其中,第一训练集指包括大量第一样本图像的集合,第一样本图像指包含若干字符,且标注了字符位置标签的图像。字符位置标签表示第一样本图像中字符的位置信息。深度学习网络为未经训练的yolov1(youonlylookonce)网络、yolov2网络、yolov3网络中的任意一种。
字符位置标签可表示为(x1,y1,w1,h1),(x1,y1)表示第一样本图像中实际框(groundtruth)的中心点相对坐标,w1表示实际框的宽度,h1表示实际框的高度。其中,实际框表示第一样本图像中实际存在字符的外围框。
服务端通过目标检测网络计算出第一样本图像中的字符位置预测结果。该字符位置预测结果可表示为(x2,y2,w2,h2,c2),(x2,y2)表示第一样本图像中边界框的中心点相对坐标,w2表示边界框的宽度,h2表示边界框的高度,c2表示该边界框的置信度。
步骤420:通过所述字符位置预测结果和所述字符位置标签计算置信度评分。
服务端可以通过字符位置预测结果和字符位置标签计算置信度评分。其中,置信度评分为边界框的置信度和边界框与实际框的交并比(intersectionoverunion,iou)之间的乘积;交并比为边界框和实际框的交集面积,与边界框和实际框的并集面积之间的比值。
交并比可以衡量预测出的边界框的准确度,交并比为1,说明预测出的边界框与实际框完全重合,此时准确度最高,交并比为0,说明预测出的边界框与实际框完全不重合,此时准确度最低。
服务端可以通过字符位置预测结果和字符位置标签,确定边界框和实际框的交集面积和并集面积,计算出交并比。将交并比和字符位置预测结果中的置信度相乘,获得置信度评分。
步骤430:依据所述字符位置预测结果和所述字符位置标签之间的差异,以及所述置信度评分,调整所述深度学习网络的网络参数。
其中,字符位置预测结果与字符位置标签之间的差异,包括边界框的中心点相对坐标和实际框的中心点相对坐标之间的差异、边界框的宽度与实际框的宽度之间的差异、边界框的高度与实际框的高度之间的差异。
服务端可以构造损失函数,该损失函数的值随字符位置预测结果与字符位置标签之间的差异的减小而减小,随置信度评分的增加而减小。
服务端可以调整深度学习网络的网络参数,并根据调整参数后的深度学习网络对第一样本图像进行预测,重新获得损失函数的值,根据损失函数的值的变化继续调整深度学习网络的网络参数。
步骤440:重复上述过程,直至所述深度学习网络收敛,得到所述目标检测网络。
服务端重复上述过程,通过大量第一样本图像训练深度学习网络后,损失函数的值小于第一期望值。该第一期望值表示深度学习网络的定位准确性满足实用要求。此时,深度学习网络收敛,可作为目标检测网络。
在一实施例中,执行步骤340之前,可以对上述分类网络进行训练。
参见图5,为本申请一实施例提供的分类网络的训练方法的流程示意图,如图5所示,该方法包括以下步骤510至步骤530。
步骤510:将第二训练集中第二样本图像作为深度学习网络的输入,获得对应于所述第二样本图像的分类结果;其中,所述第二样本图像携带字符标签。
其中,第二训练集指包括大量第二样本图像的集合,第二样本图像指包含唯一字符,且携带字符标签的图像。字符标签表示第二样本图像内的字符;在一实施例中,字符标签可以是对字符进行独热编码形成的多维向量,比如,如果需对26个英文字母和10个数字进行识别,则字符标签可以是36维向量,与第二样本图像中存在的字符对应的元素为1,其它元素为0。深度学习网络为未经训练的resnet50网络。
服务端通过上述深度学习网络对第二样本图像进行分类计算,获得分类结果。该分类结果为36维向量,向量的每一元素为0到1之间的数字,用以表示第二样本图像中存在该元素对应的字符的概率。
步骤520:通过所述字符标签和所述分类结果之间的差异,调整所述深度学习网络的网络参数。
服务端可以构造损失函数,该损失函数的值随字符标签与分类结果之间的差异的减小而减小。服务端调整深度学习的网络参数,并根据调整参数后的深度学习网络对第一样本图像进行分类,重新获得损失函数的值,根据损失函数的值的变化继续调整深度学习网络的网络参数。
步骤530:重复上述过程,直至所述深度学习网络收敛,得到所述分类网络。
服务端重复上述过程,通过大量第二样本图像训练深度学习网络后,损失函数的值小于第二期望值。该第二期望值表示深度学习网络的分类准确性满足实用要求。此时,深度学习网络收敛,可作为分类网络。
图6是本发明一实施例提供的字符识别装置的框图,如图6所示,该装置可以包括:采集模块610、定位模块620、裁切模块630、识别模块640、排序模块650。
采集模块610,用于采集待识别图像。
定位模块620,用于将所述待识别图像作为已训练的目标检测网络的输入,获得所述目标检测网络输出的所述待识别图像的字符位置信息。
裁切模块630,用于从所述待识别图像中裁切出与所述字符位置信息对应的待识别子图像。
识别模块640,用于将所述待识别子图像作为已训练的分类网络的输入,获得所述分类网络输出的所述待识别子图像中的字符。
排序模块650,用于依据所述字符位置信息排序对应于每一字符位置信息的字符,得到字符识别结果。
在一实施例中,定位模块620,进一步用于:
将所述待识别图像作为所述目标检测网络的输入,通过所述目标检测网络将所述待识别图像划分为多个单元格、对每一单元格计算得到边界框预测结果;其中,所述边界框预测结果包括中心点相对坐标、边界框置信度;
筛选所述边界框置信度大于第一阈值的边界框预测结果,作为边界框识别结果;
基于所述边界框识别结果对应单元格的位置信息,将所述边界框识别结果中的中心点相对坐标调整为中心点坐标,得到所述字符位置信息。
在一实施例中,所述装置还包括训练模块(图中未示出),用于:
将第一训练集中第一样本图像作为深度学习网络的输入,获得所述第一样本图像中的字符位置预测结果;其中,所述第一样本图像携带字符位置标签;
通过所述字符位置预测结果和所述字符位置标签计算置信度评分;
依据所述字符位置预测结果和所述字符位置标签之间的差异,以及所述置信度评分,调整所述深度学习网络的网络参数;
重复上述过程,直至所述深度学习网络收敛,得到所述目标检测网络。
在一实施例中,裁切模块630,进一步用于:
基于所述字符位置信息、预设裁切宽度和预设裁切高度,对所述待识别图像进行裁切,得到待识别子图像。
在一实施例中,所述装置还包括训练模块(图中未示出),用于:
将第二训练集中第二样本图像作为深度学习网络的输入,获得对应于所述第二样本图像的分类结果;其中,所述第二样本图像携带字符标签;
通过所述字符标签和所述分类结果之间的差异,调整所述深度学习网络的网络参数;
重复上述过程,直至所述深度学习网络收敛,得到所述分类网络。
在一实施例中,排序模块650,进一步用于:
依据所述字符位置信息确定字符之间的相对位置关系;
基于所述相对位置关系和预设字符次序对字符进行排序,将排序后的字符串作为字符识别结果。
在一实施例中,排序模块650,进一步用于:
判断排序后的字符串中是否存在预设单位字符;
若存在,基于所述单位字符拆分所述字符串,得到至少两个字符串。
上述装置中各个模块的功能和作用的实现过程具体详见上述字符识别方法中对应步骤的实现过程,在此不再赘述。
在本申请所提供的几个实施例中,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。