1. 引言
近年来,文件票据的使用场景已越来越广泛,并且随着图像技术和深度学习技术的发展与研究,印章识别技术已经被各国学者研究,研究方法整体分为3个方向:基于配准的识别、无需配准的识别和基于深度学习的识别。
基于配准的识别算法中,需要先配准印章再进行识别。Fan等人 [1] [2] 将印章配准后,采用动态等级(Attributed Stroke Graph, ASG)算法 [3] 进行笔画的识别。项阳 [4] 提出了一种改进的人工蜂群算法(Artificial Bee Colony, ABC) [5]。Ueda和Matsuo [6] 将印章的局部和全局特征组合到一起,利用策略法进行判别印章真伪。无需配准的印章识别方法,直接利用印章进行识别。国内外也有大量学者进行了研究。Chao Ren等人 [7] 针对非方章进行了研究,定位印章提取文字,对文字进行矫正,并放入文字识别系统(Optical Character Recognition, OCR) [8] 进行识别,通过文字通过率判别印章真伪。Haruki R [9] 等人利用三维图像识别二维印章印痕,降低了盖印条件对识别结果产生的影响。基于深度学习的识别方法中,大量研究者将卷积神经网络引入到印章识别技术中,取得了一定的成果。万水龙等人 [10] 提出了一种基于Krawtchouk- RBF的识别算法,通过提取印章图片的Krawtchouk矩 [11] 并放入径向基函数神经网络(Radial Basis Function, RBF) [12] 中,对印章进行分类识别,准确率可达90%。可以看出,印章识别发展历史久远,说明了印鉴识别的重要性,因此本文的研究课题具有重要意义。
2. 保留有效字符区域
印章中的非有效字符区域包含印章中的外圈轮廓和印章中间标志。由于这些非字符区域不会影响印章的识别,一般加印章也不会对该位置进行更改,因此本文对印章仅保留有效的字符区域。
2.1. 最小外接矩形
在原始图像中,图像大小大于图像中印章大小,即使进行归一化处理后,图像中的印章大小也未统一。因此,本文通过提取印章的最小外接矩形,使得图像大小即为印章大小,然后通过归一化,使得印章大小统一。
图形的最小外接矩形换句话说就是图形的凸包(Convex Hull)。凸包的定义为:在一个实数向量空间V中,对于给定集合X,包含X中所有凸集的交集S称为X的凸包 [13]。凸包可以通过Graham扫描法进行寻找,Graham扫描法的操作方法如下:
根据每个点坐标,将纵坐标最小的点放置在坐标圆点处,将其他坐标也平移到坐标中,平移过程中保证所有坐标的相对位置不变性,如图1所示。然后从第一个点依次放入栈中,根据每个点与上一点的相对位置进行判断,当前点位于上一点右侧时,不放入栈中;最终栈内的点即为凸包的边缘点,根据其最小面积,将其变为规整的矩形。
2.2. 除边框
将原始印章图像进行1.1节中最小外接矩形提取后,印章边框就在印章的边缘,根据印章边框与印章字符之间具有间隙的特点,进行搜索寻找边框。假设印章大小为
,那么印章半径R的大小即为M,除边框算法的具体流程如下。
1) 从图像边缘向中心进行搜索,搜索距离为1,在每次搜索时保存搜索半径大小,记为R1。
2) 搜索角度为0.01,遍历R1下一周范围内的像素点,并记录其坐标。
上式中,x和y分别为每次搜索到的坐标值,x0和y0为中心点坐标值,the为该搜索点相对于中心点的角度值。
3) 判断每次搜索得到的像素点是否有效,换句话说,判断搜索得到的点是目标点还是背景像素点,若为目标像素点则是有效点。
4) 当R1每变化一次,就对R1下的有效像素点的个数进行统计,计算公式如下:
其中,I为原始的印章图像,若
为印章边框像素点,则
值为1,否则为值0。
表示统计得到的像素点个数。
5) 对
值进行判断,若大于阈值T,继续减小搜索半径,向中心搜索;若小于阈值T,此时认为一周的像素点总数不足以构成边框,结束搜索,得到边框内边界到圆点的半径值Rn。本文根据多次实验,将阈值设为5,得到了较好的实验效果。
6) 遍历整幅图像,计算图像中每个像素点到圆点的半径值d。
当d小于Rn时,像素值不变;当d大于Rn时,像素值设为背景像素值。
其中,I为原始的印章图像,II为除边框后的结果图。
2.3. 除中间标志
印章中心标志一般与印章识别无关,因此本文也对其进行了去除操作。去除印章中间标志的方法与1.2节中去除边框的方法一致,仅仅是反向搜索。根据中间标志与字符之间的空隙,从图像中心进行搜索,当一圈有效像素点个数不足5时,停止搜索,将搜索半径内的目标像素置为背景像素。
3. 分水岭算法的基本原理
分水岭算法是一种基于地理形态学分割方法 [14]。其基本思想是将二维图像的灰度值映射成三维地理海拔高度值,灰度值大的点对应地势高的山峰,灰度值小的点对应地势低的盆地,图像中灰度极小值对应着盆地,因此,随着图像中灰度值大小的变化,可以映射为高低不同的地貌 [15]。如图2,当向积水盆地中进入液体,随着液体的逐渐进入,在两个积水盆相连处会形成分水岭。

