
技术背景
财务报表、技术报告、学术期刊和各种论文等带有大量绘制图表信息的文档,经常采用PDF格式保存。PDF内容提取版时应避免图表文字混入正文,或针对图表数据做进一步分析处理,都需要识别图表信息。
造成图表与文字内容无法区分的原因很多,除原始文档特点和排版错误等不可控因素,PDF格式的特殊性是主因。首先,PDF格式标准中并没有“图表”的逻辑概念,仅仅根据指令在页面上画出对象,若干绘制对象(如路径)和文字对象组合才构成一副图表。
其次,文字段落中也经常会出现绘制对象,最典型的就是包含分数线、根号的行内数学公式。另外,绘制对象经常被用来作为排版元素,比如下划线、分割线等,也会干扰图表识别。综合以上,逻辑上正文与图表的组成元素相同,所以难以直接区别。
现有技术通常分为两类,一种是人工或模板标注,通过指定范围确定处理的边界,人工操作效率低,无法处理大规模的文档;而模板方式灵活性较差。另一种是通过简单提取绘制对象确定,但是极易识别错误。

一、自动化报告图表的识别抽取

携宁的自动化报告图表的识别抽取技术是将PDF或者WORD报告文件里面的所有图表识别并且提取出来,再将图表的标题、来源、所在页码、图表类型(图表或者表格)、图表图片里面的文字提取出来,用于后续搜索使用。针对报告文件里的图表信息具有多样化的特性,携宁采用了两种识别提取方法同时进行的模式,以实现对图表的全面识别、精确提取。
这两种识别提取方法分别是:基于PDFminer的图表识别提取、基于AI模型的图表识别提取,接下来将详细介绍这两种图表识别提取方法。
1、基于PDFminer的图表识别提取

我们先利用PDFminer工具将PDF文本解析成文字,再基于规则找出解析后的文字中的所有标题、来源,并记录标题和来源的属性信息,该属性信息包括位置信息、页码信息、内容信息;最终根据标题和来源的属性信息确定截图区域并截图(标题左上角,来源右下角),得到包含标题、图表、来源的图表图片,再将获取到的标题、图表图片、来源信息综合显示。

由上图可知,最终得到的图表图片只包含标题、图表、来源,为了获取到信息对应且无多余的图表图片,我们采用正则表达并针对特殊排版的图表采用特殊的处理规则将解析后的文字中的所有标题、来源进行一一对应匹配分组;我们还对相关属性信息进行多次变换,将所有的PDF转换成图片,根据页码拼接成一张大图,并将页眉页尾从大图中去除,再重新得到相应的属性信息,以保证最终截图获取到的图表图片信息正确无误。

对于不规范的文本,如上图所示,利用PDFminer工具解析后得到的位置不够准确,从而导致截图得到的图表图片出现留白。为此,我们利用边缘检测算法和OpenCV技术对留白进行,将图片左右两边的留白以及由于换页带来的留白去除,得到最终的图表图片。最后利用tensorflow-slim 训练分类模型判断提取到的图表是表格还是一般的图表类型。

通过PDFminer解析得到的位置信息是标题和来源本身的位置,且采用了多种规则与逻辑来确保标题和来源的准确匹配,因此得到的位置信息不会出现偏差,最终的结果也很准确。
对页眉尾则利用了特殊的处理方式,从而使得提取到的图表不受换页的影响,并对换页带来的多余的页眉页尾进行精确裁剪,因此换页的表格也可以准确地提取。
同时,基于PDFminer的图表识别提取不需要准备数据集、花费大量时间去打标训练,也不需要高占用GPU,识别速度快,对于机器性能的要求较低,对于绝大多数(90%)的报告文件都具有适用性。

但是基于PDFminer的图表识别提取只能提取到规范的标题和来源,例如标题为“图表:XXXXX”;而对于其他特殊情况的标题或来源则无法识别,如上图所示,图表的标题与报告正文共用一个位置信息、或者标题为“盈利预测与估值”、没有来源信息、标题包含正文描述、多个标题共用来源信息的情况;对于PDF文件加密且无法解密或者PDF文件自身有问题,PDF文件无法解析或解析不到正确的文本的情况,也无法正确处理。
2、基于AI模型的图表识别提取

携宁所采用的AI模型是基于神经网络的目标检测Fast R-CNN模型,先将PDF按页转换成图片,再利用Fast R-CNN模型自动识别出图片中的图表,得到的一个或多个图表的框,并按照一定的规则对得到的框进行筛选,从而得到跟图表所对应的框;最后根据获取到的相应框的位置信息截图,并利用PDF文本解析从图表截图中获取标题、来源的文字信息,再将获取信息综合显示。
由于训练数据集不可能覆盖所有类型的图表,训练参数等各种影响,最终的模型结果会存在偏差,对于Fast R-CNN模型自动识别得到的框会出现识别不准确的情况,即图表上方的文字即标题框不全,因此,我们利用OpenCV技术计算像素,根据像素值对识别框的完整性进行判断,如果不完整就将其补全。
由于有些标题是不规范的,无法根据关键字判断它是否是标题,因此我们还用Fast R-CNN训练了一个标题识别模型,识别图表截图图片里面的标题,得到标题的位置信息;对于换页的图表,会根据位置信息尝试在前一页匹配到它的标题;最后将获取到的标题、图表、来源信息综合显示。

