基于优化锚点的细粒度文本检测与识别

作者: 王漳 梁祖红 罗孝波

基于优化锚点的细粒度文本检测与识别0

摘要:CTPN文本检测模型在细粒度文本检测过程中会出现断连、漏检的情况,尤其是在细粒度的文本场景下。针对以上问题,提出了一种细粒度文本检测算法。该算法基于CTPN模型网络进行改进,重新设计了垂直锚点尺度,以适应细粒度文本的特征;同时调整主干网络的结构适应锚点的尺度。在anchor的连接过程中采用了自适应间隔的连接方式,从而保留水平语义信息的完整性。文本识别阶段采用CRNN方式进行识别。通过PyTorch环境验证细粒度的发票数据集,所提方法相比于原CTPN文本定位方法效果显著提高。

关键词:文本检测;细粒度;锚点机制;文本识别;深度学习

中图分类号:TP18      文献标识码:A

文章编号:1009-3044(2022)10-0009-06

随着社会经济的发展,票据的重要性越来越被人们重视,尤其是在各个企业中使用增值税发票报账的人数日益剧增[1],财务管理人员录入发票的工作量大幅度提高。而传统人工录入票据内容的方式,工作强度高、效率低下,很容易导致工作人员在疲惫状态下疏忽出错。如能实现自动化地从图像上提取文字信息,会大大降低企业的人力和物力,为企业带来极大的便利。

使用电子设备将纸质中的字符翻译成计算机文字的过程被称为光学字符识别[2](Optical Chatacter Recognition,OCR)技术。OCR技术核心在于文本的检测和文本识别两部分。传统的文本检测包含基于连通域的方法[3-4]和基于滑动窗口(Sliding-window Method)的方法[5-6]。基于连通域的方法利用图像的形态学的特征,通过二值化、膨胀、腐蚀等一系列形态学操作将连通域找出来作为文本位置的候选集,通过人为设计特征规则过滤候选集,粗略定位图像中文本的位置。但若图像中存在背景噪声就可能造成连通错误的情况;其次,人为设定的过滤规则并不能有效区分文本与非文本区域。基于滑动窗口的方法设计多尺度的窗口大小,从左到右、从上到下依次扫描图像,通过分类器对窗口滑到的位置做是文本和非文本的判别。该类方法的不足在于对窗口的依赖难以把握,窗口的尺度、滑窗步长设置较为困难。

近几年,随着深度学习的发展,研究者们对于自然场景文本的检测有了大量的研究,成了当下的研究热点。文字检测在一定程度上是一种特殊的目标检测任务,从2014年开始,用于目标检测的R-CNN[7-9]系列论文被提出。该方法是基于RPN (Regions with Convolutional Neural Network)网络进行运作的;首先做特征提取工作,通过主干网络获取输入图像的特征图;然后通过锚点机制,计算锚点对应的置信度;对初步结果筛选并做出细致调整,最后得到检测结果。在国内,郑祖兵等人[10]将医疗票据的信息分为出厂印刷的内容和后期打印的内容,利用Faster RCNN[9]算法完成后期打印内容的定位,再将文本分割开来进行单字符的识别,总体准确率达到95.4%。何鎏一等人[11]使用连通域分析方法完成整个增值税发票版面文本的检测;连通域最优阈值的大小很难确定,可能会存在断连情况,同时也不利于文本的筛选,鲁棒性较差。基于RPN的思想,Tian等人[12]提出了专门用于文本检测的开山之作CTPN(Connectionist Text Proposal Network)算法。随后,EAST[13]、TextBox++[14]等系列场景文本检测算法相继提出。

公认的自然场景文本检测任务是国际文档分析与识别国际会议(International Conference on Document Analysis and Recognition,ICDAR)举办的比赛。以ICDAR2015[15]文本检测任务为例,比赛所用数据集图像像素规格为1280×720,其单个文字的高度从50px到80px,甚至达到100px,占比高达近14%。票据识别隶属于自然场景文本检测的子类任务,不同于自然场景文本字体大的特点,票据图像文字排列分散、字体较小,在一张图上的文字规格基本统一,文字高度占比通常在20px左右,高度占比仅为3%左右。如果不对图像做任何处理就直接使用传统OCR技术进行识别;或是直接用自然场景文本检测模型对其进行检测和识别,往往会出现漏检断检,效果不好、鲁棒性差等问题。

针对自然场景文本检测模型在细粒度的文本上出现的断检漏检情况,本文搭建一种面向漏检断连的细粒度票据文本检测与识别方法,该方法的文本检测阶段和文本识别部分均由深度学习模型实现,两者模型串联起来形成端到端的完整架构。文本定位模型采用改进的CTPN网络,主要改进在:(1)调整CTPN主干网络池化层和卷积层,更少的最大池化层使得Anchor在特征图上的移动对应原图更短的步长,即捕捉更精细的文字特征;(2)针对细粒度的文本,重新设计CTPN模型中的Anchor尺度和数量;(3)对于生成一系列文本建议区域,采取了自适应间距解决了文本的断连问题,提高文本行检测的完整性。文本识别模型采用CRNN模型[16]。对比实验结果表明,自制的细粒度票据数据集上,效果显著。

1 本文方法

本文提出的面向漏检断连的细粒度票据文本检测与识别主要由图像采集模块、图像预处理模块、文本检测网络模块、文本识别网络模块、文本输出模块等5个主要模块组成,该算法的整体设计流程图如图1所示。

1.1 图像采集与图像处理

随着电子设备的层出不穷,图像采集的方式也有许多可选的操作——扫描仪、智能手机、摄像机、高拍仪等。大多数人往往更倾向于手机移动端便捷的拍照方式,本文所采用的发票数据集是由高拍仪完成。为了后期能够更好地进行文本的区域划分、文本检测和文本识别,需要将采集到的倾斜图像进行仿射变换或者水平校正的操作。一般对于倾斜图像的矫正需要借助于Hough变换[17],其主要是利用图片所在的笛卡尔空间和霍夫空间之间的变换。在Hough变换中,常用式(1)表示直线:

[ρ=xcosθ+ysinθ] (1)

其中,ρ为点到直线的距离,θ为直线与X轴正向的夹角度数;在Hough空间中(ρ,θ)为已知量,(ρ,θ)为未知量。笛卡尔空间上一个点的n个方向映射到Hough空间中为一条正弦曲线,当多个共线的点在多个方向上的映射就会交于一个(ρ,θ);在霍夫空间图像上,具有最多交线的点具有便是一条直线,此时可以求出倾斜角度θ完成图像的水平矫正。

1.2 文本区域划分

基对文本区域进行划分的依据是发票的尺寸规格为国家税务局统一规定大小,通过等比例缩放可以将输入的图像进行文本区域的粗划分。文本区域通常包含购买方信息、销售方信息、销售明细、密码区和备注等信息区域。增值税票据的模板样式如图2所示,其信息框的高H、宽W及任何一个小框的位置信息(x,y,h,w)都可以先验测出。

假设给定一张票据图,通过openCV直线检测将票据中信息框主体裁出来,测得其尺寸为H’×W’,通过公式(2)可以得到输入图像与标准模板的缩放比例α。输入图像中每一小框的位置信息(x’,y’,h’,w’)可以按照公式(3)进行线性变换。分割出的小区域信息示例如图3所示。

[α=H / H'] (2)

[x' =α×xy' =α×yh' =α×hw' =α×w] (3)

2 基于CTPN的文本位置检测

本文检测方法在CTPN基础上做出了3个改进:(1) 重新设置Anchor的尺度,以适应票据细粒度的特点;(2)调整特征提取的主干网络,即减少原VGG的Conv5阶段(包含一个最大池化层),使得Anchor的每一次移动都对应原图更小尺度的移动,以适应Anchor的尺度;(3)在Anchor的合成阶段摒弃了固定阈值的做法,先对行进行聚类,再自动计算Anchor的最大间隔,并将其设为阈值,使得间隔过长的Anchor也能得以连上。

2.1 CTPN算法

由于发票中的文本具有较好的水平性质,本文提出的票据文本定位方法是基于CTPN算法的,其结合了卷积神经网络和循环神经网络,如图4所示。

首先通过主干网络VGG16[18]进行卷积操作,得到conv5的特征图。为了得到基于时序的特征,在特征图上以3×3的窗口进行滑窗拆分特征图,得到基于序列的特征后将其输入到BiLSTM[19]中。通过BiLSTM输出的特征转换成向量的形式输入到全连接层(Fully connected layer,FC)后准备输出。输出层主要有三个部分,2k个anchor的位置信息、2k个文本与非文本的得分和k个anchor的水平偏移量。获取文本建议框以后将得分较低的候选框剔除,并使用NMS过滤多余候选框。

CTPN的思想是基于固定锚点机制的,在特征图上每个像素点的垂直方向上设置了[k]个不同高度的anchor,在[y]方向上从11px~273px(依次除以0.7),在[x]方向上固定尺寸(16px)。回归层的输出是预测anchor的中心位置高度y轴坐标和矩形框的高度h值,每个anchor的位置信息由两部分组成,[k]个anchor对应[2k]个值。关于anchor垂直坐标的计算如公式(4)所示。

[VC=(Cy-Cay)/haVh=log (h/ha)V*C=(C*y-Cay)/haV*h=log (h*/ha)] (4)

其中,[{vc,vh}]和[{v*c,v*h}]分别是预测坐标和真实坐标。[{cay,ha}]是anchor的y轴坐标和高度,[{cy,h}]是预测出来的y轴坐标和高度,[{c*y,h*}]是真实的y轴坐标和高度。

在正负样本分类问题上,其本质是一个二分类问题,采用softmax损失作为损失函数,对应的输出为文本的得分和非文本的得分,[k]个Anchor对应[2k]个值。在[x]方向上的回归任务,主要用来精修文本行的两个端点,表示每个Anchor的水平偏移量,其计算如公式(5)所示。

[o=(Xside- CαX) / Wαo*=(X*side- CαX) / Wα] (5)

以上三个分支对应三部分的学习任务,其损失函数是分类损失和回归损失的和,如公式(6)所示。

[L(si,vj,ok)=1NsiLcls(si,s*i)+λ1NvjLrev(vj,v*j)+λ2NokLreo(ok,o*k)] (6)

其中,[Lcls]为分类损失,采用softmax loss;[{Lrev,Lreo}]为垂直方向上和水平方向上的回归损失,使用Smooth L1 loss。[{Si,Vj,Ok}]为网络预测输出,[{S*i,V*j,O*k}]代表真值标签。[{λ1,λ2}]为权重系数,用于平衡各学习任务的损失。[{Ns,Nv,No}]为归一化参数,表示对应任务的样本数量。

2.2 调整特征提取的主干网

VGG16包含了13个卷积层和3个全连接层,其网络如图5所示。CTPN算法选取Stage1至Stage5的卷积层用来提取输入图像的特征,conv5_3层的特征图经历了4次Max-pooling Layer,特征图上的感受野对应原图的1/16,在特征图上移动1个像素对应原图移动16个像素。对于自然场景文本数据集而言,街景文字的尺度普遍较大,对于这样的感受野,CTPN算法中的anchor检测级别仍能够对应到文字的一部分,获得部分文字特征。

而本文使用的数据集图像尺寸为1024×768,略小于ICDAR2015数据集的尺度,对比图如图6所示。此外,本文数据集中文字的尺度远不及自然场景中文本的尺度,若经过原始的CTPN卷积层后,Anchor所对应原图的感受野区域包含多个文字,检测级别不够精细。为了适应这种小尺度的文本、捕捉更精细的特征,本文算法将卷积操作进行到Stage4即可。输入的图像经历3次Max-pooling Layer,特征图上的感受野对应原图的1/8,在特征图上移动1个像素对应原图移动8个像素,从而Anchor可以获得更细的特性表征。

上一篇 点击页面呼出菜单 下一篇