戴俊峰,杨 天,熊闻心+
(1.国网湖北省电力有限公司信息通信公司,湖北 武汉 430077;2.武汉大学 电子信息学院,湖北 武汉 430072)
印章内容作为确定文档有效性的关键信息,能够反映与该文档签发的相关单位与部门,利用特定的提取方法与识别方法对印章的内容进行处理,能够有效地对文档进行分类与鉴别。然而,印章内容相比于文字识别,呈圆环排列,其排列方向不统一,使得印章的识别工作具有很大的难度。中心包含复杂图案的印章,更是加大了识别任务的难度。
光学字符识别具体的实现主要包含文档图文信息内容的检测与文档图文信息的识别两个步骤。对于简单的印刷字体文档识别与复杂场景的文字检测与识别已经取得了长足的发展,但是对于文档关键信息的提取与鉴别却缺乏有效的方法。本文利用图像处理、极坐标转换、深度学习、模式识别多种手段对多处文档印章进行检测与识别,对利用印章内部的关键信息判断出该文档的有效性与真实性具有重要的使用价值。
本文综合利用CTPN+CRNN深度学习框架建立了印章检测与识别模型,并且自建了中文印章数据集。在印章文字提取前,针对印章文字呈圆环排列的特点对印章进行极坐标展开,并且与双线性插值拉伸相结合,保证极坐标展开后的印章文字能够保证正确的比例,然后将展开后的印章图像输入到CTPN+CRNN网络中进行文字的检测与识别。该方法在预处理、子图像提取、特征提取等各个方面有一定的优势,具有一定的参考价值和实用性。
印章检测与识别的研究历史可以追溯到几十年前。一般的印章检测与识别算法主要包含预处理、文字区域检测与文字内容识别等步骤[1]。预处理过程是为了改善文字检测与识别的效果。一般包括滤波去噪、灰度处理等方法,也可能运用其它形态学方法,例如早期研究者利用彩色模型中基色间差值、二维投影方法自动提取印章图像,周琨等将印章图像三值化,去噪并进行分割,然后将分割后的图像送入到后续的识别模块进行识别。肖进胜等将三维块匹配去噪算法中小波阈值去噪得到的图像替换原引导图像,抑制了双域滤波算法基本层不平滑的问题,减少细节层的噪声残留[2]。
印章的内容检测与识别大部分借鉴自然场景文字识别的相关方法,一般都分为文字区域检测与文字内容识别两个部分。人工智能和模式识别领域的发展在很大程度上促进了文字的发展,Long等[3]介绍了截至2018年场景文字检测与识别的方案和技术,并对各类方法进行的优劣进行了分析。文字区域检测算法中CTPN[4]是目前流传最广、影响最大的开源文本检测模型,但是只可以检测水平文本行。文本行可以被看成一个字符序列,而不是一般物体检测中单个独立的目标。SegLink[5]算法将每个单词切割为更易检测的有方向的小文字块,然后用邻近连接将各个小文字块连接成单词。这种方案方便于识别长度变化范围很大的、带方向的单词和文本行。Zhou等利用EAST[6]模型首先使用全卷积网络(FCN)生成多尺度融合的特征图,然后在此基础上直接进行像素级的文本块预测。可以实现多尺度的自然文本文字框检测。对于文字识别,现在最常用方法为CTC(connectionist temporal classification)[7]和注意力转移机制(Seq2Seq)[8]。常用的CTC算法利用BLSTM网络对字符图像进行特征提取,然后使用CTC损失函数对特征图进行编码与去冗,BLSTM能够综合考虑印章图片中的上下文关系,有效提升文本识别准确率,使得文字识别模型更具有鲁棒性。注意力转移机制是一种与CTC编码完全不同的卷积神经网络的模型,在Seq2Seq结构中,编码器Encoder把所有的输入序列都编码成一个统一的语义向量Context,然后再由解码器Decoder解码。在解码器Decoder解码的过程中,不断地将前一个时刻t-1的输出作为后一个时刻t的输入,循环解码,直到输出停止符为止,利用Seq2Seq替代CRNN网络中的CTC模块,避免了CTC需要输出所有字符对应的概率向量,能够加快检测速度和效果。
由于中文印章内容的识别并不属于热门的研究方向。国内只有卢海涛等构建了满文印章的增广数据集,国内的大部分研究者都主要集中在对于印章真伪的研究,并没有公开的印章数据集。这些问题都给本文的研究带来了困难。
本文深入研究国内外对于印章内容识别的发展状况,提出了基于极坐标转换的印章内容识别算法。在预处理阶段,首先利用中文印章一般为红色的特点,对印章在CIELAB颜色空间进行位置提取。然后利用非线性灰度化,增加红色通道的比重,对印章灰度化,减少了后续处理的运算量,然后利用极坐标对印章文字进行展开,同时为了防止展开过程中印章文字发生形变,在展开的同时进行双线性插值,最后将展开后的图像输入到CTPN+CRNN的检测模型之中进行文字的检测和识别。本文算法在预处理、子图像提取、特征提取等各个方面有一定的优势,将印章在检测前就进行展开操作,克服了印章文字方向不定的问题,具有一定的参考价值和实用性。
本文算法包含3个步骤:预处理、文字检测与文字识别。预处理部分主要包括印章区域的提取、灰度化与极坐标展开等操作,文字检测运用CTPN算法对印章文字区域进行提取,文字识别利用CRNN网络对文字内容进行识别,其整体流程如图1所示。
图1 印章识别流程
为了改进印章检测与识别的准确性,本算法在预处理阶段对印章进行极坐标展开,国内印章其文字内容基本上呈环形排列,将印章内的环形的文字进行极坐标展开成为同一方向的文字,能够大量减少后续文字检测的难度。一般转换后的文字会产生形变,为了方便后续的文字识别,在转换的同时也融合了双线性插值,能够克服环形文字转换之后产生的形变问题。文字检测部分的主要任务是能够提取印章文字区域,文字识别的主要任务是鉴定印章内的具体内容。这两个部分分别采用CTPN与CRNN网络实现。首先将所有展开的印章图像使用CTPN网络对文字区域的提取,并且针对印章文字展开后呈波浪形排列的特点改进了CTPN的文本提议框合并算法,使得CTPN网络能够有效地减少干扰背景。通过CTPN网络提取之后,将有效的文字区域输入至CRNN网络进行文字检测识别,最终输出印章内部的文字。
一般我们所看到的彩色图像R(红)、G(绿)、B(蓝)3个通道所组成的,每个通道的颜色取值范围为0~255,因此每一个像素点的取值有1600多万种(255×255×255)颜色的变化。灰度图像的R、G、B这3个通道具有相同的深度值,其最大的特点是每一个像素点的深度只有8位,其像素点的变化只有255种,所以在图像处理过程中,为了减少计算量,第一步工作就将彩色的RGB图像转换为像素点颜色变化范围更少的灰度图。虽然灰度图中每一个像素点的色彩值并没有彩色图像的丰富,但灰度图依然与彩色图像一样能够反映出整幅图像的整体构成和局部的色度和亮度等级的分布特征。一般的灰度化方法为获取R、G、B三通道中的均值或者最小值,而在印章的提取过程中,往往印章的红色属性被作为主要的特征使用,所以印章部分的灰度化采用非线性灰度化,加强R通道的比重,这样使得灰度化之后的图像能够较好保留印章的信息。非线性灰度化的公式如下
f(i,j)=0.5R(i,j)+0.25G(i,j)+0,25B(i,j)
(1)
其中,f(i,j) 表示灰度图像中第i行第j列像素点的像素值,R(i,j) 表示预处理后图像中第i行第j列R通道像素点的像素值,G(i,j) 表示预处理后图像中第i行第j列G通道像素点的像素值,B(i,j) 表示预处理后图像中第i行第j列B通道像素点的像素值。
将印章图像进行灰度化之后,再经过闭运算去除印章文字之中的小型黑洞,使文字能够更加的清晰。
极坐标转化过程能够将印章内环形的文字展开为横向排列的文字,一般转换后的文字会产生形变,故在转换的同时也融合了双线性插值,能够克服环形文字转换之后产生的形变问题。
图2 极坐标转化
(2)
(3)
再将极坐标转换为直角坐标图像的过程中,采用了双线性插值,对图像进行拉伸,该拉伸的过程可以在转换的同时完成,并不需要先进行拉伸再进行转换。整体的转换过程如下
(4)
(5)
f(x,y)=f1(x,y)+f2(x,y)+f3(x,y)+f4(x,y)
f1(x,y)=(1-u)(1-v)f(Zx,Zy)
f2(x,y)=(1-u)vf(Zx,Zy+1)
f3(x,y)=u(v+1)f(Zx+1,Zy)
f4(x,y)=uvf(Zx+1,Zy+1)
(6)
其中,Zx,Zy为直角坐标转换为极坐标后对应的整数部分,u,v为直角坐标转换为极坐标后的小数部分。极坐标展开的效果如图3所示。
图3 极坐标展开效果
提取的印章经过预处理与极坐标展开后,使得印章内部的环形文字展开为横向排列文字,将展开后的文字输入到CTPN+CRNN网络中进行文字区域的检测与识别。
CTPN网络的主要作用是在展开的矩形图像中检测文字所在区域然后进行分割,CTPN将文本检测问题转化成为了一系列提议文本框的检测问题。CTPN算法综合利用了卷积神经网络与循环神经网络,利用卷积网络进行特征提取,然后使用循环神经网络检测文本框,该算法将循环神经网络引入到了文本检测的任务中,可以将不定长的文字当作目标检测,一定程度上解除了传统字符检测方法的限制。
CTPN网络借鉴了Faster-RCNN[9]的思想,首先利用RPN(region proposal network)网络在特征图上利用文本提议框对含有文字的可疑区域进行提取,然后利用全连接层对这些文本提议框提取的区域进行分类,最后对包含文字的区域进行非极大值抑制合并输出文字区域,但是Faster-RCNN中的提议框是为了检测目标等刚性物体,其提取框为较大的正方形,这些提议框不符合文字分布不定长的特点,所以必须对这些文本提议框进行改进,CTPN将这些文本提议框换成了固定宽度的细粒度矩形框,每个矩形框的宽度固定为16个像素,检测网络只负责输出该提议框的文字信息和高度信息,所以CTPN网络利用积分的思想将不定长文本检测的问题转换成了对一系列细粒度的文本提议的检测。CTPN网络首先利用VGG16网络对图像进行特征提取,同时考虑到文字区域相对较小。将VGG16中的大卷积核全部使用3×3的小卷积核进行替代。在加深了网络深度的同时也使得该网络对文字检测具有了更加强大的泛化能力。并且为了减少运算的次数,CTPN只采用了VGG16的前5层进行卷积操作。生成特征图之后再利用RPN网络在特征图上进行文本提取,将特征图上的每一个特征点作为一个锚点(anchor),每一个锚点都可以选取产生10个宽度一致、高度不同的文本提议框,这些文本提议框的高度变化范围为11~283。CTPN中的文本提议框如图4所示。
图4 文本提议框
RPN网络可以对这些可疑的文本提议框进行粗略的分类,选出可能包含文本的提议框输入到全连接层进行精确的分类预测与位置坐标的微调。这些文本提议框经过全连接层输出其中心点坐标、高度值和文本置信度,所以每一个文本提议框可以表示为 {x,y,w,h,c}。x,y为提议框的中心坐标位置,w为文本提议框宽度,固定为16。h为文本提议框的高度,c为文本提议框的文本置信度,该值越大,代表此提议框包含文字的可能性越大。CTPN网络如图5所示。
图5 CTPN网络
CTPN的输出包含3个部分,依次为2kvertical coordinates表示选择框的高度和中心的y轴的坐标;2kscores表示的是k个anchor的类别信息,说明其是否为字符;kside-refinement表示的是文本提议框的水平偏移量;经过全连接层之后可以判断所选的k个文本提议框中哪些属于文字框,哪些属于背景框,当然这些文本提议框中有很多属于重复的信息,所以需要采用文本构造算法将上一步得到的细长文本提议框合并成整个文本的提议框,同时去除属于背景信息的文本提议框和重复检测的文本提议框,CTPN网络中文本构造的算法如下:
每两个相近的文字框组成一个pair,然后迭代合并不同的pair成一个新的pair,直到不同的pair不能够合并为止,最后剩下m个pair,即代表该图像内部有m个文本区域,合并文本框或pair的条件为Bi->Bj,Bj->Bi。Bi->Bj该符号的判定条件如下:
Bi到Bj的水平距离最小,即Bix至Bjx的值最小;
Bi到Bj的距离值小于50个像素,即
(7)
Bi与Bj的交并比大于0.7。
其中Bi、Bj代表不同的文本框或pair, (Bix,Biy) 为Bi的中心坐标, (Bjx,Bjy) 为Bj的中心坐标。在CTPN原始的合并算法中,当确定每个文本提议框所属的pair之后,对于每个pair选取所属文本提议框之中最小的横纵坐标 (xmin,ymin) 为左上角顶点,以每个pair选取所属文本提议框之中最大的横纵坐标 (xmax,ymax) 为右下角顶点,直接将该区域作为文本框进行截取,有可能将复杂背景包含进来,本文采用贝塞尔曲线拟合该文本框,能够有效去除多余的背景,其文本提议框配对结束后,对文本区域进行文本行拼接,选出文本对中上下左右最边沿的位置当作最终输出的文本区域检测框,将积分思想引入到了文本检测任务中,克服了文本长度不确定的问题。合并效果如图6所示。
图6 文本构造
B(t)=(1-t)3pi+3(1-t)2tpi+1+3(1-t)t2pi+2+t3pi+3
(0≤t≤1,0≤i≤n-1)
(8)
改进后的印章文字检测效果如图7所示。
图7 文字检测效果
使用CTPN将印章文字进行分割之后,再将分割的文字输入到CRNN双向循环卷积网络对文本进行识别,CRNN主要由3部分构成:
CNN(卷积层):将CTPN网络提取的文字区域进行缩放,统一缩放为高度height=32,宽度width=160,通道数channel=1的灰度图像,然后输入到CNN网络中,得到height=1,width=40,channel=512的feature map。并通过Map-to-Sequence将特征图提取成为RNN需要的特征序列,每个特征向量对应于原始图像的一个矩形区域(该区域称为感受野)。
CTC loss(转录层):转录是将RNN输出的后验概率矩阵W转化为实际输出的字符,将后验概率矩阵W中每一列的最大值对应的字符作为该列标签,这样每个后验概率矩阵W可以得到40个文本标签,这40个文本标签中有很多属于重复检测的内容,所以CTC网络的另一个任务就是对识别的结果进行合并去冗,在40个文本标签中重复的字符之间插入一个“-”同时去除不存在字符的标签,“-”代表该符号两边相同的字符不需要合并,而没有“-”号的相连相同字符需要合并为同一个字符,该编码过程是由CTC网络训练得到的,训练过程依旧使用梯度下降算法。CRNN网络的总体结构如图8所示。
图8 CRNN网络结构
通过非线性灰度化与极坐标展开之后,使得合同中的印章内容更加易于检测,然后利用CTPN+CRNN网络对印章文字进行检测与识别,并改进了文本框的合并过程,有效减少了文字区域中的背景信息。检测与识别的效果如图9所示。
图9 CRNN检测效果
实验将在自制的中文印章数据集上进行,其中该数据集是本文作者建立的,还未公开。该数据集一共包含130张印章,包含33张实际印章,97张电子制作印章。数据集中的每一份样本都统一缩放至360×360,并以24位深度JPG格式存储。测试过程中,把该数据集分成两组,第一组用于训练,第二组用于测试。
ICDAR[10]将文本定位分为Challenges 1、Challenges 2和Challenges 4这3种,针对不同的数据来源可以采用不同
的评判标准,本文的实验样章一部分来源于电脑制作,一部分来源于用户有意识的拍摄,并且只考虑了印章中一对一的情况,所以采用Challenges 1和Challenges2的评测方法,也叫作DetEval[9]方法。主要通过召回率与准曲率对模型进行评估,计算公式如下
(9)
(10)
其中,RICD代表召回率,PICD代表准确率,Gi表示第i个标定框i∈(1,n),Dj为第j个检测框j∈(1,m)。 BestMatch本质是一个F调和平均数(F-Measure),一般基于面积定义召回率和准确率的定义如下
(11)
(12)
而对于文字识别常用的评价指标为召回率,计算识别结果字符集中每一个字符与标签中的字符是否对应,只有该识别字符与样本标签中的字符对应,才认为该字符被正确检出。召回率计算公式如下
(13)
本文通过实验对比了使用极坐标展开与没有使用极坐标展开的两种情况下的检测结果,测试结果见表1。
表1 检测效果对比
由表1可知,如果利用CTPN网络直接对印章内容进行检测,其F-Measure为26.9%。在预处理阶段加入极坐标转换之后,虽然检测时长有所增加,但克服了印章文字方向不统一带来的影响,文字检测的召回率与精确率都具有明显的提升,其F-Measure可以提升至90.1%。
在不使用极坐标展开的情况下,CTPN由于文本构造算法对于文本框距离的要求,会导致文本区域不能够合并,如图10(a)所示。也有可能由于印章文字的方向不确定带来大量的漏检问题,如图10(b)所示。在将印章进行极坐标展开的情况下,克服了文字方向不统一的问题,能够正确的对印章文字区域进行识别,如图10(c)所示。
图10 检测与识别结果对比
文本识别的测试评价标准主要使用召回率,如果只有当一个印章内的文字都被识别正确,则认为该印章被正确识别,该实验一共由130个样本组成,在使用极坐标展开的前提之下,共检测正确的印章有96个,召回率可以达到74%。但是对测试结果的观察发现,很多印章中只有一个字符发生了检测出错的情况而导致整个印章被当作检测错误,所以该实验统计了所有印章内文字的个数,以单个文字的检测结果作为评判标准,在130个样章中共包含1021个字符,本实验检测正确的文字共923个,文字识别得召回率为90.4%。
本文提出了一种基于极坐标转换的印章文字识别方法。在预处理阶段,通过非线性灰度化,极坐标展开与双线性插值等方法将印章的环形文字展开为同一方向的横排文字,克服了印章文字方向不统一的问题。在检测阶段使用CTPN+CRNN的检测框架。并且改进了CTPN文本框的合成策略,使用三阶贝塞尔曲线进行拟合,减少了检测背景的干扰。本文利用自制的中文印章数据集来评估该算法,并经过实验结果验证了本文提出方法的可行性和实用性。