基于AI模型的图表识别提取不受标题、来源、pdf文件加密的影响,几乎适用于所有类型的PDF文件的图表识别,并可以直接识别图表的类型,模型识别结果准确率高达95%。
但是对于图表并列并且位置十分接近的特殊情况,如上图所示,基于AI模型的图表识别提取得到结果会产生偏差,同时模型识别需要的GPU对于机器的性能也有一定的要求。
因此在实际处理时,每个PDF文件都会采用两种方法进行处理,然后筛选过滤,即根据标题和图表位置信息,过滤掉重复的图表,从而保证结果的准确性和完整性。
接下来介绍自动化报告图表的识别提取中用到的核心技术:PDFminer、Fast R-CNN模型。
3、PDFminer

PDFMiner是一个Python的PDF解析器,用于从PDF文档中提取信息,它专注于获取和分析文本数据。PDFMiner允许获取某一页中文本的准确位置和一些诸如字体、行数的信息。它包括一个PDF转换器,可以把PDF文件转换成HTML等格式。还有一个扩展的PDF解析器,可以用于除文本分析以外的其他用途。
解析PDF是一件非常耗时和内存的工作,因此PDFMiner使用了一种称作lazy parsing的策略,只在需要的时候才去解析,以减少时间和内存的使用。要解析PDF至少需要两个类:PDFParser和PDFDocument,PDFParser 从文件中提取数据,PDFDocument保存数据。另外还需要PDFPageInterpreter去处理页面内容,PDFDevice将其转换为我们所需要的,PDFResourceManager用于保存共享内容例如字体或图片。
PDFMiner内置两个工具:pdf2txt.py和dumppdf.py:pdf2txt.py 从 PDF 文件中提取所有文本内容,但不能识别画成图片的文本,这需要特征识别;dumppdf.py 则把 PDF文件内容变成 pseudo-XML 格式。
PDFMiner 使用时相对而言要复杂点,但其支持多种语言、类型、图表、图片等,还可以进行纲要提取、标签内容提取、通过分组文本块重建原始的布局,功能强大。
4、Fast R-CNN模型

Fast R-CNN模型的输入由两部分组成:一是待处理的整张图像;二是候选区域(region proposal)。Fast R-CNN模型处理的第一步是对图像进行多次卷积核池化处理来获取卷积特征图。由于存在多个候选区域,系统会有一个甄别,判断出感兴趣区域,也就是Region of Interest(RoI)。
RoI池化层是SSP(Spatial Pyramid Pooling)层的特殊情况,它可以从特征图中提取一个固定长度的特征向量。每个特征向量,都会被输送到全连接(FC)层序列中,这个FC分支成两个同级输出层。其中一层的功能是进行分类,对目标关于K个对象类(包括全部”背景background“类)输出每一个RoI的概率分布,也就是产生softmax概率估计;另一层是为了输出K个对象中每一个类的四个实数值(bbox regression)。每4个值编码K个类中的每个类的精确边界框(bounding-box)位置。整个结构是使用多任务损失的端到端训练(trained end-to-end with a multi-task loss)。
Fast R-CNN模型将最后一个卷积层的SSP Layer改为RoI Pooling Layer;另外提出了多任务损失函数(Multi-task Loss),将边框回归直接加入到CNN网络中训练,同时包含了候选区域分类损失和位置回归损失。

RoI Pooling Layer实际上是SPP Layer的简化版,SPP Layer对每个候选区域使用了不同大小的金字塔映射,即SPP Layer采用多个尺度的池化层进行池化操作;而RoI Pooling Layer只需将不同尺度的特征图下采样到一个固定的尺度。
Fast R-CNN
模型特点
测试速度快:将整张图像归一化后直接送入CNN,在最后的卷积层输出的feature map上,加入建议框信息,使得在此之前的CNN运算得以共享;
训练速度快:训练时,只需要将一张图像送入网络,每张图像一次性地提取CNN特征和建议区域,训练数据在GPU内存里直接进Loss层,这样候选区域的前几层特征不需要再重复计算且不再需要把大量数据存储在硬盘上;
训练所需空间小:把类别判断和位置回归统一用深度网络实现,不再需要额外存储。
4、应用

基于上述自动化报告图表的识别提取技术得到的图表,在知丘系统中具有实际应用,对于主动搜索相关信息时,通过勾选图表数据即可直接获取相关信息的全部图表数据,包括图表图片、标题、来源数据,从而有利于用户快速、直观地查阅相关信息。
5、总结
本文介绍了自动化报告图表的识别提取,携宁采用了基于PDFminer的图表识别提取和基于AI模型的图表识别提取两种识别提取方法同时进行的模式,这两种方法具体涉及了PDFminer技术和Fast R-CNN模型,由于这两种识别提取方法各有特点,而报告图表的形式又多样,因此对每个PDF文件都会采用两种方法进行处理,然后筛选过滤,以实现对图表的全面识别、精确提取。
END

本文探讨了PDF文档中图表信息的自动化识别与提取技术。通过PDFminer和基于AI的Fast R-CNN模型,两种方法互补以提高准确性和完整性。PDFminer擅长处理规范文本,而Fast R-CNN能识别复杂情况,两者结合处理每个PDF,过滤重复图表,确保结果准确。此技术在实际应用中,有助于用户快速查找和理解图表数据。
1957

被折叠的 条评论
为什么被折叠?



