一种文字识别方法、装置及计算机可读存储介质
技术领域
本发明涉及图像处理领域,尤其涉及一种文字识别方法、装置及计算机可读存储介质。
背景技术
随着科学技术的不断发展,文字识别技术得到了广泛的应用,例如对扫描文档的文字进行识别、对拍摄照片中的文字进行识别等。目前通常采用OCR(Optical CharacterRecognition,光学字符识别)来对排列规整的文字进行识别。
发明内容
本说明书实施例提供及一种文字识别方法、装置及服务器。
第一方面,本说明书实施例提供一种文字识别方法,包括:
获取待识别图像,所述待识别图像中包含有多个待识别文字,所述多个待识别文字不成行排列;
根据所述待识别图像,生成目标图像,所述目标图像中包含所述多个待识别文字且所述多个待识别文字成行排列;
根据所述目标图像,以及与所述目标图像对应的识别模型,生成所述多个待识别文字的识别结果。
第二方面,本说明书实施例提供一种文字识别装置,包括:
获取模块,用于获取待识别图像,所述待识别图像中包含有多个待识别文字,所述多个待识别文字不成行排列;
图像处理模块,用于根据所述待识别图像,生成目标图像,所述目标图像中包含所述多个待识别文字且所述多个待识别文字成行排列;
识别模块,用于根据所述目标图像,以及与所述目标图像对应的识别模型,生成所述多个待识别文字的识别结果。
第三方面,本说明书实施例提供一种服务器,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行上述任一项所述方法的步骤。
第四方面,本说明书实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项所述方法的步骤。
本说明书实施例有益效果如下:
在本说明书实施例提供的文字识别方法中,待识别图像中包含有多个待识别文字,多个待识别文字不成行排列,即待识别图像中包含有排列杂乱、不规整的文字,通过获取待识别图像,对待识别图像进行处理,将多个待识别文字进行重组,得到多个待识别文字成行排列的目标图像,将目标图像送入识别模型,以得到多个待识别文字的识别结果,因此,本说明书实施例中的方案能够有效识别待识别图像中的不规整文字,提高了文字识别的多样化。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本说明书实施例第一方面提供的一种文字识别方法的流程图;
图2为本说明书实施例体提供的一种图像分割方法的流程图;
图3为本说明书实施例示出的待识别图像的示意图;
图4为本说明书实施例示出的分离背景后的待识别文字图像的示意图;
图5为本说明书实施例示出的膨胀处理图像的示意图;
图6为本说明书实施例示出的多个分割图像的示意图;
图7为本说明书实施例示出的目标图像的示意图;
图8为本说明书实施例示出的样本示意图;
图9为本说明书实施例提供的另一种文字识别方法的流程图;
图10为本说明书实施例第二方面提供的文字识别装置的示意图;
图11为本说明书实施例第三方面提供的文字识别装置的示意图。
具体实施方式
为了更好的理解上述技术方案,下面通过附图以及具体实施例对本说明书实施例的技术方案做详细的说明,应当理解本说明书实施例以及实施例中的具体特征是对本说明书实施例技术方案的详细的说明,而不是对本说明书技术方案的限定,在不冲突的情况下,本说明书实施例以及实施例中的技术特征可以相互组合。
第一方面,本说明书实施例提供的一种文字识别方法,如图1所示,为本说明书实施例提供的一种文字识别方法的流程图,该方法包括以下步骤:
步骤S11:获取待识别图像,所述待识别图像中包含有多个待识别文字,所述多个待识别文字不成行排列;
本说明书实施例中,待识别图像可以是通过扫描仪扫描文件得到的图像,也可以是拍照获得的图像,还可以是其他图像。待识别图像中包含有不成行排列的多个待识别文字,例如,待识别图像为扫描一张宣传海报获得的图像,在该宣传海报中,包含有杂乱排列的宣传标语,待识别文字可以为该宣传标语。或者,待识别图像中包含有公章,待识别文字可以为公章上成圆弧形排列的公司名称。应理解的是,待识别文字可以是汉字、英文、蒙古文、数字等,这里不做限定。
步骤S12:根据所述待识别图像,生成目标图像,所述目标图像中包含所述多个待识别文字且所述多个待识别文字成行排列;
本说明书实施例中,为了对待识别文字进行识别,可以先对待识别图像进行处理,使得待识别文字成行排列,生成目标图像。目标图像的生成方法可以根据需要进行选择,在一个实施例中,可以将待识别图像中的单字区域进行提取,再将提取的单字区域进行成行拼接,获得目标图像。在进行成行拼接时,可以根据待识别文字在待识别图像中的位置来拼接,如从上到下的位置顺序来拼接,也可以按照其他规则进行拼接。
步骤S13:根据所述目标图像,以及与所述目标图像对应的识别模型,生成所述多个待识别文字的识别结果。
应理解的是,识别模型与目标图像为相互对应的,即,识别模型能够对至少包括目标图像在内的对象进行识别。例如,目标图像中包含的待识别文字为汉字,则识别模型可以为汉字识别模型,或者,目标图像为文字成单行排列的图像,则识别模型可以为单行文字识别模型。在一个实施例中,为了提高识别准确率,识别模型可以根据目标图像的特征来进行训练。将目标图像作为输入数据输入至识别模型中,能够输出与多个识别文字对应的识别结果。
可选地,所述根据所述待识别图像,生成目标图像,包括:对所述待识别图像进行分割,获得多个分割图像,所述多个分割图像中的每个分割图像中至少包含一个待识别文字;对所述多个分割图像进行成行排列拼接,生成所述目标图像。
本说明书实施例中,在对待识别图像进行分割时,可以将每个待识别文字单独进行分割,也可以对多个待识别文字作为整体进行分割。在一个实施例中,可以将相邻文字之间的距离作为分割条件,例如,当两个相邻文字之间的距离小于或等于一阈值时,将这两个相邻文字作为一个整体从待识别图像中分割出来,当两个相邻文字之间的距离大于该阈值时,将这两个相邻文字作为单独的两部分从待识别图像中分割出来。
可选地,所述对所述多个分割图像进行成行排列拼接,生成所述目标图像,包括:将所述多个分割图像中的每个分割图像的尺寸均调整为预设尺寸;对尺寸调整后的所述多个分割图像进行成行排列拼接,生成所述目标图像。
应理解的是,获得的多个分割图像的尺寸有可能不同,在进行分割图像成行排列时,可以对多个分割图像的尺寸进行统一。预设尺寸可以根据实际需要进行设置,在一个实施例中,可以在多个分割图像中确定出尺寸最大的分割图像,将该最大的分割图像尺寸作为预设尺寸,将其他分割图像的尺寸均调整为该最大的分割图像尺寸。另外,当分割图像为不规则形状时,可以将分割图像调整为预设形状,例如将其他形状的图像调整为矩形。在成行拼接时,可以沿每个分割图像的边缘进行拼接,也可以将每个分割图像的边缘按照预设的重叠尺寸进行部分重叠拼接,这里不做限定。
需要说明的是,由于待识别图像中的待识别文字可能存在倾角,且多个待识别文字的倾角有可能不同,本说明书实施例中,可以针对每个分割图像,对每个分割图像中的待识别文字的倾角进行纠正,对纠正后的分割图像进行成行排列。当然,也可以无需对待识别文字的倾角进行纠正,直接进行分割图像的成行排列。
如图2所示,为本说明书实施例体提供的一种图像分割方法的流程图,该方法包括以下步骤:
步骤S21:将所述多个待识别文字从所述待识别图像的背景中分离,获得待识别文字图像;
步骤S22:对所述待识别文字图像进行膨胀处理,得到膨胀处理图像;
步骤S23:确定所述膨胀处理图像中的多个连通区域;
步骤S24:对所述多个连通区域中的每个连通区域进行分割,获得所述多个分割图像。
如图3所示,为本说明书实施例示出的待识别图像的示意图,在该待识别图像中包含多个不成行排列的待识别文字。在进行待识别文字与背景进行分离时,可以采用二值化的方法进行分离。例如,当待识别图像为彩色图像时,首先需要将彩色图像进行灰度化处理,对得到的灰度图像进行二值化处理,二值化处理可以将待识别文字从图像背景中剥离。在进行二值化处理时,可以根据实际需要进行阈值的选取,例如,将阈值设定为60,那么,将灰度图像中灰度值大于或等于该阈值的像素点的灰度值均设置为255,灰度值小于该阈值的像素点的灰度值均设置为0,请参考图4,为分离背景后的待识别文字图像的示意图。
接下来,对所述待识别文字图像进行膨胀处理,获得待识别文字的连通区域。膨胀处理中的膨胀核可以根据实际需要进行设置,例如,膨胀核可以在5×5~11×11之间滑动,以该膨胀核对对待识别文字图像进行膨胀处理。以上述二值化处理为例,待识别文字图像为二值化处理后的图像,使用膨胀核对二值化处理后的图像进行膨胀处理,得到膨胀处理图像。另外,本说明书实施例中,膨胀处理可以分为两步:首先,以第一预设膨胀核对对待识别文字图像进行膨胀处理,其次,在水平方向上以第二预设膨胀核进行膨胀处理。这样,如果存在水平位置相差较小的多个待识别文字,即这多个待识别文字近似成行排列时,可以将这多个待识别文字通过膨胀处理进行连通,以作为一个整体,减少了分割图像的数量以及图像拼接的次数,进而提高了图像分割以及图像拼接的效率。请参考图5所示,为本说明书实施例示出的膨胀处理图像的示意图。
在获得膨胀处理图像之后,确定多个连通区域。本说明书实施例中,统计膨胀处理图像中连通区域的数量,以及统计各个连通区域的面积,计算所有连通区域的面积总和,并获得每个连通区域的平均面积,将各个连通区域的实际面积与平均面积进行对比,将平均面积与实际面积之差大于一预设面积的连通区域筛除掉,由于这些实际面积过于小的连通区域可能是图像中的一些干扰像素点,将这些干扰像素点去除之后,得到待识别文字的连通区域。
最后,将每个连通区域分割出来,获得多个分割图像,应理解的是,由于连通区域中的待识别文字是经过膨胀处理的,因此,可以通过腐蚀处理来对膨胀后的待识别文字进行还原,在一个实施例中,采用与膨胀处理相同的内核来进行腐蚀处理。请参考图6,为本说明书实施例示出的多个分割图像的示意图。
可选地,所述对所述多个分割图像进行成行排列拼接,生成所述目标图像,包括:按照预设排列规则对所述多个分割图像进行成行排列拼接,生成所述目标图像。
本说明书实施例中,预设排列规则可以根据实际需要来进行设定,在一个实施例中,预设排列规则为从上到下,从左到右的排列规则,即将位于最上方且最左边的第一分割图像作为行排列的第一幅图像,在将与第一分割图像高度相同的且位于第一分割图像右边的第二分割图像作为行排列的第二幅图像,以此类推。在另一个实施例中,预设规则为语义规则,即待识别文字存在语义上的联系,例如,待识别文字为一句完整的话,则根据语义的前后顺序来进行成行排列。应理解的是,为了能够按照预设排列规则对多个分割图像进行排列,在对多个连通区域进行分割时,可以获取多个连通区域的位置信息,根据该位置信息来对分割图像进行成行排列。请参考图7,为本说明书实施例示出的目标图像的示意图。
可选地,在所述根据所述目标图像,以及与所述目标图像对应的识别模型,生成所述多个待识别文字的识别结果之前,所述方法还包括:根据所述多个待识别文字的特征以及预设字库,生成一预设数量的样本,所述样本为文字成行排列的图像;根据所述样本,对初始识别模型进行训练,获得所述识别模型。
应理解的是,不同的待识别图像中的待识别文字也不同,例如,不同的文字设计导致待识别文字在字体、文字旋转、文字倾角等方面均不同,本发明实施例中,统计待识别文字的多种特征,包括但不限于文字的字体特征、旋转角度特征、倾斜角度特征。预设字库可以根据实际需要来进行设置,在一个实施例中,预设字库为包含了3000个常用字的汉字集合。
在一个实施例中,在构建样本时,可以先在预设字库中随机选出多个字,这些字在预设字库中选出来时格式可以都是相同的,也可以是不同的。将选出的多个字排成一列,生成初始的行排列图像,再对初始的行排列图像进行处理,包括对每个字的字体、倾角等特征参数进行随机调整,生成样本,应理解的是,与样本对应的识别结果为在预设字库中选出的这多个字。
请参考图8,为本说明书实施例示出的样本示意图,图8中示出三个样本,分别为样本1、样本2、样本3,通过用预设字库中的字模拟待识别文字的特征,如模拟字体特征和旋转角度特征,自动生成成行排列的图像作为样本。另外,为了使模拟的样本更加接近真实的图像数据,还可以在样本中加入文字的随机加粗、笔画断开、笔画毛刺、噪声等。样本数量可以根据需要来进行设定,在一个实施例中,为了能够使生成的样本尽可能多的涵盖待识别文字的文字特征,预设数量设定为20万,即将预设字库中的3000个常用汉字与待识别文字的特征进行随机组合,生成20万幅模拟图像作为样本,来训练识别模型。
本说明书实施例中,可以将预设数量的样本划分为训练样本和验证样本,训练样本和验证样本的比例可以根据需要进行设定。以上述样本的预设数量为20万为例,可以将这20万数据进行9:1的训练验证分割,即训练样本为18万,验证样本为2万。将训练样本输入到初始识别模型中,在预设迭代次数下进行训练,调整识别模型的参数,并通过验证样本验证识别模型中的准确率,在一个实施例中,预设迭代次数为2万次,得到的识别模型在验证样本上的准确率收敛至100%。
由于待识别图像中的多个待识别文字的倾斜角度均不相同,无法统一做倾斜角度纠正,因此,本说明实施例中,所述多个待识别文字的特征至少包括待识别文字的倾斜角度特征,所述根据所述多个待识别文字的特征以及预设字库,生成一预设数量的样本,包括:根据所述倾斜角度特征以及所述预设字库,生成所述样本。通过上述方法,生成包含有各种倾斜角度的样本,无需对待识别图像中的待识别文字进行纠正,
可选地,所述识别模型为长短时记忆网络(Long Short-Term Memory,LSTM)及联结主义时间分类识别模型(Connectionist Temporal Classifier,CTC)。除了上述LSTM+CTC的识别模型,还可以采用其他模型,如注意力(Attention)模型,这里不做限定。
可选地,所述方法还包括:获取标准测试图像,所述标准测试图像包含有用于标记所述标准测试图像的真实识别结果的图像标签;通过所述识别模型对所述标准测试图像进行识别,获得目标识别结果;根据所述目标识别结果,以及所述真实识别结果,对所述识别模型的参数进行调整。
需要说明的是,标准测试图像为真实的图像,可以在现有的国际标准测试图像数据库中获取,这些标准测试图像带有标注的图像标签,图像标签中标注有标准测试图像的识别结果,例如,标准测试图像中包含有多个文字,那么图像标签为多个文字的真实识别结果。
虽然利用模拟的样本训练出了识别模型,但是识别模型难免会对生成的数据特征过于拟合,因此,可以采用标准测试图像来降低这些过拟合。本说明书实施例中,将标准测试图像进行处理得到行排列图像,将行排列图像输入至上述训练完成后得到的识别模型中,得到该行排列图像的目标识别结果,将目标识别结果与图像标签中的真实识别结果进行比对,以对识别模型的参数进行调整。在一个实施例中,如果对标准测试图像的识别正确率小于一预设正确率,可以对识别模型的参数进行调整,如调整LSTM中的隐藏层的维度,直到对标准测试图像的识别正确率大于或等于该预设正确率为止。
为了更好的理解本说明书实施例提供的文字识别方法,下面以识别模型为LSTM+CTC为例来对本说明书实施例提供的文字识别方法来进行说明。在该实施例中,生成的样本数量为20万,训练样本与验证样本的比例为9:1,训练模式时的迭代次数为2万次。请参考图9,为本说明书实施例提供的文字识别方法的流程图,该流程图中分为两个部分,第一部分为图像处理部分,第二部分为获取识别模型部分。
第一部分包括以下步骤:
步骤S91,输入具有复杂背景、文字不成行排列的待识别图像;
步骤S92,对待识别的图像进行二值化处理,获取待识别文字部分,去除背景噪音;
步骤S93,对获取的待识别文字部分进行膨胀处理,得到多个连通区域;
步骤S94,将多个连通区域分割成小图,同一分割图像的大小后拼接为成行图像。
第二部分包括以下步骤:
步骤S95,根据待识别文字的特征,模拟旋转角度、字体分布等要素,生成20万样本;
步骤S96,20万样本按照9:1的比例分成训练样本和验证样本,送入LSTM+CTC识别模型训练;
步骤S97,进行2万次迭代后,识别模型在验证样本上的正确率收敛到100%,得到模型A。
最后,将步骤S94生成的成行图像送入模型A中预测,得到识别结果。
在上述文字识别过程中,由于将文字的旋转角度和倾角作为模拟样本的因素,因此,在图像处理部分中,无需对文字进行倾斜或旋转角度的纠正。
第二方面,基于同一发明构思,本说明书实施例提供一种文字识别装置,请参考图10,包括:
获取模块101,用于获取待识别图像,所述待识别图像中包含有多个待识别文字,所述多个待识别文字不成行排列;
图像处理模块102,用于根据所述待识别图像,生成目标图像,所述目标图像中包含所述多个待识别文字且所述多个待识别文字成行排列;
识别模块103,用于根据所述目标图像,以及与所述目标图像对应的识别模型,生成所述多个待识别文字的识别结果。
在一种可选实现方式中,图像处理模块102,包括:
第一图像分割模块1021,用于对所述待识别图像进行分割,获得多个分割图像,所述多个分割图像中的每个分割图像中包含一个以上待识别文字;
第一图像拼接模块1022,对所述多个分割图像进行成行排列拼接,生成所述目标图像。
在一种可选实现方式中,所述装置还包括:
分离模块104,用于将所述多个待识别文字从所述待识别图像的背景中分离,获得待识别文字图像;
膨胀处理模块105,用于对所述待识别文字图像进进行膨胀处理,得到膨胀处理图像;
区域确定模块106,用于确定所述膨胀处理图像中的多个连通区域;
第一图像分割模块1021,包括:
第二图像分割模块,用于对所述多个连通区域中的每个连通区域进行分割,获得所述多个分割图像。
在一种可选实现方式中,第一图像拼接模块1022,包括:
调整模块,用于将所述多个分割图像中的每个分割图像的尺寸均调整为预设尺寸;
第二图像拼接模块,用于对尺寸调整后的所述多个分割图像进行成行排列拼接,生成所述目标图像。
在一种可选实现方式中,第一图像拼接模块1022,包括:
第三图像拼接模块,用于按照预设排列规则对所述多个分割图像进行成行排列拼接,生成所述目标图像。
在一种可选实现方式中,所述装置还包括:
样本生成模块107,用于根据所述多个待识别文字的特征以及预设字库,生成一预设数量的样本,所述样本为文字成行排列的图像;
模型生成模块108,用于根据所述样本,对初始识别模型进行训练,获得所述识别模型。
在一种可选实现方式中,所述多个待识别文字的特征至少包括待识别文字的倾斜角度特征,样本生成模块107,包括:
第一样本生成模块,用于根据所述倾斜角度特征以及所述预设字库,生成所述样本。
在一种可选实现方式中,所述识别模型为长短时记忆网络及联结主义时间分类识别模型。
在一种可选实现方式中,所述装置还包括:
标准测试图像获取模块109,用于获取标准测试图像,所述标准测试图像包含有用于标记所述标准测试图像的真实识别结果的图像标签;
处理模块110,用于通过所述识别模型对所述标准测试图像进行识别,获得目标识别结果;
参数调整模块111,用于根据所述目标识别结果,以及所述真实识别结果,对所述识别模型的参数进行调整。
关于上述装置,其中各个模块的具体功能已经在本发明实施例提供的文字识别方法的实施例中进行了详细描述,此处将不做详细阐述说明。
第三方面,基于与前述实施例中文字识别方法同样的发明构思,本发明还提供一种文字识别装置,如图11所示,包括存储器1104、处理器1102及存储在存储器1104上并可在处理器1102上运行的计算机程序,所述处理器1102执行所述程序时实现前文所述文字识别方法的任一方法的步骤。
其中,在图11中,总线架构(用总线1100来代表),总线1100可以包括任意数量的互联的总线和桥,总线1100将包括由处理器1102代表的一个或多个处理器和存储器1104代表的存储器的各种电路链接在一起。总线1100还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口1106在总线1100和接收器1101和发送器1103之间提供接口。接收器1101和发送器1103可以是同一个元件,即收发机,提供用于在传输介质上与各种其他装置通信的单元。处理器1102负责管理总线1100和通常的处理,而存储器1104可以被用于存储处理器1102在执行操作时所使用的数据。
第四方面,基于与前述实施例中基于文字识别方法的发明构思,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前文所述基于文字识别方法的任一方法的步骤。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的设备。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令设备的制造品,该指令设备实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。