[发明专利]一种针对PDF文档表格提取的系统及方法有效
| 申请号: | 201910738531.3 | 申请日: | 2019-08-12 |
| 公开(公告)号: | CN110516208B | 公开(公告)日: | 2023-06-09 |
| 发明(设计)人: | 李舟军;金代圣;肖武魁;刘俊杰;覃维 | 申请(专利权)人: | 深圳智能思创科技有限公司 |
| 主分类号: | G06F40/151 | 分类号: | G06F40/151;G06V30/412;G06V30/146 |
| 代理公司: | 北京慧泉知识产权代理有限公司 11232 | 代理人: | 李娜 |
| 地址: | 518000 广东省深圳市*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 针对 pdf 文档 表格 提取 系统 方法 | ||
1.一种针对PDF文档的表格提取的方法,其特征在于:包括表格特征提取、表格定位及表格内部结构解析三个步骤:具体如下:
S1.表格特征提取
S1.1文字提取
针对的PDF文档为非扫描得到的文档,所以PDF原数据包含文字数据;使用开源的PDF解析工具PDFBox抽取PDF文档中文字数据,PDFBox中的接口只提供获取文字的文本的功能,因此改写部分代码,达到获取文字的文本、坐标、大小、字体信息的效果;
S1.2线条提取
采用图像处理的方法进行线条提取,具体流程如下:
1)PDF预处理
在将PDF文档转化成图像之前,先使用PDFBox遍历PDF源数据中所有元素,过滤掉文字数据,将剩余数据保留并生成新的PDF文档,从而完全的消除了文字干扰;然后使用PDFBox工具对PDF文档进行格式转换,将文档中每一页转化成图片格式;
2)图像预处理
先将图像转化成灰度图,再二值化转化成黑白图;此时底色单元格区域全是同色,为了提取单元格的边框线条,对图片使用自适应二值化方法,将表格的边界轮廓凸显出来;此时图像预处理部分已经全部完成;
3)线条提取
首先构造垂直侵蚀核与水平侵蚀核,垂直侵蚀核就是宽度为1、高度为y的矩阵,水平侵蚀核则是宽度为x、高度为1的矩阵,用两个侵蚀核分别对预处理后的图像进行先腐蚀、后膨胀的组合操作,腐蚀的作用是过滤掉所有非水平与竖直的线条,膨胀的作用是弥补腐蚀操作时线条长度上的损失;将经过垂直侵蚀与水平侵蚀后的图像叠加,还原出图像中的表格结构;
S2.表格定位
S2.1基本表格定位
首先考虑基本的表格形式,表格拥有完整的边框线条,形成二维网格状的结构;对于这种表格,观察发现其单元格就是封闭的小矩形框,而表格就是包含这些小矩形框的大矩形框,所以对表格特征提取部分经过优化处理后的表格图片进行轮廓检测,包括外轮廓与内轮廓两种,外轮廓就是表格所处的精确位置区域,内轮廓就是单元格区域,通过判断内轮廓被哪一个外轮廓包含,就能判断出单元格属于哪一个表格;
S2.2缺省线条表格定位
采用补全表格的外接框的方法;表格的缺省框线大部分是垂直线条,上下表格边界框线都会保留,框线补全任务就转化成表格左右垂直框线的补全,也就是判定不同的横线条是否属于同一个表格;
首先将表格特征提取部分提取到的横线条全部取出,按照线条左端点横坐标为第一关键字、纵坐标为第二关键字进行排序,然后遍历排序后的线条列表,考虑相邻两根横线,如果两根横线左右对齐,且高度上差距在一定阈值内,则判定两根横线属于同一个表格;最终将属于同一表格的最上与最下两根横线作为表格的界线,并将表格的左右两条边界框线补齐,从而还原表格的外接框结构;
S2.3物体检测定位
使用深度学习中的物体检测技术,以经典的物体检测模型Faster R-CNN为网络结构,使用TableBank数据集进行训练以及测试;最终确定模型以ResNext作为特征提取部分,使用FPN进行特征加强,并加入Focal Loss优化方法;
S2.4子模块融合
将物体检测子模块的输出作为辅助判断的依据,使用精确的图像处理提取出的线条作为表格界线;在缺省线条表格定位子模块中,对于相邻的两根线条,如果属于物体检测子模块中输出的同一个检测框,则判定它们属于同一表格,并且补全外边框线;最终使用基本表格定位子模块进行表格定位;
S3.表格内部结构解析
S3.1基本表格解析子模块
先使用霍夫变换线条检测,检测图像中的全部线条,其中粗线条可能会被检测成相临的多根线条,于是基本表格解析子模块设定一个阈值,判定阈值内的同向并且重合区间大的线条为临近线条,将临近线条合并;最后将处理后的线条重构到新图中,从而得到线条更加精细、准确的图像;
然后对于每一个小单元格,遍历它所在页面的全部表格区域,通过判断表格区域与单元格的包含关系,从而获得单元格与表格的从属关系;接下来对表格内部的单元格按照纵坐标为第一关键字、横坐标为第二关键字进行排序,得到了一个单元格列表,此时已经还原表格的内部结构;
S3.2缺省线条表格解析子模块
缺省线条表格解析子模块利用文字分布的规律,将表格进行二次划分;
首先使用PDFBox工具将表格区域内的文字全部取出,然后计算出每个文字的最小外接框;利用PDFBox中的TextPosition类所包含文字的坐标以及宽高,将文字投影到横坐标轴,遍历横坐标轴每一个像素位置,如果出现连续一段大于阈值的空白区间,则判定加入垂直分割线,下一步将每个单元格在垂直分割线位置进行分割,最后将新的单元格重新排序,得到新的单元格列表;
对于缺省横向表格框线的情况,采用对每个单元格单独分析进而分解的方式进行处理;由于文字分布在纵坐标上的间隔特征并不明显,很难区分同一个单元格中的文字是缺省横线合并后的结果还是由文字段的换行导致;因此分析单元格内文字的行数,当文字行数量大于一定阈值时,就将单元格进行横向切分,最后更新单元格列表;
S3.3单元格文字提取
目前已经获得了单元格的区域,利用PDFBox将每个单元格内的文字取出,由于单元格识别的误差以及文字最小外接框的固有偏差,提取文字时需要将单元格区域扩大一定阈值,降低在文字与边框距离非常近甚至压线时单元格漏检文字的可能性,因为表格特征提取部分已经对线条进行过一次优化,只用设置一个很小的阈值就能完成;
S3.4表格二维网格化子模块
将表格结构进一步组织,划分成二维网格状的原始表格结构;
对于表格的横向结构,首先将全部单元的左右界数值放入同一个数组,将数组中的数值从小到大排序再进行类似离散化的操作,具体实现为:从头开始遍历整个数组,对于相邻两个数值,如果两数值之差在一定阈值内,则判定两个数值属于同一坐标,对两个坐标使用同一编号,直到相邻两数值之差大于阈值,则将编号加一,其中坐标与编号的映射关系使用Map数据结构存储;经过处理后,通过在Map中查找每个单元格的左右坐标编号,就能知道单元格横跨几个区间,也就是获得了合并单元格的位置以及大小;
同样的对纵坐标也做相同的处理,最终表格就被划分成了二维网格的结构,对于合并单元格具体的存储方式是将合并单元格的文字、单元格大小存储在合并单元格内左上角的基本单元格中,在其余部分的基本单元格内设置一个指针,指向左上角的单元格;
S3.5表格输出子模块
对于得到的二维网格化的表格,知道每个单元格的位置及大小,因此将表格使用HTML格式进行输出。
2.一种基于权利要求1所述的针对PDF文档的表格提取的方法所采用的系统,其特征在于:该系统包括:表格特征提取模块、表格定位模块、表格内部结构解析模块;
所述的表格特征提取模块:该模块用于提取PDF文档中线条信息;该模块具体包括文字提取子模块和线条提取子模块;
所述的表格定位模块:该模块用于通过外轮廓检测的方法定位表格区域;该模块具体包括基本表格定位子模块、缺省线条表格定位子模块及物体检测定位子模块;
所述的表格内部结构解析模块,该模块用于提取全部单元格、还原表格的内部结构,以及将表格划分成二维网格结构;该模块具体包括基本表格解析子模块、缺省线条表格解析子模块、单元格文字提取子模块、表格二维网格化子模块、表格输出子模块。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳智能思创科技有限公司,未经深圳智能思创科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910738531.3/1.html,转载请声明来源钻瓜专利网。





