一种脱机手写、印刷汉字识别方法及系统与流程

文档序号:14011377阅读:631来源:国知局

本发明涉及一种脱机手写、印刷汉字识别方法及系统。



背景技术:

目前,地质调查的野外工作是数据的重要来源,这部分人工记录的原始地质资料在地质大数据中占有相当大的比例,其蕴含着大量有价值的信息,但出于技术原因,这部分数据中的信息无法利用,成为了“暗数据”。汉字识别技术主要分为印刷体识别和手写体识别两大类。手写汉字的随意性大,比印刷体难识别。手写汉字识别根据数据采集的方式又可分为联机识别和脱机识别。在联机识别中,计算机能获得输入字符的笔画顺序,因此比脱机识别获得的信息更多,更容易识别。再加上拍照或扫描的过程中,不同的光照、分辨率、纸张等都会带来干扰。因此,脱机手写汉字识别远比联机识别要难。

尽管一些现有技术声称脱机手写汉字识别率已经达到了99%,这些结果让人们误认为手写体汉字识别问题已经得到了很好的解决。如cn106408038a的专利文献公开了一种基于卷积神经网络的手写汉字旋转汉字识别方法,其包括在图形处理器上搭建基于包含多种卷积神经网络模型的caffe深度学习框架的平台;准备训练数据集和带有标签的测试数据集,并利用上述数据集在图形处理器上训练上述卷积神经网络模型进行一级手写汉字的识别;将hcl2000数据库的手写汉字原始图像和随机旋转各个方向后的图像输入卷积神经网络模型,对网络进行训练。最后输入未知旋转汉字进行测试,得到对汉字图像的识别结果,但其显著缺点是采用链状网络,导致识别率大大降低。实际上,每当遇到真实的无限制的手写样本时,很多算法的识别率便会出现明显的降低。导致这些差距的潜在因素在于汉字的独特性和手写体汉字风格的多样性,这些因素给手写体汉字识别带来了很大的困难,在实际应用中尤其突出,主要表现在以下几个方面:第一,汉字数量多。按照我国汉字基本集gb2312-80的标准,常用的第一级汉字类别有3755个,第二级汉字类别有3008个,总计为6763个。因此,对于汉字识别系统来说,要能够正确识别如此多类别的汉字具有很大的挑战性。第二,结构复杂。汉字有各种笔划,笔划又组成各种字根,字根按照一定规律分布在各个子空间中,形成不同的字形。可以看出,这种构字方式相当复杂,笔划相互交错,给汉字识别带来很大的困难。第三,相似字多。汉字中有很多相似字,有的只差一“点”或一“捺”,这些相似字很容易混淆,因此在汉字特征提取和分类器设计上,对这些相似字必须给予特别的注意。第四,书写风格多变。每个人的书写风格千差万别,因此即使是同一个汉字,由不同的人写出来,差异也是非常明显的,要从成百上千种风格种提取出本质不变的特征并非易事。此外,书写纸张的好坏,字形的大小,扫描设备的优劣,噪声的干扰等,都会给汉字识别研究工作带来很大的干扰和困难。



技术实现要素:

有鉴于此,本发明的主要目的在于提供一种脱机手写、印刷汉字识别方法,其实现简单,能够显著提高脱机手写汉字的识别精准率。

为达到上述目的,本发明的技术方案是这样实现的:一种脱机手写、印刷汉字识别方法,其特征在于,包括:制作训练集:载入训练集,载入模型进行训练,根据模型训练阶段训练出的权重,对训练集进行识别,找到训练集中的错误部分,并剔除,调整参数,得到最终训练集;识别脱机手写汉字:根据所述最终训练集,载入模型和参数,读取汉字图像进行二值化与灰度化处理,得到新的汉字图像。

本发明的另一目的在于,提供一种脱机手写、印刷汉字识别系统,其特征在于,包括:训练单元,用于载入训练集,载入模型进行训练,根据模型训练阶段训练出的权重,对训练集进行识别,找到训练集中的错误部分,并剔除,调整参数,得到最终训练集;识别单元,用于根据所述最终训练集,载入模型和参数,读取汉字图像进行二值化和灰度化处理,然后将二值化的图像和灰度化的图像像素取与,得到新的汉字图像。

本发明相对于现有技术具有以下突出的实质性特点和显著的进步:

第一,实现方法简单,包括制作训练集与识别脱机手写汉字两个步骤,制作训练集来自hcl2000、hwdb1.1、印刷体字库和自行制作的地质行业高频汉字,共738份,约3201306个汉字样本。不同的训练样本加和使得模型的泛化能力增强,能识别更多书写风格的汉字。剔除了训练集中的错误,使得模型不被错误干扰。具体使用时,输入一张图片,先对图片进行预处理。之后将预处理得到的矩阵传入模型,进行预测,即可得到分类号。再将分类号解码为汉字。也可以将包含单个汉字的多张图片放在一个文件夹,批量识别。

第二,脱机汉字识别精确,读取汉字图像进行二值化和灰度化处理,然后将二值化的图像和灰度化的图像像素取与,保留了笔画的轻重。模型采用神经卷积网络结构:共包含44个卷积层、10个池化层,9个融合层,9个批规范化层,2个dropout层、1个全连接层、1个输入层和1个输出层,从一层引出多层并最终汇聚成一层的9个inception模块,通过1×1卷积核、采用3×9和9×3的卷积核去识别笔画中的横和竖、小的卷积核叠加来减少参数、采用gridsizereduction来缩小图片、采用labelsmoothing来降低模型过度自信,使得识别精准率真正达到99.95%以上。

第三,适用范围广泛,训练集中加入了地质行业常用字符训练集,包括汉字、英文字母、数字和常用标点符号,每个字符平均300份样本,这些整理加工自存量的地质资料、地质报告、原始记录等和不同地质工作者的手写样本。克服了现有技术不能识别地质行业高频汉字的缺点,根据试验,能够识别个地质行业常用汉字共559个,英文字母、数字和标点符号共79个,确保了在地质领域内字符集的高覆盖率。

附图说明

图1为本发明的脱机手写、印刷汉字识别方法的流程图;

图2为本发明的模型结构示意图;

图3为本发明的误差效果示意图;

图4为本发明的脱机手写、印刷汉字识别系统的结构示意图;

图5为地质行业常用字符训练集示意图;

图6为英文字母、数字和标点符号示意图;

图7至图12为本发明的实施例示意图。

具体实施方式

下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。

请参照图1,本发明的脱机手写、印刷汉字识别方法包括:制作训练集:载入训练集,载入模型进行训练,根据模型训练阶段训练出的权重,对训练集进行识别,找到训练集中的错误部分,并剔除,调整参数,得到最终训练集;识别脱机手写汉字:根据所述最终训练集,载入模型和参数,读取汉字图像进行二值化和灰度化处理,然后将二值化的图像和灰度化的图像像素取与,得到新的汉字图像。

优选地,所述训练集包括:hcl2000、hwdb1.1、自行采集的138份印刷体合计738份,559个地质高频汉字,每个汉字平均100个样本。作为具体的实施例,分别来自300份/字的hcl2000、300份/字的hwdb1.1、自行采集的138份/字的印刷体,合计738份/字;其它字符包括地质行业常用汉字和字母、数字及一些常用符号,共计730个,每个字符300个样本。不同的训练样本加和使得模型的泛化能力增强,能识别更多书写风格的汉字。剔除了训练集中的错误,使得模型不被错误干扰。加入定制的高频字训练集确保了在地质领域内字符集的高覆盖率。

优选地,训练集统一保存为n×64×64×1的图像数组和n×1的标签数组,其中n为汉字个数,且n=(300+300+138)份×3755个+300份×730个;64×64为每个字符图像的大小,取值范围为[0,1)。

优选地,hwdb1.1一级汉字中每个汉字包含300份样本。该数据集来自中科院自动化所,书写随意性大。从原始的gnt格式数据读出汉字图像和标签,将汉字图像缩放为64×64,值变为[0,1)。由于图像偏暗,因此将数据开方使得图像变亮。

优选地,hcl2000来自北京邮电大学模式识别研究室。每个汉字有1000份样本,书写较为工整。为了突出hwdb1.1训练集,使模型达到较高的识别率。每个汉字只优选了其中的300份样本。

