CN113343815A - 一种pdf等版式文档中识别表格的方法 - Google Patents
一种pdf等版式文档中识别表格的方法 Download PDFInfo
- Publication number
- CN113343815A CN113343815A CN202110598830.9A CN202110598830A CN113343815A CN 113343815 A CN113343815 A CN 113343815A CN 202110598830 A CN202110598830 A CN 202110598830A CN 113343815 A CN113343815 A CN 113343815A
- Authority
- CN
- China
- Prior art keywords
- line segment
- point
- cell
- line
- line segments
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/174—Form filling; Merging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/177—Editing, e.g. inserting or deleting of tables; using ruled lines
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Document Processing Apparatus (AREA)
Abstract
本发明公开了一种PDF等版式文档中识别表格的方法,包括以下步骤:在PDF页面渲染过程中,记录页面状态,忽略隐藏线条,记录有效的横向线段和纵向线段;合并近似共线且相交或近似相交的横向线段和纵向线段;找到所有横向线段和纵向线段的交点和两侧端点;划分出多个互不联通的点线区域,将交点不超过4个的点线区域作为无效区域,多个相邻的无效区域作为无连通区域组并确定其单元格;针对交点超过4个的点线区域,得到每个单元格的坐标及边线;将每个单元格组划分为若干个表格行;得到表格整体的行数和列数;根据坐标设置单元格内的内容。本发明识别单元格更准确,不会因文本坐标出现漏识别或错识别,能准确提取单元格的行列特征。
Description
技术领域
本发明涉及电数字数据处理技术领域,尤其涉及一种PDF等版式文档中识别表格的方法。
背景技术
版式文档是版面呈现效果固定的电子文档,与Word(doc、docx)等流式文档相对,其显示效果与软硬件平台独立,在各种设备上阅读、打印时具有较强的一致性。PDF是目前最流行的一种版式文档格式,同类的格式还有OFD、CEB、SEP、EPUB等。
PDF是Portable Document Format的简称,意为“便携式文档格式”。PDF文件格式与操作系统平台无关,它可以忠实地跨平台再现原始文档格式(Docx,Html等文档在不同平台或不同软件中打开显示的样式可能会不同),所以其被广泛用于制度文档、合同、政府或企业文件等方面。这一特点使它成为在Internet上进行电子文档发行和数字化信息传播的理想文档格式。
PDF中支持显示表格,但和Docx和Html等格式中明确的表格逻辑对象不同的是,PDF中的表格其实是若干条独立的线单独绘制的,表格中的文字通过计算相对页面偏移后,直接绘制到页面给定位置。这样打开一个pdf文件后,经过上面的渲染,我们就可以看到PDF中的表格了。
PDF表格识别任务可以分为两个子任务:表格区域定位和表格内单元格及其内容的提取。
现有的针对表格区域定位问题的方法,主要有:
1.根据垂直和水平线条交叉确定表格;
2.根据机器学习预训练模型识别表格区域;
3.先识别单元格,再根据单元格确定表格。
现有的针对单元格及其内容识别的方法,主要有:
1.按水平垂直线条及其交点确定单元格位置和大小;
2.按文本的水平垂直投影或聚类距离确定单元格坐标。
中国专利申请“CN 111144300 A一种基于图像识别的pdf表格结构识别方法”提出了一种基于神经网络的表格区域定位方法;得到表格区域后,通过OCR方法得到文本块坐标;再训练两个分别用于判断任意两个文本块是否同行或同列的机器学习模型,来得到单元格的行信息和列信息。基于机器学习的表格区域定位方法,其准确率高度依赖于训练数据质量,且针对其他语言的表格可能召回率很低。判断文本块同行或同列的模型,其效果也高度依赖训练数据,不同的语言文本块的宽高比或关系等可能并不一致,这可能导致模型只在训练数据类似的PDF上面表现良好。此外先经过神经网络模型再经过OCR处理流程较长,效率过低。
中国专利申请“CN 105589841 A一种PDF文档表格识别的方法”提取文本作为行文本集合,提取线条作为线集合,通过关键词检索疑似表标题;位置接近的线条集合作为疑似表格线。根据疑似表标题和疑似表格线的存在情况,确定采用区域生长法或者检测全线表和三线表。此方案针对未闭合的表格提取不全(有内框线,无外框线),较依赖文本特征,如遇到新的特征需要手动维护;且此方法只能识别表格区域和相关的线条文本,无法提取单元格及其相关的跨行跨列等信息。
中国专利“CN 107622230 B一种基于区域识别与分割的PDF表格数据解析方法”介绍了一种将页面转为灰度图片,使用线条检测方法从图片中识别线条,如果水平线和垂直线相交则认为属于一个表格,否则属于不同表格;确定表格范围后,再按线条识别到单元格区域,这里如果是跨行跨列单元格,则每行独立进行单元格内容提取,最后合并相邻表格。此方法无法识别三线表(只有水平线的表格),无法完整提取未闭合的表格区域,且提取单元格时无法提取跨行跨列信息(处理过程中丢失了)。
中国专利申请“CN 109446487 A一种解析便携式文档格式文档表格的方法及装置”介绍了根据PDF中线条是否相交确定页面是否包含表格,然后将页面转为图片,再使用LSD直线识别算法从图片中提取线条,按横线和竖线的交点确定表格左上角,再分别从上到下遍历横线确定行单元格是否有跨行情况,从左到右遍历竖线确定列单元格是否有跨列情况。再根据单元格起点、终点横坐标和起点、终点纵坐标确定单元格位置及其内信息。关于如何从起点、终点横坐标和起点、终点纵坐标识别单元格不够详细,一笔带过。
中国专利申请“CN 110390269 A PDF文档表格提取方法、装置、设备及计算机可读存储介质”介绍了将PDF页面转为图片,经卷积神经网络+RPN区域候选网络确定表格区域,再基于OCR得到文字的准确位置,根据文字坐标聚类确定表格的结构,提取单元格信息。此方案对算力要求较高,处理时间较长;且数据需要标注,模型对未覆盖过的表格形式可能表现不佳;而且如果按文本坐标聚类确定表格行列时,可能因为字号、行未对齐或相邻单元格文本接近等原因出现识别准确率较低或单元格误合并等问题。
发明内容
为解决上述处理流程复杂、算力要求高、速度慢、性能差、依赖标注数据且无法准确提取单元格更丰富信息的问题,本发明根据PDF的文档规范和表格存储特点,提出了一种高效、准确、适应性广的方法。
本发明采用的技术方案如下:
一种PDF等版式文档中识别表格的方法,包括以下步骤:
S1.在PDF页面渲染过程中,记录页面状态,忽略隐藏线条,记录有效的横向线段和纵向线段;
S2.合并近似共线且相交或近似相交的横向线段和纵向线段;
S3.找到所有横向线段和纵向线段的交点和两侧端点,并与线段建立关联;
S4.根据交点、端点、横向线段和纵向线段的连接关系,划分为多个互不联通的点线区域;
S5.遍历每个全连接的点线区域,将交点不超过4个即至多一个单元格的点线区域作为无效区域,多个相邻的无效区域作为无连通区域组;
S6.针对交点超过4个的点线区域,根据各个点之间是否有线段连接,得到每个单元格的坐标及边线;
S7.针对无连通区域组,如果存在多个横向线段或纵向线段,间距接近且长度相同,则将相邻横向线段或纵向线段之间的区域作为单元格;
S8.针对每个单元格组,划分为若干个表格行,若相邻表格行间单元格坐标未对齐,则拆分为两个单元格组;
S9.针对每个单元格组,遍历每个单元格,根据坐标计算单元格所占的行数和列数,并得到表格整体的行数和列数;
S10.遍历表格中的每个单元格,根据坐标设置单元格内的内容,包括文字和/或图片。
进一步的,步骤S1包括以下子步骤:
S101.对第一命令进行解析,将图片和/或图形绘制到页面空间上,所述第一命令包括渲染图片和/或图形;
S102.对第二命令进行支持和记录,所述第二命令包括设置线条颜色和背景颜色;
S103.对于第三命令,根据绘制状态中存储的线条颜色及其坐标对应的背景颜色,判断绘制的线段是否是不可见的,如果不可见,则跳过;如果可见,则从绘制状态中读取线条属性,并判断绘制的线段的类型,根据类型加入到横向线段集合或纵向线段集合;所述第三命令包括绘制线段的矩形或路径命令,所述线条属性包括线宽和颜色。
进一步的,步骤S2中:
针对横向线段集合,按纵坐标升序排序,纵坐标相同时按左端点坐标升序排序;然后针对任意位置接近的两个横向线段,判断是否近似共线;如果两个横向线段近似共线,且在横坐标上相交或近似相交,则合并为一个横向线段;
针对纵向线段集合,按横坐标升序排序,横坐标相同时按顶部端点坐标升序排序;然后针对任意位置接近的两个纵向线段,判断是否近似共线;如果两个纵向线段近似共线,且在纵坐标上相交或近似相交,则合并为一个纵向线段。
进一步的,步骤S3包括以下子步骤:
S301.设线段的两侧端点坐标为(X1,Y1)和(X2,Y2),则X1=X2表示该线段为纵向线段,Y1=Y2表示该线段为横向线段;
S302.取所有横向线段的X1和X2,以及所有纵向线段的X1,按升序排列,记为数组A;定义集合B表示当前横坐标所在的横向线段;
S303.遍历数组A的每个元素,如果是横向线段的X1则将此横向线段加入到集合B;如果是横向线段的X2则将此横向线段从集合B中移除;如果是纵向线段的X1,则判断此纵向线段与集合B中的横向线段是否相交,如相交则记录交点并与两个线段建立关联;
S304.在找到所有交点和线段端点之后组成点集合,取所有点的横纵坐标的最大最小值,组成(Xmin,Ymin),(Xmax,Ymin),(Xmin,Ymax),(Xmax,Ymax),分别表示表格的左下、右下、左上、右上四个点,检查这四个点是否已记录,如未记录则加入点集合,以确保只有内框线且没有外框线的表格的最外圈单元格不被丢失。
进一步的,步骤S4中,定义全连接区域为横向线段和纵向线段形成的区域;根据线段的相交关系,划分为多个互不相交的全连接区域,包括以下子步骤:
S401.从点集合中任意一个点出发,记录两个相交线,再遍历两个相交线上的所有点,重复此过程,从而得到第一个全连接区域;
S402.从剩余的未被遍历的点出发,重复步骤S401,得到第二个全连接区域;
S403.重复步骤S402,直到找到所有的全连接区域,每两个全连接区域均不相交。
进一步的,步骤S5中,遍历每个全连接区域:
如果交点不超过4个,则此全连接区域不能单独形成表格,记为无效区域,但可能和附近的无效区域一起形成三线表,即只有横向线段或纵向线段的表格;多个相邻的无效区域,记为无连通区域组;
如果交点超过4个,则此全连接区域能够单独形成一个表格。
进一步的,步骤S6中,对于交点超过4个的全连接区域:
S601.将点集合中所有的点按纵坐标排序,针对每个点都尝试作为单元格左上角;
S602.遍历后续的点,如果与左上点有公共的横向线段,则作为右上点;如果与左上点有公共的纵向线段,则作为左下点;根据坐标计算右下点是否存在,且与右上点和左下点分别有1个公共的线段;如果满足,则这四个点及其四个边即形成一个单元格,并记录单元格的边线和坐标;
S603.针对点集合中每个点重复步骤S601、S602,从而得到所有的单元格及其坐标和边线。
进一步的,步骤S7包括以下子步骤:
S701.针对包含多个相邻无效区域的无连通区域组,如果相邻的横向线段或纵向线段间距接近且长度相同,则将相邻横向线段或纵向线段之间的区域作为单元格;
S702.重复步骤S701.,则得到若干个单元格。
进一步的,步骤S8包括以下子步骤:
S801.针对每个单元格组,按单元格的顶部纵坐标排序,顶部纵坐标相同的即作为表格的一行;重复此过程从而划分为多个表格行;
S802.将相邻表格行之间单元格的横坐标未对齐的,拆分为两个表格;检查两个表格行是否对齐的方法是:取两个表格行所有单元格的左侧横坐标,作为两个集合;如果两个集合的交集和其中一个集合完全重合,则认为两个表格行对齐。
进一步的,步骤S9包括以下子步骤:
S901.遍历表格的所有单元格,记录单元格的左侧和右侧作为表格的横坐标集合,记录单元格的顶部和底部作为表格的纵坐标集合;
S902.横坐标集合升序排序后,其数量减1即表格的列数;遍历每个单元格,根据其左侧坐标得到对应的起始列数,根据右侧坐标得到终止列数,两者之差即单元格所占列数;纵坐标集合升序排序后,其数量减1即表格的行数;遍历每个单元格,根据其顶部坐标得到对应的起始列数,根据底部坐标得到终止列数,两者之差即单元格所占行数。
本发明的有益效果在于:
针对PDF从PostScript命令中提取的线条包含不可见线条导致干扰单元格识别和表格识别问题,本发明提出了一种从PDF渲染过程中针对一些重要命令做解释更新页面渲染空间,同时记录线条颜色,对比线条所在背景颜色从而判断此线条是否是隐藏线条的方法;此方法与文献中将页面转为图片再经直线检测算法检测线段的方案相比,具有性能更好,坐标更准确,能保留线宽、线条颜色等信息,不存在错提或漏提问题的优势。
针对从相交的横线和竖线集合中提取单元格和表格问题,背景技术的解决方案有三种:一种是将表格区域内的文本按坐标进行聚类,再根据文本到横坐标和纵坐标上的投影确定表格的行数和列数,此方法忽略了表格的线条特征,相邻单元格文本接近时容易被识别为一个单元格,准确性较低;另一种是按横向线段和纵向线段的坐标确定表格的行数和列数,但具体技术方案不明确;还有一种是使用机器学习的方法,对文本块坐标建模,判断文本块是否是同行或同列,此方法也依赖文本块的坐标,对于相邻单元格文本接近的也容易产生误判,且对算力要求较高。本发明提出了根据横竖线段交点,依次尝试作为单元格左上点,根据后续点线连接特征,得到有效单元格,再根据单元格起止坐标确定其所占行数和列数的方法。识别单元格更准确,不会因文本坐标出现漏识别或错识别,能准确提取单元格的行列特征,且针对无外框线的表格也能正确提取。
通过本发明得到的表格不仅包含页面上指定的表格区域,也包含表格区域内的所有单元格及其跨行跨列信息,是一个完整的表格逻辑对象。此表格对象可以方便地转换为html格式,方便外部服务的使用。
附图说明
图1是本发明实施例1的一种PDF等版式文档中识别表格的方法流程图;
图2是表格行对齐的三种情况;
图3是表格行未对齐的一种情况。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现说明本发明的具体实施方式。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明,即所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
如图1所示,本实施例提供了一种PDF等版式文档中识别表格的方法,包括以下步骤:
S1.在PDF页面渲染过程中,记录页面状态,忽略隐藏线条,记录有效的横向线段和纵向线段;
S2.合并近似共线且相交或近似相交的横向线段和纵向线段;
S3.找到所有横向线段和纵向线段的交点和两侧端点,并与线段建立关联;
S4.根据交点、端点、横向线段和纵向线段的连接关系,划分为多个互不联通的点线区域;
S5.遍历每个全连接的点线区域,将交点不超过4个即至多一个单元格的点线区域作为无效区域,多个相邻的无效区域作为无连通区域组;
S6.针对交点超过4个的点线区域,根据各个点之间是否有线段连接,得到每个单元格的坐标及边线;
S7.针对无连通区域组,如果存在多个横向线段或纵向线段,间距接近且长度相同,则将相邻横向线段或纵向线段之间的区域作为单元格;
S8.针对每个单元格组,划分为若干个表格行,若相邻表格行间单元格坐标未对齐,则拆分为两个单元格组;
S9.针对每个单元格组,遍历每个单元格,根据坐标计算单元格所占的行数和列数,并得到表格整体的行数和列数;
S10.遍历表格中的每个单元格,根据坐标设置单元格内的内容,包括文字和/或图片。
由于PDF中文件内容是按页组织的,每个页面包含了本页渲染所需的类PostScript脚本、字体以及其他资源;PDF中的线条有些通过路径绘制,有些通过矩形等命令绘制;从PDf中的路径和矩形等命令中提取线条时,很多时候并不能直接用于后续的表格识别,因为提取到的线条颜色可能跟线条所在背景颜色相同,即线条是不可见的,从而导致后续的表格识别和单元格检测时出现错误。在CN 107622230 B和CN 109446487 A等方案中,都是将PDF页面转换为图片,再使用直线检测算法从图片中识别线条。但直线检测算法受限于图片质量,很容易将一些文字识别为线段,也容易漏检一些对比度不高的线段。
因此,本实施例提出在PDF页面渲染过程中,记录页面状态,忽略隐藏线条,记录有效的横向线段和纵向线段,即步骤S1。具体的,包括以下子步骤:
S101.对第一命令进行解析,将图片和/或图形绘制到页面空间上,所述第一命令包括渲染图片和/或图形;
S102.对第二命令进行支持和记录,所述第二命令包括设置线条颜色和背景颜色;
S103.对于第三命令,根据绘制状态中存储的线条颜色及其坐标对应的背景颜色,判断绘制的线段是否是不可见的,如果不可见,则跳过;如果可见,则从绘制状态中读取线条属性,并判断绘制的线段的类型,根据类型加入到横向线段集合或纵向线段集合;所述第三命令包括绘制线段的矩形或路径命令,所述线条属性包括线宽和颜色。
由于PDF看到的页面上的线条,实际在存储时可能由多个线条拼接而成,故上面直接提取的线段如果有重合和共线需要合并。因此,本实施例提出合并近似共线且相交或近似相交的横向线段和纵向线段,即步骤S2,其具体方法为:
针对横向线段集合,按纵坐标升序排序,纵坐标相同时按左端点坐标升序排序;然后针对任意位置接近的两个横向线段,判断是否近似共线;如果两个横向线段近似共线,且在横坐标上相交或近似相交,则合并为一个横向线段;
针对纵向线段集合,按横坐标升序排序,横坐标相同时按顶部端点坐标升序排序;然后针对任意位置接近的两个纵向线段,判断是否近似共线;如果两个纵向线段近似共线,且在纵坐标上相交或近似相交,则合并为一个纵向线段。
优选的,步骤S3即找到所有横向线段和纵向线段的交点和两侧端点,并与线段建立关联,包括以下子步骤:
S301.设线段的两侧端点坐标为(X1,Y1)和(X2,Y2),则X1=X2表示该线段为纵向线段,Y1=Y2表示该线段为横向线段;
S302.取所有横向线段的X1和X2,以及所有纵向线段的X1,按升序排列,记为数组A;定义集合B表示当前横坐标所在的横向线段;
S303.遍历数组A的每个元素,如果是横向线段的X1则将此横向线段加入到集合B;如果是横向线段的X2则将此横向线段从集合B中移除;如果是纵向线段的X1,则判断此纵向线段与集合B中的横向线段是否相交,如相交则记录交点并与两个线段建立关联;
S304.在找到所有交点和线段端点之后组成点集合,取所有点的横纵坐标的最大最小值,组成(Xmin,Ymin),(Xmax,Ymin),(Xmin,Ymax),(Xmax,Ymax),分别表示表格的左下、右下、左上、右上四个点,检查这四个点是否已记录,如未记录则加入点集合,以确保只有内框线且没有外框线的表格的最外圈单元格不被丢失。
优选的,定义全连接区域为横向线段和纵向线段形成的区域,根据线段的相交关系,划分为多个互不相交的全连接区域,即步骤S4,包括以下子步骤:
S401.从点集合中任意一个点出发,记录两个相交线,再遍历两个相交线上的所有点,重复此过程,从而得到第一个全连接区域;
S402.从剩余的未被遍历的点出发,重复步骤S401,得到第二个全连接区域;
S403.重复步骤S402,直到找到所有的全连接区域,每两个全连接区域均不相交。
优选的,步骤S5即遍历每个全连接的点线区域,将交点不超过4个即至多一个单元格的点线区域作为无效区域,多个相邻的无效区域作为无连通区域组,具体方法为:
如果交点不超过4个,则此全连接区域不能单独形成表格,记为无效区域,但可能和附近的无效区域一起形成三线表,即只有横向线段或纵向线段的表格;多个相邻的无效区域,记为无连通区域组;如果交点超过4个,则此全连接区域能够单独形成一个表格。
优选的,步骤S6即针对交点超过4个的点线区域,根据各个点之间是否有线段连接,得到每个单元格的坐标及边线,包括以下子步骤:
S601.将点集合中所有的点按纵坐标排序,针对每个点都尝试作为单元格左上角;
S602.遍历后续的点,如果与左上点有公共的横向线段,则作为右上点;如果与左上点有公共的纵向线段,则作为左下点;根据坐标计算右下点是否存在,且与右上点和左下点分别有1个公共的线段;如果满足,则这四个点及其四个边即形成一个单元格,并记录单元格的边线和坐标;
S603.针对点集合中每个点重复步骤S601、S602,从而得到所有的单元格及其坐标和边线。
优选的,步骤S7即针对无连通区域组,如果存在多个横向线段或纵向线段,间距接近且长度相同,则将相邻横向线段或纵向线段之间的区域作为单元格,包括以下子步骤:
S701.针对包含多个相邻无效区域的无连通区域组,如果相邻的横向线段或纵向线段间距接近且长度相同,则将相邻横向线段或纵向线段之间的区域作为单元格;
S702.重复步骤S701.,则得到若干个单元格。
优选的,步骤S8即针对每个单元格组,划分为若干个表格行,若相邻表格行间单元格坐标未对齐,则拆分为两个单元格组,包括以下子步骤:
S801.针对每个单元格组,按单元格的顶部纵坐标排序,顶部纵坐标相同的即作为表格的一行;重复此过程从而划分为多个表格行;
S802.由于一些复杂的表格,相邻两个表格行之间,各个单元格的横坐标并不是一一对应的,有些可能完全不对应。如图2是表格行对齐的三种情况,如图3是表格行未对齐的一种情况。因此,将相邻表格行之间单元格的横坐标未对齐的,拆分为两个表格,也方便后续每个单元格所占行数和列数的计算。优选的,检查两个表格行是否对齐的方法是:取两个表格行所有单元格的左侧横坐标,作为两个集合;如果两个集合的交集和其中一个集合完全重合,则认为两个表格行对齐。
优选的,步骤S9即针对每个单元格组,遍历每个单元格,根据坐标计算单元格所占的行数和列数,并得到表格整体的行数和列数,包括以下子步骤:
S901.遍历表格的所有单元格,记录单元格的左侧和右侧作为表格的横坐标集合,记录单元格的顶部和底部作为表格的纵坐标集合;
S902.横坐标集合升序排序后,其数量减1即表格的列数;遍历每个单元格,根据其左侧坐标得到对应的起始列数,根据右侧坐标得到终止列数,两者之差即单元格所占列数;纵坐标集合升序排序后,其数量减1即表格的行数;遍历每个单元格,根据其顶部坐标得到对应的起始列数,根据底部坐标得到终止列数,两者之差即单元格所占行数。
实施例2
本实施例在实施例1的基础上:
本实施例提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行该计算机程序时实现实施例1的PDF等版式文档中识别表格的方法的步骤。其中,计算机程序可以为源代码形式、对象代码形式、可执行文件或者某些中间形式等。
实施例3
本实施例在实施例1的基础上:
本实施例提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现实施例1的PDF等版式文档中识别表格的方法的步骤。其中,计算机程序可以为源代码形式、对象代码形式、可执行文件或者某些中间形式等。存储介质包括:能够携带计算机程序代码的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM)、随机存取存储器(RAM)、电载波信号、电信信号以及软件分发介质等。需要说明的是,存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,存储介质不包括电载波信号和电信信号。
以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
需要说明的是,对于前述的方法实施例,为了简便描述,故将其表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是本发明使用时惯常摆放的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
Claims (10)
1.一种PDF等版式文档中识别表格的方法,其特征在于,包括以下步骤:
S1.在PDF页面渲染过程中,记录页面状态,忽略隐藏线条,记录有效的横向线段和纵向线段;
S2.合并近似共线且相交或近似相交的横向线段和纵向线段;
S3.找到所有横向线段和纵向线段的交点和两侧端点,并与线段建立关联;
S4.根据交点、端点、横向线段和纵向线段的连接关系,划分为多个互不联通的点线区域;
S5.遍历每个全连接的点线区域,将交点不超过4个即至多一个单元格的点线区域作为无效区域,多个相邻的无效区域作为无连通区域组;
S6.针对交点超过4个的点线区域,根据各个点之间是否有线段连接,得到每个单元格的坐标及边线;
S7.针对无连通区域组,如果存在多个横向线段或纵向线段,间距接近且长度相同,则将相邻横向线段或纵向线段之间的区域作为单元格;
S8.针对每个单元格组,划分为若干个表格行,若相邻表格行间单元格坐标未对齐,则拆分为两个单元格组;
S9.针对每个单元格组,遍历每个单元格,根据坐标计算单元格所占的行数和列数,并得到表格整体的行数和列数;
S10.遍历表格中的每个单元格,根据坐标设置单元格内的内容,包括文字和/或图片。
2.根据权利要求1所述的一种PDF等版式文档中识别表格的方法,其特征在于,步骤S1包括以下子步骤:
S101.对第一命令进行解析,将图片和/或图形绘制到页面空间上,所述第一命令包括渲染图片和/或图形;
S102.对第二命令进行支持和记录,所述第二命令包括设置线条颜色和背景颜色;
S103.对于第三命令,根据绘制状态中存储的线条颜色及其坐标对应的背景颜色,判断绘制的线段是否是不可见的,如果不可见,则跳过;如果可见,则从绘制状态中读取线条属性,并判断绘制的线段的类型,根据类型加入到横向线段集合或纵向线段集合;所述第三命令包括绘制线段的矩形或路径命令,所述线条属性包括线宽和颜色。
3.根据权利要求2所述的一种PDF等版式文档中识别表格的方法,其特征在于,步骤S2中:
针对横向线段集合,按纵坐标升序排序,纵坐标相同时按左或右端点坐标升序排序;然后针对任意位置接近的两个横向线段,判断是否近似共线;如果两个横向线段近似共线,且在横坐标上相交或近似相交,则合并为一个横向线段;
针对纵向线段集合,按横坐标升序排序,横坐标相同时按顶部或底部端点坐标升序排序;然后针对任意位置接近的两个纵向线段,判断是否近似共线;如果两个纵向线段近似共线,且在纵坐标上相交或近似相交,则合并为一个纵向线段。
4.根据权利要求1-3任一项所述的一种PDF等版式文档中识别表格的方法,其特征在于,步骤S3包括以下子步骤:
S301.设线段的两侧端点坐标为(X1,Y1)和(X2,Y2),则X1=X2表示该线段为纵向线段,Y1=Y2表示该线段为横向线段;
S302.取所有横向线段的X1和X2,以及所有纵向线段的X1,按升序排列,记为数组A;定义集合B表示当前横坐标所在的横向线段;
S303.遍历数组A的每个元素,如果是横向线段的X1则将此横向线段加入到集合B;如果是横向线段的X2则将此横向线段从集合B中移除;如果是纵向线段的X1,则判断此纵向线段与集合B中的横向线段是否相交,如相交则记录交点并与两个线段建立关联;
S304.在找到所有交点和线段端点之后组成点集合,取所有点的横纵坐标的最大最小值,组成(Xmin,Ymin),(Xmax,Ymin),(Xmin,Ymax),(Xmax,Ymax),分别表示表格的左下、右下、左上、右上四个点,检查这四个点是否已记录,如未记录则加入点集合,以确保只有内框线且没有外框线的表格的最外圈单元格不被丢失。
5.根据权利要求4所述的一种PDF等版式文档中识别表格的方法,其特征在于,步骤S4中,定义全连接区域为横向线段和纵向线段形成的区域;根据线段的相交关系,划分为多个互不相交的全连接区域,包括以下子步骤:
S401.从点集合中任意一个点出发,记录两个相交线,再遍历两个相交线上的所有点,重复此过程,从而得到第一个全连接区域;
S402.从剩余的未被遍历的点出发,重复步骤S401,得到第二个全连接区域;
S403.重复步骤S402,直到找到所有的全连接区域,每两个全连接区域均不相交。
6.根据权利要求5所述的一种PDF等版式文档中识别表格的方法,其特征在于,步骤S5中,遍历每个全连接区域:
如果交点不超过4个,则此全连接区域不能单独形成表格,记为无效区域,但可能和附近的无效区域一起形成三线表,即只有横向线段或纵向线段的表格;多个相邻的无效区域,记为无连通区域组;
如果交点超过4个,则此全连接区域能够单独形成一个表格。
7.根据权利要求6所述的一种PDF等版式文档中识别表格的方法,其特征在于,步骤S6中,对于交点超过4个的全连接区域:
S601.将点集合中所有的点按纵坐标排序,针对每个点都尝试作为单元格左上角;
S602.遍历后续的点,如果与左上点有公共的横向线段,则作为右上点;如果与左上点有公共的纵向线段,则作为左下点;根据坐标计算右下点是否存在,且与右上点和左下点分别有1个公共的线段;如果满足,则这四个点及其四个边即形成一个单元格,并记录单元格的边线和坐标;
S603.针对点集合中每个点重复步骤S601、S602,从而得到所有的单元格及其坐标和边线。
8.根据权利要求7所述的一种PDF等版式文档中识别表格的方法,其特征在于,步骤S7包括以下子步骤:
S701.针对包含多个相邻无效区域的无连通区域组,如果相邻的横向线段或纵向线段间距接近且长度相同,则将相邻横向线段或纵向线段之间的区域作为单元格;
S702.重复步骤S701.,则得到若干个单元格。
9.根据权利要求8所述的一种PDF等版式文档中识别表格的方法,其特征在于,步骤S8包括以下子步骤:
S801.针对每个单元格组,按单元格的顶部纵坐标排序,顶部纵坐标相同的即作为表格的一行;重复此过程从而划分为多个表格行;
S802.将相邻表格行之间单元格的横坐标未对齐的,拆分为两个表格;检查两个表格行是否对齐的方法是:取两个表格行所有单元格的左侧横坐标,作为两个集合;如果两个集合的交集和其中一个集合完全重合,则认为两个表格行对齐。
10.根据权利要求9所述的一种PDF等版式文档中识别表格的方法,其特征在于,步骤S9包括以下子步骤:
S901.遍历表格的所有单元格,记录单元格的左侧和右侧作为表格的横坐标集合,记录单元格的顶部和底部作为表格的纵坐标集合;
S902.横坐标集合升序排序后,其数量减1即表格的列数;遍历每个单元格,根据其左侧坐标得到对应的起始列数,根据右侧坐标得到终止列数,两者之差即单元格所占列数;纵坐标集合升序排序后,其数量减1即表格的行数;遍历每个单元格,根据其顶部坐标得到对应的起始列数,根据底部坐标得到终止列数,两者之差即单元格所占行数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110598830.9A CN113343815B (zh) | 2021-05-31 | 2021-05-31 | 一种pdf等版式文档中识别表格的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110598830.9A CN113343815B (zh) | 2021-05-31 | 2021-05-31 | 一种pdf等版式文档中识别表格的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113343815A true CN113343815A (zh) | 2021-09-03 |
CN113343815B CN113343815B (zh) | 2022-06-07 |
Family
ID=77472423
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110598830.9A Active CN113343815B (zh) | 2021-05-31 | 2021-05-31 | 一种pdf等版式文档中识别表格的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113343815B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114186543A (zh) * | 2021-12-06 | 2022-03-15 | 明度智云(浙江)科技有限公司 | 一种药物实验文档的内容分析提取方法、系统和存储介质 |
CN114565927A (zh) * | 2022-03-03 | 2022-05-31 | 上海恒生聚源数据服务有限公司 | 表格识别方法、装置、电子设备及存储介质 |
CN115618836A (zh) * | 2022-12-15 | 2023-01-17 | 杭州恒生聚源信息技术有限公司 | 无线表格的结构还原方法、装置、计算机设备及存储介质 |
CN117912039A (zh) * | 2024-03-20 | 2024-04-19 | 南昌航空大学 | 一种文档图像版面分析方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02210586A (ja) * | 1988-07-12 | 1990-08-21 | Fuji Xerox Co Ltd | 表領域分離装置および表領域分離方法 |
US20100174975A1 (en) * | 2009-01-02 | 2010-07-08 | Philip Andrew Mansfield | Identification of Tables in an Unstructured Document |
CN109446487A (zh) * | 2018-11-01 | 2019-03-08 | 北京神州泰岳软件股份有限公司 | 一种解析便携式文档格式文档表格的方法及装置 |
CN110633660A (zh) * | 2019-08-30 | 2019-12-31 | 盈盛智创科技(广州)有限公司 | 一种文档识别的方法、设备和存储介质 |
CN112668289A (zh) * | 2020-12-25 | 2021-04-16 | 苏州开心盒子软件有限公司 | 一种嵌套表格的提取方法及装置、存储介质 |
-
2021
- 2021-05-31 CN CN202110598830.9A patent/CN113343815B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02210586A (ja) * | 1988-07-12 | 1990-08-21 | Fuji Xerox Co Ltd | 表領域分離装置および表領域分離方法 |
US20100174975A1 (en) * | 2009-01-02 | 2010-07-08 | Philip Andrew Mansfield | Identification of Tables in an Unstructured Document |
CN109446487A (zh) * | 2018-11-01 | 2019-03-08 | 北京神州泰岳软件股份有限公司 | 一种解析便携式文档格式文档表格的方法及装置 |
CN110633660A (zh) * | 2019-08-30 | 2019-12-31 | 盈盛智创科技(广州)有限公司 | 一种文档识别的方法、设备和存储介质 |
CN112668289A (zh) * | 2020-12-25 | 2021-04-16 | 苏州开心盒子软件有限公司 | 一种嵌套表格的提取方法及装置、存储介质 |
Non-Patent Citations (1)
Title |
---|
田翠华等: "PDF文档表格信息的识别与提取", 《厦门理工学院学报》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114186543A (zh) * | 2021-12-06 | 2022-03-15 | 明度智云(浙江)科技有限公司 | 一种药物实验文档的内容分析提取方法、系统和存储介质 |
CN114565927A (zh) * | 2022-03-03 | 2022-05-31 | 上海恒生聚源数据服务有限公司 | 表格识别方法、装置、电子设备及存储介质 |
CN115618836A (zh) * | 2022-12-15 | 2023-01-17 | 杭州恒生聚源信息技术有限公司 | 无线表格的结构还原方法、装置、计算机设备及存储介质 |
CN117912039A (zh) * | 2024-03-20 | 2024-04-19 | 南昌航空大学 | 一种文档图像版面分析方法 |
CN117912039B (zh) * | 2024-03-20 | 2024-05-24 | 南昌航空大学 | 一种文档图像版面分析方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113343815B (zh) | 2022-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113343815B (zh) | 一种pdf等版式文档中识别表格的方法 | |
US6720965B1 (en) | Image display device | |
US8428356B2 (en) | Image processing device and image processing method for generating electronic document with a table line determination portion | |
CN102194123B (zh) | 表格模板定义方法和装置 | |
US8515176B1 (en) | Identification of text-block frames | |
US8930814B2 (en) | Digital comic editor, method and non-transitory computer-readable medium | |
CN110321837B (zh) | 一种试题得分的识别方法、装置、终端及存储介质 | |
CN112016481B (zh) | 基于ocr的财务报表信息检测和识别方法 | |
CN110263792B (zh) | 图像识读及数据处理方法、智能笔、系统及存储介质 | |
CN104077270A (zh) | 电子书制作装置、电子书系统以及电子书制作方法 | |
CN107193467B (zh) | 用于展示智能笔书写内容的方法及设备 | |
CN112069991A (zh) | 一种pdf的表格信息提取方法及相关装置 | |
CN111507330A (zh) | 习题识别方法、装置、电子设备及存储介质 | |
US9734132B1 (en) | Alignment and reflow of displayed character images | |
CN110688825A (zh) | 一种版式文档中的含线表格信息提取方法 | |
CN111626036A (zh) | 一种新型的图文排版处理方法 | |
US8824806B1 (en) | Sequential digital image panning | |
CN115019310B (zh) | 图文识别方法及设备 | |
CN112084103A (zh) | 界面测试方法、装置、设备和介质 | |
CN115114481A (zh) | 文档格式转换方法、装置、存储介质及设备 | |
CN115331247A (zh) | 文档结构识别方法、装置、电子设备及可读存储介质 | |
CN115205881A (zh) | 一种表格识别方法、设备及介质 | |
CN115063805A (zh) | 图像识别方法、答题批改方法及相关装置、设备和介质 | |
CN111062377B (zh) | 一种题号检测方法、系统、存储介质及电子设备 | |
CN112686253A (zh) | 一种用于电子白板的屏幕文字提取系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |