融合LeNet-5改进的扫描文档手写日期识别
2021-05-14戴俊峰熊闻心
张 成,戴俊峰,熊闻心
1.国网湖北省电力有限公司 信息通信公司,武汉430077
2.武汉大学 电子信息学院,武汉430072
基于社会发展对于字符识别不断增长的需求,从二十世纪六、七十年代开始,国内外相继展开了对于字符识别相关方面的研究,从早期按照像素匹配识别发展到传统的机器学习特征提取匹配直到如今基于深度神经网络。字符识别的预期未来需求包括突破手写体汉字字符识别困难,应用于电子档案记录,全球搜索的书籍和历史文档,摄像头拍摄的文本场景、视频文本[1-2]等等。
计算机性能的改善和数据喷涌式的爆发,使深度学习在传统机器学习上不断发展,最关键就在于自动提取学习特征,降低了手工特性设计可能的耗时。卷积神经网络(CNN)常用于图像处理,有能力从大量数据中学习复杂的、高维的、非线性的映射,同时演示了深层处理技术对图像处理的重要性[3-4]。
在很多文献中,字符识别直接分成印刷体与手写体。而本文根据国家电网项目的实际需求,将扫描文档中手写体日期作为研究对象,分为手写体数字识别和汉字识别,数字部分为手写体数字识别,而汉字部分主要针对一些特定的印刷体汉字。通过将这两者结合,同时针对实际运用过程中可能引入的干扰做出相应的增强预处理,并对比在不同训练参数组合下LeNet-5 的识别效果,优化调整参数,得到使模型实现最佳效果的训练参数。解决了实际项目中对于手写体日期的识别需求。
1 基于LeNet-5的手写体日期识别
1.1 算法整体框架
根据对于扫描文档中的手写体日期字符特点的观察研究,设计的算法首先要对目标图像进行一连串具有针对性的预处理,其中包含图像定位、图像去噪、灰度化和二值化;然后将经过预处理后的图像进行字符分割放入待识别字符集;将待识别字符集分别运用模板匹配法和LeNet-5 网络进行识别,最后进行相关处理整合即可得识别结果完成整个算法实现。图1 为体现整个算法设计思路的流程图。
图1 算法的整体框架
1.2 目标图像的预处理
图像预处理是在对字符图像进行分割和识别前的一个关键步骤,特别是在实际项目运用中,具有针对性的图像预处理能有效地提高待识别字符图像的质量,从而能极大程度上提高字符识别率。本文的图像预处理包括[5]:特定字符图像的定位、图像去噪、图像灰度化和图像二值化。
1.2.1 特定字符图像的定位
本文主要研究的是扫描文档中印章下的手写体日期,那么在信息密集的扫描文档中确定目标字符图像的定位并划分[6]是首要步骤。(1)根据印章的形状为圆形,而一般文档中几乎不出现圆形,于是在文档图像中确定的圆即为印章。(2)运用对圆的检索确定了印章在整幅图像中的位置,根据印章的位置向四周扩大印章外接矩形框进行裁剪,这样能够很大程度上保证手写体日期完整地被切分出来。(3)在切分出的图像上再进一步对目标图像单独裁剪出来,将目标图像与其他不相干信息区分。如图2所示。
图2 定位裁剪后的日期图像
1.2.2 图像去噪
由于原始扫描图像本身、扫描环境、扫描设备等原因,扫描文档图像可能会夹带着一定程度的噪声,并且伴有光照和颜色干扰。为了降低干扰对识别率的影响需要进行去噪处理[7-9],对于噪声对图像质量的影响,选用了高斯滤波,对于光照便选用了较为常见的伽马校正。在实际项目进行中,对于文档中印章下的手写体日期识别,扫描图像中常含有印章这样很明显特别的干扰,如果不去除干扰图像印章直接灰度化和二值化将会影响后续的识别准确率。本文研究观察选择通过印章通常为红色而手写体日期字符一般为黑色这一规律实现印章的去除。对已经定位并剪裁好的彩色图像分离红色分量设置一定阈值从而进行印章的去除,如图3所示。
图3 去除印章后的图像
经过分离红色分量,图3 明显干扰减少,能提高图像分割的准确率,而伽马校正与高斯滤波的效果在这一步并不明显,由以下二值化图像效果进行对比。
1.2.3 图像灰度化和二值化
根据人眼对于绿色最敏感,对于蓝色最迟钝,对于红色敏感度居中的视觉特性来选择权重,本文选择加权平均法来实现图像灰度化,根据公式(1)对图像的三个分量进行加权平均能得到效果较好的灰度图像[10]:
紧接着运用最大类间方差算法(OTSU)方法确定阈值对上述灰度图像进行二值化[11],如图4所示。
图4 图像经过灰度化和二值化的效果图
由二值化图像可以看出有伽马校正与高斯滤波可以使得字符形态更加清晰突出,像素更为连续,目标与背景差别更大,为后续的分割和识别奠定了更好的基础。
1.3 字符图像的分割
图像分割是进入字符识别前极为关键的一环,字符切分准确与否也关系着字符能否被准确识别。常见的两种切割字符图像的方法:投影分割法和连通域分割法[12]。本文采用连通域分割法将字符分割成一个个单独的图像,同时要注意按照从左到右的顺序(也就是按列的从小到大)排列保存,每一行代表每一个分割出的单个字符的信息,从左到右依次是位置x、y和长宽w、h,如图5所示。
图5 分割成单个字符并按顺序排列后的图像
1.4 目标图像的字符识别
字符识别是模式识别中的一个分支,利用计算机来模仿人的视觉神经,通过计算分析将图像中的字符转化成机器能读取识别的信息。目前已经提出的方法有基于模板匹配的识别、基于人工神经网络的识别、基于支持向量机的识别、基于决策树的识别等等[13]。这些方法的基础还是建立于对字符本身特征进行提取、分析和学习。目标图像中字符既包含手写体数字又包含着年、月、日这样的汉字字符,这两种字符要分开识别才能保证识别率。
1.4.1 日期中年、月、日的识别
由于所识别的对象是日期中的汉字字符,字符为印刷体,个数不多,字符字体变化不大,所以本文采用了实现较为容易的模板匹配的方法[14]。模板匹配法的基本原理是根据待识别字符制作出标准的模板,对于待识别字符集便生成对应的模板库,识别结果是将待识别字符与模板库中的标准模板进行比较判断相似度从而得出的。模板匹配法具体实现是将分割后的二值化字符的尺寸大小与模板库中模板大小统一,然后将其与所有的模板进行匹配[15],最后相似度最高的对应模板即为识别结果。该方法存在着抗噪性能差,计算量大的特性,对待识别字符的图像质量有较高要求,适用于与模板大小、形态差别不大的字符的识别。
(1)首先从某个完成预处理的图像中抠出字符图像来制作字符的模板,如图6所示。
图6 制作的模板图像
(2)然后将模板在二值化图像中进行模板匹配,效果如图7所示。
图7 将模板在图像中进行匹配的效果图
同时记录下三个字符在图片中的位置(x,y,w,h)分别为:(129,38,43,44)(240,42,35,42)(355,44,30,40)
(3)根据之前分割单个字符的位置信息,可以在字符集中判断出年、月、日,如图8。
只要在分割字符的时候加入相应的判断条件,便可以将年、月、日这三个字符识别出来,并将这三个汉字字符与手写体数字字符区分开来。
图8 分割出的单个字符的信息
1.4.2 日期中手写体数字的识别
(1)字符归一化
由于字符图像本身大小有差别对字符的识别会造成很大影响[16],为了提高字符的识别率需要对经过分割和区分出来的待识别手写体数字字符图片进行大小归一化[17]如图9所示。
图9 字符图像归一化
将字符归一化能够与训练集形态更为相似,从而更加适应模型,提高识别效果。
(2)LeNet-5模型识别
LeNet-5 是Yann LeCun 设计出的对于手写体数字识别效果非常好的卷积神经网络,可以称得上是早期卷积神经网络中最具代表性的模型之一[18-19],也因此本文选择针对手写体数字部分构建LeNet-5 网络。LeNet-5模型由2个卷积层、2个池化层(抽样层)和3个全连接层共7层组成[20-21],图10为LeNet-5的网络结构示意图。
图10 LeNet-5网络结构示意图
将归一化完成的字符图像放入已经设置好参数训练完成的LeNet-5网络中进行手写体数字的识别。
2 测试结果与分析
本章算法测试环境为64位Windows 10操作系统,8 GB 运行内存的计算机,运用Python 编程语言并在Python中配置了Tensorflow、Opencv。
MNIST数据集:选择经典的MNIST 数据集作为手写体数字识别模型的训练集,载入LeNet-5 的数据输入层。MNIST 是一个含有60 000 个训练样本和10 000 个测试样本,总共70 000个样本的手写体数字库。其中含有数字0~9的训练数据集和测试数据集两种图片,每张图片都已经经过了预处处理与大小归一化,大小为28×28,均为黑底白字。
2.1 算法测试对象
本文将收集的样本分成有印章和无印章干扰的测试样本。总样本中将分割错误的字符去除后有效手写体数字个数共有266个,本实验的识别准确率按单个数字字符来算。
随机选取10个同学写出共40个手写体日期作为无印章测试样本来进行识别测试,图11 是部分无印章的测试样本。
图11 无印章干扰的测试样本
图12为有印章的测试样本。
图12 有印章干扰的测试样本示例
由于连通域分割法无法对相互粘连的字符进行有效分割,所以在制作手写体数字样本时应该注意不能过于随意连笔。
2.2 测试识别效果与分析
2.2.1 不同参数下的识别率
(1)对于batch的选取
由于在模型执行反向传播时会运用梯度下降算法,如若载入所有样本进行训练将会大大增加训练的时间复杂度,所以将总体样本分成一个个batch 来进行参数寻优。在控制其他参数不变的条件下,改变batch 的大小,所出现的误识别率和运行时间如表1所示[10]。
表1 不同batch下的训练效果
根据图中的比较信息可以发现,batch增多,使误识别率随之增大,识别时间随之减少,综合误识别率和识别时间这两个因素考虑,本文决定将batch选取为50,希望能使LeNet-5网络性能达到比较好的效果。
(2)对于learning rate的选取
learning rate便是每次切线旋转的幅度,加大learning rate会一定程度上加快拟合的速度,但同时如果一味加大learning rate 可能会造成切线旋转过度而无法收敛,模型误差很大。
在batch=50,epoch=40的同一条件下进行算法测试如表2所示。
表2 learning rate对识别率的影响(batch=50,epoch=40)
在对learning rate 的对比测试过程中,learning rate为0.01 时训练模型无法收敛。对比测试结果显示对于这个模型learning rate取0.001时最为合适。
(3)对于epoch的选取
在batch=50,learning rate=0.001 同一条件下分别在MNIST训练集和自己制作的测试集上进行算法测试如表3所示。
表3 epoch对识别率的影响(batch=50,learning rate=0.001)
对于日期识别会更看重识别的准确性,所以epoch选取80。
进行一系列的相关对比实验后,得出当训练参数选择epoch=80,batch=50,learning rate=0.001时,该算法中的LeNet-5网络对于测试样本能够达到最佳的识别效果。
2.2.2 对于有无特定去噪处理的识别效果对比
由于一般文档中手写体日期与印章紧密相联,一般常用的图像去噪的方法对此是没有太多效果的,而本文设计的算法能够去除这些特定字符在特定条件下的噪声干扰,从而完成字符识别。以下是对于同一份手写体日期对比有无去除印章的识别效果,图13为测试样本。
图13 测试样本
(1)无去除印章的手写体日期识别
将图像进行除去除印章外的其他预处理,如图14所示。
图14 带有印章干扰的二值化图像
从图14中其实很明显可以发现印章对于手写体日期的干扰,然后对图像进行字符分割,如图15所示。
图15 带有印章干扰的字符分割
如图15,由于印章的干扰根本无法进行正确的分割,进而完全无法实现正确的识别。
(2)有去除印章的手写体日期识别
将图像进行去除印章和一系列的预处理,如图16所示。
图16 去除印章干扰的二值化图像
将去除印章后的图像进行字符分割,效果如图17所示。
图17 去除印章干扰后的字符分割
去除印章干扰后对字符图像分割是比较准确的。最后将分割后的图像进行识别,结果为:2018 年3 月27日,这里识别的结果比起未去除印章干扰的图像提升效果还是很明显的。
根据以上测试结果对比可以发现,本文算法的预处理部分能够针对实际项目中手写体日期这样的特定对象进行较好的处理,从而能够识别印章下的手写体日期,增强了一般算法的抗噪性能从而提高识别率,同时更加还原生活中的真实场景,增加了实际应用的可能性。
2.3 实验效果展示
以下为部分测试结果效果图,识别率为91.35%,如图18效果图所示。
图18 部分实验效果图
3 结束语
本文主要研究对象针对的是扫描文档中手写体日期的识别,特别是有印章、颜色和光照等噪声干扰的手写体日期,通过构造一系列针对性的预处理,增强了一般算法的抗噪性能,另一方面通过相关对比实验寻找合适的LeNet-5网络训练参数,从而实现了更有效的识别,更加还原生活中的真实场景,增加了LeNet-5 网络实际应用的可能性,更符合实际的文档识别项目需求。
需从以下几个方面寻求下一步更好的效果:手写体形态的差别大、大小不一、笔画粗细不一等不确定因素,这些因素一方面使得图像的前期处理不能合适地贴合每一个字符。字符分割的模块使用的是连通域分割法,于是对于字符粘连的情况不能进行有效分割,而日常生活中书写数字时,经常会出现连笔。基于深度学习的网络一般都为端到端,且此LeNet-5网络层数不多,改进的方法有限。