【《表格识别算法分析概述》7200字】_第1页
【《表格识别算法分析概述》7200字】_第2页
【《表格识别算法分析概述》7200字】_第3页
【《表格识别算法分析概述》7200字】_第4页
【《表格识别算法分析概述》7200字】_第5页
已阅读5页,还剩14页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

表格识别算法分析概述目录TOC\o"1-3"\h\u4179表格识别算法分析概述 1322631.1算法概述 247181.2表格结构识别算法 3155881.1.1相关技术介绍 3179101.1.2图像预处理 548831.1.3直线检测和单元格提取 11117011.3文本检测算法 14263841.3.1相关技术介绍 14127141.3.2循环神经网络 16303501.3.3CTPN文本检测算法 17245121.3.4数据集及结果 18191361.4文本识别算法 20274991.4.1DenseNet神经网络 2092371.4.2连接时序分类 21110141.4.3数据集和结果 22165371.4表格识别算法整体实现 231.1算法概述本章将介绍实现的表格识别算法,表格识别算法相对来说比较复杂,可以分为几步,首先是表格结构识别,这一步需要从表格文档图像中定位出表格的位置,并识别出表格的单元格结构以及行列关系,以便后续识别表格中的文字内容以及还原表格结构。本文采取的思路是通过识别表格的横竖表格线来定位表格位置以及单元格结构,同时利用识别出的横竖表格线分割单元格,将单元格位置对应的图像送入文本检测和文本识别单元进行文本识别。表格结构识别算法主要基于数学形态学,使用OpenCV实现。文本检测任务需要从图像中找出文本的位置信息,给出文本的边界框位置、旋转角度等。文本识别任务基于文本检测任务的得到的文本区域对文本信息进行识别,将文本图像转换为计算机字符。在文本检测和文本识别任务中,基于深度学习的方法有着很好的识别精度和鲁棒性,本文采用CTPN文本检测算法,结合Densenet网络和连接时序分类CTC进行文本识别。图2-1算法流程本文的表格识别算法流程如图2-1所示,概述如下:Step1,先对拍摄的表格图像进行预处理,进行灰度化,高斯滤波,自适应阈值二值化,得到二值化的表格图像,然后通过轮廓检测方法定位出表格的外轮廓位置,识别表格的倾斜角度,进行倾斜矫正。Step2,得到矫正完成的图像后,基于数学形态学操作,分别使用横、竖直线的结构化元素腐蚀和膨胀图像进行开运算,得到表格图像中的横、竖表格线。叠加横、竖表格线,还原表格结构,再利用轮廓检测方法定位单元格位置,得到单元格的行列关系,并切分每个单元格,将单元格图像送入文本处理单元检测文本。Step3,文本检测和文本识别单元利用深度学习方法对送入的单元格图像进行识别,返回该单元格对应的字符序列。表格识别模块得到每个单元格内容后,结合表格结构,输出JSON格式的表格结构描述。1.2表格结构识别算法1.1.1相关技术介绍(1)数学形态学数学形态学是一门建立在严格数学理论基础上,分析研究空间结构的形状、框架素的学科。主要以积分几何、集合代数及拓扑论为理论基础,基本思想是用具有一定形态结构的结构元素去度量和提取图像中的对应形态以达到对图像分析和识别的目的。最基本的形态学运算有腐蚀(erosion)、膨胀(dilation)、开运算(opening)、闭运算(closing)。腐蚀运算可以表示为:X其中X表示被腐蚀的集合,S表示用来腐蚀的结构元素,x表示X中的点,用S腐蚀X得到的集合是S完全包括在X中时S的原点的位置集合。膨胀可以看作是腐蚀的对偶运算,可表示为:X先腐蚀后膨胀称为开运算,开运算是基于集合运算的滤波器,可以去除孤立的小点和毛刺,平滑图像。对应的,先膨胀后腐蚀称为闭运算,可以填补孔隙、弥合裂缝。(2)OpenCV开源计算机视觉库(OpenSourceComputerVisionLibrary,OpenCV)是基于Apache1.0许可发行的开源计算机视觉库,最早由Intel发布,主要使用C++编写,可以跨平台地在Linux、Windows等系统上运行,同时提供了多种语言的接口实现,如C++,Python,Java等,本文的表格结构识别算法基于Python-OpenCV实现。OpenCV库中提供了大量的类和函数供计算机视觉处理使用,包含了数百种计算机视觉算法,可以分为以下几个模块:核心功能模块,定义了基本的数据结构,包括密集的多维数组Mat和所有其他模块使用的基本函数;图像处理模块,包括线性和非线性图像过滤、几何图像变换(调整大小、仿射和透视变形、基于通用表的重映射)、色彩空间转换、直方图等功能;视频分析模块,包括运动估计、背景减法和对象跟踪算法等;三维重建模块,包括基本的多视图几何算法、单相机及立体相机校准、物体姿态估计、3D重建的对应算法和元素等;2D特征框架模块,包括显著特征检测器、描述符和描述符匹配器等;目标检测模块,可以用于目标检测和分类识别等,提供了一些预定义类的实例(例如,人、杯子、汽车等);另外还有高级GUI模块,提供了简单UI功能,以及视频I/O模块,提供易于使用的视频捕获和视频编解码器接口等。1.1.2图像预处理本文需要处理摄像机拍摄的表格文档图像,由于拍摄的文档图像可能存在明暗不均、倾斜等问题,为了方便后续的表格结构识别以及文本识别,首先需要对图像进行预处理。本节的示例图像的输入原图像如图2-2所示,预处理流程如下:图2-2输入原图像(1)灰度化摄像机拍摄的表格文档图像是彩色的,有R(红)、G(绿)、B(蓝)三个通道分量,每个通道有256阶的灰度值,但是对于本文的表格结构识别和文本识别来说,这些色彩信息相对是比较冗余的,通过灰度化将彩色图转化为灰度图可以去除这些无关的色彩信息,提高处理的准确性和处理速度。灰度图只有一个通道,把白色与黑色之间按对数关系分为256个等级表示颜色深度,灰度化一般采用加权平均法,即将RGB三个通道的灰度值按照一定的权重加和、求均值得到灰度值。OpenCV中默认的彩色图像的颜色空间是BGR,并提供了cvtcolor()函数进行颜色空间转换,可以实现BGR颜色同HSV、HLS、GRAY等颜色空间的相互转换,OpenCV中的灰度化公式为:Gray=0.113B+0.587G+0.299R#使用COLOR_BGR2GRAY转换码即可得到灰度图像,处理后的图像如图2-3所示。图2-3灰度化后图像(2)高斯滤波由于拍摄时的光线、角度等因素影响,摄像机拍摄的表格文档图片可能存在噪点或者明暗不均等现象,会影响后续的图像处理,因此采用高斯滤波的方法对图像进行平滑处理。高斯滤波是一种线性平滑滤波,根据二维正态分布得到高斯核对图像进行卷积,将每个像素的灰度值取周围像素的加权平均值,以达到去除高斯噪声的效果。OpenCV中提供了GaussianBlur()函数进行高斯滤波操作,本文采用5×5大小,标准差为0的高斯核进行处理,经过高斯滤波后的图像如图2-4所示。图2-4高斯滤波后图像(3)二值化图像二值化指的是将灰度图中灰度值大于某个阈值的像素点划分成灰度极大值255即白色,将灰度值小于某个阈值的像素点划分成灰度极小值0即黑色,使图像只有黑白两色。二值化是常用的图像处理技术,根据阈值选取方式,有固定阈值二值化和自适应阈值二值化,如局部自适应阈值二值化的阈值计算可以选取领域像素点灰度值的平均值,也可以使用领域像素点的高斯加权平均来计算阈值,计算方法同前所述的高斯滤波相似。OpenCV中提供了adaptiveThreshold()函数实现自适应阈值二值化,其中adaptiveMethod选择ADAPTIVE_THRESH_GAUSSIAN_C以实现高斯加权平均,这样对于可能出现的文档图像明暗不均、手动填写的单元格内容笔画轻重以及打印内容油墨深浅不同等情况可以有更好的适应。经过自适应阈值二值化的图像如图2-5所示。图2-5二值化图像(4)倾斜矫正由于表格文档图像为手动拍摄,很难控制表格在图像中的倾斜角度,即使是扫描图像也存在由于扫描仪机械误差导致的图像倾斜。如本文前述的示例表格图像就存在一定的倾斜角度,这样的倾斜会导致横、竖表格线在图像中并不是平行或垂直的,影响后续直线检测的效果,所以在进行表格线识别之前必须进行图像的倾斜矫正。对于表格图像的倾斜矫正来说,只要找出表格外轮廓的倾斜角度,并将整个图像在表格中心按该角度旋转即可。OpenCV中的findContours()使用了Suzuki85边界跟踪算法[27],可用来在二值图像中寻找轮廓,该函数返回的轮廓数组中面积最大的轮廓即为表格的外轮廓。然后利用minAreaRect()函数得到该外轮廓的最小外接矩形,这个最小外接矩形包含表格的中心坐标、宽度、高度以及旋转角度等信息。设中心坐标为(centerX,centerY),旋转角度为θ,缩放比例为1,getRotationMatrix2D()函数可以得到旋转变换矩阵M:cosθ设原图像的宽为W,高为H,则旋转后新图像的宽nW,高nH应为:nW=H∗sinθ+W∗cosθ有了旋转变换矩阵M、宽nW,高nH后可以使用warpAffine()函数进行仿射变换,二值化图像旋转后的图像如图2-6所示。图2-6倾斜矫正后图像1.1.3直线检测和单元格提取完成了图像预处理之后,在矫正了倾斜角度的二值化图像的基础上,使用数学形态学对图像中的横竖表格线进行提取。OpenCV中实现了erode()和dilate()函数分别用于腐蚀和膨胀,利用getStructuringElement()得到用于形态学运算的结构元素,然后分别对横线和竖线先腐蚀后膨胀,即进行开运算,得到只含有表格横线的图像如图2-7所示,只含有表格竖线的图像如图2-8所示。将上述两幅图片叠加,即可得到只含表格线的二值化图像,如图2-9所示。图2-7横线提取后图像图2-8竖线提取后图像图2-9表格线提取图在表格线提取图的基础上使用轮廓搜索函数findContours(),除去最外围的表格外轮廓外,其他的内轮廓均为表格的每个单元格轮廓,再利用boundingRect()函数框出该轮廓的垂直边界最小矩形,boundingRect()会返回该单元格左上角点的(x,y)坐标以及矩形的宽w和高h,然后使用算法2-1解析单元格的行列关系及分割单元格。算法2-1识别表格结构的算法使用findContours()找出所有内轮廓,对每个内轮廓用boundingRect()函数框出该轮廓的垂直边界最小矩形,得到单元格左上角点的(x,y)坐标以及矩形的宽w和高h,将这些信息以元组的形式存入列表中。用自定义方法对列表进行排序,将单元格按从左到右、从上到下的顺序排序,遍历所有的(x,y)坐标,将在一定误差范围内的坐标点认定为在同一行或同一列上,确定表格的行列数以及每行、列的起始坐标。再次遍历(x,y)坐标,根据对应宽w、高h和每行、列的起始坐标确定单元格起始行列、结束行列,根据起始行列和结束行列的坐标,切割原表格图像得到单元格内容进行文本识别。按照上述算法,切分得到的单元格如图2-10所示。图2-10切分后的单元格1.3文本检测算法基于图像处理得到表格结构之后,需要根据切分出单元格进行文本识别,文本识别之前需要进行文本检测以确定文本行的位置,本文的文本检测模块基于CTPN算法实现。1.3.1相关技术介绍(1)TensorFlowTensorFlow是用于机器学习和人工智能的开源软件库,由谷歌的人工智能团队GoogleBrain开发和维护。TensorFlow的前身是谷歌内部的机器学习系统DistBelief,在此基础上经过优化和重构后,谷歌在2015年以Apache1.0许可证开源发布了TensorFlow。TensorFlow中的核心数据结构是多维数组张量(Tensor),计算过程使用有状态的数据流图表示,TensorFlow的名字即来源于这种对张量的操作。TensorFlow的底层核心引擎由C++实现,通过gRPC实现网络互访、分布式执行,除了PythonAPI外还提供了C++、Java、Go和Rust等语言的API,支持CPU或GPU计算,可运行在多种操作系统上。(2)KerasKeras是一个用Python编写的高级神经网络API,它能够以TensorFlow,CNTK,或者Theano作为后端运行。Keras旨在快速实现深度神经网络,专注于用户友好、高度模块化和可扩展性,允许简单而快速的原型设计,同时支持卷积神经网络和循环神经网络以及两者的组合,并可以在CPU和GPU上无缝运行。Keras提供一致且简单的API,将常见用例所需的用户操作数量降至最低,并且在用户错误时提供清晰和可操作的反馈。Keras包含许多常用神经网络模块的实现,例如神经网络层、损失函数、优化器、初始化方法、激活函数、正则化方法等,可以通过组合这些模块配置新的神经网络结构。本文中的深度学习算法均基于TensorFlow和Keras实现。1.3.2循环神经网络循环神经网络(RecurrentNeuralNetwork,RNN)是神经网络的一种,与常见的前馈神经网络(FeedforwardNeuralNetwork)不同,RNN的节点之间的连接沿时间序列形成有向或无向图,因此RNN可以使用其内部状态来处理可变长度的输入序列,以序列作为输入和输出,使其适用于序列相关问题的解决中。文本片段、音视频片段都是常见的序列数据,因此循环神经网络在自然语言处理(NaturalLanguageProcessing,NLP)、手写识别、语音识别等领域都得到了广泛的运用,RNN的一般结构如图2-11所示。图2-11RNN结构示意图循环神经网络是图灵完备的,从理论上可以证明RNN可以实现任何算法来处理任意输入序列,但是一方面梯度消失和梯度爆炸问题在RNN的递归中随之而来,另一方面对于长程的上下文信息RNN不能很好地捕捉。为此,Hochreiter等人[28]提出了长短期记忆网络(Longshort-termmemory,LSTM),一个LSTM单元中包含了三种门结构:输入门、输出门和遗忘门,单元在任意时间间隔内记住值,三个门调节信息流入和流出单元。输入门控制网络当前输入数据流入单元的多少;输出值基于单元状态,输出门影响最终的输出;遗忘门决定哪些信息要保留、哪些信息要遗忘,控制LSTM从上一时刻的单元状态中丢弃那些不再需要的信息。LSTM单元结构如图2-12所示。图2-12LSTM单元结构示意图1.3.3CTPN文本检测算法CTPN是Tian等人[17]在欧洲计算机视觉国际会议(EuropeanConferenceonComputerVision,ECCV)2016上提出的文本检测算法。CTPN的网络结构如图2-13所示。图2-13CTPN网络结构CTPN先使用VGG16提取特征,在VGG16的最后一个卷积特征图conv5上进行3×3、步长为1的滑动窗口,每个窗口可以得到3×3×C的卷积特征,将同一行的特征向量送入一个256维的双向LSTM(Bi-directionalLongShort-TermMemory,BLSTM)。双向长短期记忆网络后是一个512维的全连接层,然后是输出层,这里有三个预测任务,分别是预测k个候选区域的起始y坐标和高度h、文本/非文本区域的分类评分、边界优化的偏移量,三者放在同一个损失和函数中进行近似联合训练。1.3.4数据集及结果数据集来自[29],格式与VOC数据集格式相同,共有JPGEImages、Annotations、ImageSets三个文件夹,JPGEImages文件夹存放的是jpg图片文件,共6000张;Annotation文件夹中存放的是与图片文件夹中名字一一对应的xml注释文件,标注了文件名、来源、图片尺寸、物体类别以及物体检测框的坐标等信息;ImageSets文件夹中包含了数据集进行训练集和验证集划分的txt文件。数据集示例如图2-14所示。图2-14文本检测数据集示例训练使用Adam优化器[30],初始学习率为0.00001,采用SGDR学习率调整策略[31],迭代20次,训练过程如图2-15所示,训练之后的CTPN模型文本检测结果如图2-16所示。图2-15文本检测训练过程展示图2-16文本检测结果示意图1.4文本识别算法1.4.1DenseNet神经网络DenseNet是Huang等人[32]在IEEE国际计算机视觉与模式识别会议(IEEEConferenceonComputerVisionandPatternRecognition,CVPR)2017上提出的卷积神经网络结构。在之前的工作中提升神经网络性能主要从两个方面着手,一方面是通过加深神经网络层数,如ResNet[33],另一方面通过加宽网络的结构,如Inception[34],DenseNet不同于这两种方法,从特征的角度考虑,通过特征重用和旁路设置提出了一种新的结构,不仅缓解了梯度消失问题,还大幅度减少了网络的参数量。具有L层的传统神经网络的每一层与其后续层之间有一个链接,所以具有L个连接,将第i层的非线性变换记作Hi(∗),第i层的特征输出记作XDenseNet则以前馈方式将每一层之间互相连接,L层的DenseNet具有L(L+1)/2个直接连接,结构如图2-17所示,第i层的输入不仅与i-1层的输出相关,还有所有之前层的输出有关,记作:X对于每一层,所有前面层的特征图都被用作输入,它自己的特征图被用作所有后续层的输入,这样的结构缓解了梯度消失问题,加强了特征传播,鼓励特征重用,并大大减少了参数的数量。图2-17DenseNet网络结构示意图1.4.2连接时序分类Graves等人[23]在机器学习国际会议(InternationalConferenceonMachineLearning,ICML)2006上提出了连接时序分类(ConnectionistTemporalClassification,CTC)用来解决语音识别中时序可变的语音序列问题。CTC是一种神经网络输出和相关评分函数,用于训练循环神经网络,广泛应用于手写识别、语音音频识别等领域。设一个音频或字符序列的输入为X=[x1,x2,…,xT],对应的输出如文本标注序列为Y=[y1,y2,…,yU如有一个输入X的长度为6,输出为Y=[c,a,t],要将X映射到Y,简单的方式是为输入的每一个元素都分配一个字符,然后去掉重复的字符,如图2-18所示。图2-18简单的序列转换示意图但是这种方式无法区分连续的相同字符,CTC引入了空字符ϵ,ϵ没有任何含义只用来分隔连续的相同的字符,在最终输出的时候被移除。引入了ϵ后,可以先进行连续重复字符的合并,再移除ϵ得到最终输出序列,如图2-19所示。图2-19CTC序列转换示意图1.4.3数据集和结果数据集来自[35],这是一个中文合成数据集,利用中文语料库,将新闻及文言文语句内容通过拉伸、模糊、灰度、缩放、修改字体等操作随机生成了364万条数据。图2-20文本识别数据集示例数据集中每个样本都含有10个字符,字符包含汉字、英文字母、数字和标点共5990个字符,图片分辨率均为280×32。训练集和验证集划分比例是99:1,数据集数据如图2-20所示,标注文件中每行为数据对应图片的文件名,及图中10个字符在字典文件中的索引。训练使用Adam优化器,初始学习率为0.0005,batch_size取64,迭代10次,训练过程中观测CTC损失的值,一旦损失回升,则将学习率缩小一半,训练过程如图2-21所示,训练之后的DenseNe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论