优选地,为了兼顾印刷体识别,首先整理制作了138份印刷体样本集,这些字库涵盖了常见字体库,如楷书、行书、隶书、草书等。首先下载每种字体的文件,然后利用python的imagedraw和imagefont模块将每种字体的全部汉字样本画成图片保存,再将图片转成n×64×64×1的数组,并生成标签数组。优选地,地质行业常用字符训练集包括汉字、英文字母、数字和常用标点符号,每个字符平均300份样本,这些整理加工自存量的地质资料(地质报告、原始记录等)和不同地质工作者的手写样本。此训练集中的汉字是一级汉字以外的559个地质行业常用汉字,与一级汉字组合,使得在地质行业的汉字覆盖率达到了99.95%。这些字如图5所示:英文字母、数字和标点符号共171个,如图6所示。

优选地,包括将4种训练集合并。训练集中汉字的背景色为黑色,即像素值为0。

优选地,根据模型训练阶段训练出的权重,对训练集进行识别,找到训练集中的错误部分,并剔除,得到最终训练集。

优选地,所述进行二值化与灰度化处理的步骤还包括:先对要识别的彩色汉字图像的所有像素点[r,g,b]聚类,得到两个类别;再根据图像4个角的类别区分背景类别和汉字内容类别,因为4个角往往是背景;之后根据聚类结果将图像二值化,同时将原始图像灰度化,将r、g、b三个通道采用算法:r×0.299+g×0.587+b×0.114得到灰度值。

优选地,还包括将所述新的汉字图像的宽和高之间较大的那个缩放到64,另一个等比例缩放,然后两边填充为背景的步骤。

优选地,还包括:将汉字图像数组调整为神经网络的输入维数的步骤。

请参照图2,所述模型采用神经卷积网络结构:网络走向为从上往下,每一层的输入为上一层的输出。初始输入层(见图2中右上角编号为1的层)大小为64×64×1,输入的图像大小是64×64,图像为灰度图,故只有1个通道;首先使用64个7×7的卷积核对输入图像做卷积(编号2);然后做大小为5×5,步幅为3的池化(编号3),此时输出数组大小为22×22×64;下面是9个inception单元。第一个inception单元先接一个batchnormalization层(编号4),将上一层的结果批规范化,然后batchnormalization的输出作为输入,分别引出3个分支。第一个分支是32个1×1的卷积(编号5)、第二个分支为48个1×1的卷积(编号6)然后接96个3×3的卷积(编号8)、最后一个分支是3×3的池化(编号7)然后接16个1×1的卷积(编号9)。最后将3个分支的输出用concatenate层(编号10)组合得到的输出数组大小为22×22×(32+96+16)=22×22×144。每个inception单元都是将几个大小不同的卷积结果和一个池化组合,每种卷积之前先接一个1×1的卷积,有一个单独的1×1卷积,池化则是在后面接一个1×1的卷积。第二个inception单元先将上一个inception的输出批规范化,然后分别引出5个分支:包含48个1×1的卷积核,还包含3×3、3×9、9×3的卷积,都是先接数个1×1的卷积,卷积核数分别为120、4、4。还包含一个池化层接16个1×1的卷积。这5个分支组合之后的特征数为48+120+4+4+16=192。第三个inception单元有3个分支,前两个分支都是卷积。与之前不同的是,这两个卷积的步长都为2,因此卷积之后的图像大小变为11×11,池化的步长也为2,最后3个分支得到的图像大小相同,将它们合并之后图像大小缩小为11×11。共有3个这样的图像大小改变的inception,3次缩小之后最终图像大小为3×3。每个inception后图像的特征数逐渐增加,最终为1440个。所以9个inception之后输出数组大小为3×3×1440。之后接一个概率为0.2的dropout层(编号74);再接一个大小为4096的全连接层(编号75);然后再接一个概率0.5的dropout(编号76),最后接大小为4485的softmax层(编号77)作为输出。输出向量表示该汉字属于每个类的概率。

请参照图3,按上面的模型结构搭建神经网络,读入训练集,然后将训练集传入模型进行训练。训练采用随机梯度下降方法,学习率0.01,动量项0.9。为了更好的使用硬件设置提高训练效率,训练通常都是每次训练小批量样本,这里每个批量为100份样本。对于每个小批量采用随机梯度算法来调整误差。随机梯度下降虽然不是每次迭代的损失函数都朝最优方向,但整体方向是向全局最优解的,最终的结果往往是全局最优解附近。每次调整是本次梯度方向与上次梯度方向的加权平均。动量项0.9表示上次梯度方向占0.9,这样保持了梯度方向的稳定,加速训练。

优选地,共训练10代,每代用时9620秒。训练的误差见图3。可见技术效果明显提升,训练完毕将参数保存到文件。参数来自卷积层、批规范层、全连接层。每个卷积包含一个卷积核矩阵和一个偏置。一个卷积层包含多个卷积,共有44个卷积层。每个卷积层包含一个w×h×m×n的权重矩阵,其中w和h表示卷积核的宽和高,m表示上一层的特征数,n表示本层的特征数。每个批规范操作包含4个参数:均值、方差、α、β,共有9个批规范层。每个全连接层包含一个m×n的矩阵和n个偏置,其中m表示上一层神经元个数,n表示本层神经元个数。共有2个全连接层。参数文件大小为275m。

优选地,还包括训练集纠错,3个训练集都有不同程度的错误,这些错误会干扰识别。因此需要剔除错误再训练,hwdb1.1训练集的错误主要是标签错误,有少量的涂抹图片,还有一些人类也无法识别的图片。hcl2000训练集的错误主要是汉字分割错误,约有4400个这样的错字。印刷体训练集的错误主要是里面混入了一些繁体字。将前面训练出的模型用来识别训练集,输出识别错误的训练集。然后手工选出这些识别错误的训练集中需要剔除的,从训练集中剔除。

优选地,包括重新训练参数。将前面剔除错误后的训练集载入模型,然后重新训练参数,精准率极大提升。

优选地,汉字识别的步骤,只需输入汉字图片,程序自动对其进行预处理,然后传给神经网络模型进行识别,最后将识别结果编码为汉字输出。

优选地,图片预处理的步骤,对于要识别的彩色汉字图像,先对所有像素点(r,g,b)聚类,得到两个类别,使用k近邻聚类就有不错的效果,该方法先随机选择2个类别中心,然后计算所有点到两个类别中心的距离,决定每个点属于哪个类,之后将每个类别的点取平均值作为新的类别中心,再次迭代;聚类后再根据图像4个角的类别区分背景类别和汉字内容类别,因为4个角往往是背景;之后根据聚类结果将图像二值化。同时将原始图像灰度化,将r、g、b三个通道利用算法r×0.299+g×0.587+b×0.114得到灰度值。然后将二值化的图像和灰度化的图像像素取与,得到的图像具有黑色背景和连续值的汉字图像。相比直接二值化,该方法保留了笔画的轻重,有利于识别。最后再将图像缩放为64×64。为了不引起变形,将图像的宽和高较大的那个缩放到64,另一个等比例缩放,然后两边填充为背景。这样保持图像宽高比例不变。否则有些汉字图像不是方形的,强行缩放为64×64会引起形变,例如本来是“日”,可能缩放后变成了“曰”。在传给神经网络识别之前,还需要将汉字图像数组调整为神经网络的输入维数,即64×64×1的数组,取值范围为0~1,数据类型为float32。

优选地,识别的步骤。具体使用时,输入一张图片,先对图片进行预处理。之后将预处理得到的矩阵传入神经网络,进行预测,网络的最后一层为softmax层,大小为4485,跟上一层全连接,得到一个4485维的向量,设该向量为(x1,x2,…,x4485)t,t为转置,之后根据算法:

将其归一化,得到输出向量的每个分量pk的值,k=1,2,…,4485,最终输出向量(p1,p2,…,p4485)t。现在输出向量的每个分量pk表示该汉字属于第k个类的概率,取最大分量的下标argmax{pk},即为该汉字最终的分类号。再将分类号解码为汉字。也可以将包含单个汉字的多张图片放在一个文件夹,批量识别。

图4示意了本发明的脱机手写、印刷汉字识别系统,包括:训练单元101,用于载入训练集,载入模型进行训练,根据模型训练阶段训练出的权重,对训练集进行识别,找到训练集中的错误部分,并剔除,调整参数,得到最终训练集;识别单元102,用于根据所述最终训练集,载入模型和参数,读取汉字图像进行二值化和灰度化处理,然后将二值化的图像和灰度化的图像像素取与,得到新的汉字图像。

作为具体的实施例,步骤一、读入要识别的汉字图像,见图7。

步骤二、将读入的图像二值化,见图8。先对所有像素点(r,g,b)聚类,得到两个类别,使用k近邻聚类就有不错的效果,该方法先随机选择2个类别中心,然后计算所有点到两个类别中心的距离,决定每个点属于哪个类,之后将每个类别的点取平均值作为新的类别中心,再次迭代;聚类后再根据图像4个角的类别区分背景类别和汉字内容类别,因为4个角往往是背景;之后根据聚类结果将图像二值化。

步骤三、将读入的图像灰度化,见图9。同时将原始图像灰度化,将r、g、b三个通道利用算法:r×0.299+g×0.587+b×0.114得到灰度值。

步骤四、将二值化和灰度化的图像取与,见图10。得到的图像具有黑色背景和连续值的汉字图像。

步骤五、亮度调节,见图11。

步骤六、大小调整,见图12。再将图像缩放为64×64。为了不引起变形,将图像的宽和高较大的那个缩放到64,另一个等比例缩放,然后两边填充为背景。这样保持图像宽高比例不变。

步骤七、读入模型结构和参数;在传给神经网络识别之前,还需要将汉字图像数组调整为神经网络的输入维数,即64×64×1的数组,取值范围为0~1,数据类型为float32。

步骤八、调用模型预测。所述模型采用神经卷积网络结构:网络走向为从上往下,每一层的输入为上一层的输出。初始输入层(见图2中右上角编号为1的层)大小为64×64×1,输入的图像大小是64×64,图像为灰度图,故只有1个通道;首先使用64个7×7的卷积核对输入图像做卷积(编号2);然后做大小为5×5,步幅为3的池化(编号3),此时输出数组大小为22×22×64;下面是9个inception单元。第一个inception单元先接一个batchnormalization层(编号4),将上一层的结果批规范化,然后batchnormalization的输出作为输入,分别引出3个分支。第一个分支是32个1×1的卷积(编号5)、第二个分支为48个1×1的卷积(编号6)然后接96个3×3的卷积(编号8)、最后一个分支是3×3的池化(编号7)然后接16个1×1的卷积(编号9)。最后将3个分支的输出用concatenate层(编号10)组合得到的输出数组大小为22×22×(32+96+16)=22×22×144。每个inception单元都是将几个大小不同的卷积结果和一个池化组合,每种卷积之前先接一个1×1的卷积,有一个单独的1×1卷积,池化则是在后面接一个1×1的卷积。第二个inception单元先将上一个inception的输出批规范化,然后分别引出5个分支:包含48个1×1的卷积核,还包含3×3、3×9、9×3的卷积,都是先接数个1×1的卷积,卷积核数分别为120、4、4。还包含一个池化层接16个1×1的卷积。这5个分支组合之后的特征数为48+120+4+4+16=192。第三个inception单元有3个分支,前两个分支都是卷积。与之前不同的是,这两个卷积的步长都为2,因此卷积之后的图像大小变为11×11,池化的步长也为2,最后3个分支得到的图像大小相同,将它们合并之后图像大小缩小为11×11。共有3个这样的图像大小改变的inception,3次缩小之后最终图像大小为3×3。每个inception后图像的特征数逐渐增加,最终为1440个。所以9个inception之后输出数组大小为3×3×1440。之后接一个概率为0.2的dropout层(编号74);再接一个大小为4096的全连接层(编号75);然后再接一个概率0.5的dropout(编号76),最后接大小为4485的softmax层(编号77)作为输出。输出向量表示该汉字属于每个类的概率。预测结果为:表示该汉字图像属于每个类的概率;

步骤九、网络的最后一层为softmax层,大小为4485。跟上一层全连接,得到一个4485维的向量,设该向量为(x1,x2,…,x4485)t,t为转置。之后根据算法

将其归一化,得到输出向量的每个分量pk的值,k=1,2,…,4485,最终输出向量(p1,p2,…,p4485)t。现在输出向量的每个分量pk表示该汉字属于第k个类的概率,取最大分量的下标argmax{pk},即为该汉字最终的分类号。获取概率最大的类别号3614;

步骤十、将概率最大的类别号转换为汉字编码0xd6ca;

步骤十一、打印该汉字编码对应的汉字“质”。也可以将包含单个汉字的多张图片放在一个文件夹,批量识别。

以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1