Figure 2. Schematic diagram of watershed algorithm
图2. 分水岭算法示意图
分水岭算法的数学描述:设图像
的梯度图像为
,梯度图像中像素点灰度值小于阈值n的点坐标集合为:
符号min和max表示
中灰度最大值和灰度最小值,随着阈值n从min+1到max+1不断地增大,在n增大过程中,灰度值小于n的像素点集合
表示为:
其中,
是区域极小值点
所在积水盆中坐标点的集合。
当阈值为n时,所有积水盆地中被淹没部分的并集
为:
在n增加过程中,集合
和
中的元素个数都在不断增大,并与n保持同步增长。其中
是
的一个子集,
是
的子集,因此,
、
和
的关系如下:
从上式可以得出
为
的一个子集。
寻找分水线时,先进行初始化,令
,将阈值n不断增大,每次增加都需要进行情况判断,令
中连通区域的集合为Q,对于每个连通分量
有三种情况:
1)
为空集合。
2)
包含了
中的一个连通分量。
3)
包含了
中至少一个连通分量。
当且仅当情况(3)中可以获取到分水岭的分割线。
4. 改进的非极大值抑制算法
非极大值抑制算法在目标检测方面应用广泛。通过2节中的分水岭算法能够检测出字符,并用检测框框出,但目标检测框中会出现多余的检测框,每个检测框都有其对应的置信度,通过调整置信度可以将冗余检测框进行抑制。下式展示了非极大值抑制算法的实现过程:
上式中,
为边框的置信度,M代表当前置信度最高的边框,
代表第i个边框,
代表M与
的重复率,
为重复率的阈值。如果
小于提前设定的阈值
,那么边框
的置信度不变,仍为
,但如果
大于或等于提前设定的阈值
,那么就将重复率较高的边框
置信度设置为0,从而实现了抑制边框
的显示。图3为非极大值抑制的前后效果对比图。其中两个检测框的重复率
可以用公式表示:
其中,
表示两个检测框
与
之间的交集面积,
表示两个检测框
与
之间的并集面积。

Figure 3. Comparison of the effect of non-maximum suppression algorithm before and after processing
图3. 非极大值抑制算法处理前后效果对比图
传统的非极大值抑制算法中,尽管能够去除冗余检测框,但对于文字来说,如果将重复率的阈值设置较大,此时置信度小的矩形框直接被抑制,会出现文字提取不完整的现象,如图4所示;如果将重复率的阈值设置较小,尽管已经将置信度小的矩形框进行了抑制,但还会出现多余的矩形框,导致一个目标文字被分割到多个矩形框中,如图5所示。

Figure 4. Text segmentation diagram when the threshold is large
图4. 阈值较大时的文字分割图

Figure 5. Text segmentation diagram when the threshold is small
图5. 阈值较小时的文字分割图
为了解决上述问题,本文提出了改进的非极大值抑制算法,使用该算法后能够将文字进行完整的分割。通过使用矩形合并算法进行目标区域检测,矩形框合并的具体流程如下:
1) 记录相互重叠的两个矩形面积分别设为S1和S2,记录矩形的左上和右下角坐标值,并设置面积阈值T,此时会出现三种情况:① S1和S2均大于T,② S1和S2均小于T,③ S1和S2其中之一小于T,另一个大于T。当且仅当情况③,可以进行举行合并算法,此时表明合并的两个矩形框中,其中一个是文字主体,另一个是偏旁。
2) 比较两个矩形框的左上角和右下角坐标,通过下式,计算出合并后矩形框坐标。
其中,
分别表示合成矩形框的左上角和右下角坐标值,
和
分别为第一个和第二个矩形框的左上角和右下角坐标值。
3) 将合并前的两个矩形框进行抑制,最终结果图中只显示新合成的矩形框。这样就实现了文字的完整分割,效果如图6。

Figure 6. Improved text segmentation diagram
图6. 改进后的文字分割图
5. 印章中文字分割实验
文字分割算法的执行步骤总结如下:
1) 去除非目标区域。
2) 利用分水岭算法选中目标区域。
3) 分水岭算法进行去除重复的目标框。
4) 加入矩形合并算法,完整提取文字。
5) 利用卷积神经网络进行识别。
去除印章中非字符区域的效果如图7所示:

Figure 7. Seal image after removing interference information
图7. 去除干扰信息后的印章图像
直接使用分水岭算法进行字符的检测,会出现文字被过度分割的情况,例如:文字偏旁与文字主体内容分开、文字直接被拆分等现象,因此先采用膨胀算法,增强文字区域,可以有效避免字符的过度分割,膨胀后效果如图8左侧图,使用分水岭算法进行分割后的效果如图8中右侧图所示。

Figure 8. The effect diagram after using the expansion algorithm and the watershed algorithm to detect
图8. 使用膨胀算法和分水岭算法检测后的效果图
上述检测出来的文字框并不规则,通过不规则检测框的左上角、右下角、检测框的高度和检测框的宽度将检测框变化为正规矩形,算法公式如下:
上式中,
是左上角坐标,
是右下角坐标,w代表宽度,h代表高度。
从图9可以看出,每个文字的检测框中包含许多小的检测框,这些小的检测框属于干扰信息,通过改进的非极大值抑制法设定阈值,可以有效去除干扰检测框,去除后的效果如图10所示。
6. 提取目标文字
根据印章中字符的位置不变性,保存上一步中检测得到的检测框坐标信息,将这些检测框根据坐标重新标注在原始图像中,即标注在未进行膨胀的印章图像中,最终效果如图11所示。
将识别后的文字放入VGG16网络中进行训练,通过文字输出类别的正确性判别印章的真伪,经过多次测试,印章输出准确率为95%。测试结果如图12,图13。

Figure 12. The result of the recognition of the true seal
图12. 真印章的识别结果图
7. 结论
根据印章中特征多且文字密集的特点,引入基于文字分割的印章识别方法,从而通过分散特征点进行后续的印章识别。值得注意的是,在印章中文字的分割过程中,保证文字分割的完整性是研究的难点所在。最终经过实验,可以看出研究具有可行性。
NOTES
*通讯作者。