技术领域
[0001] 本
发明涉及表格处理技术领域,尤其是涉及一种表格提取方法、装置和电子设备。
背景技术
[0002] 使用CAD(Computer Aided Design,
计算机辅助设计)绘制表格,除了CAD自带的表格对象以外,使用离散的线段和文字绘制表格是设计人员常用的手段。
[0003] 目前解析CAD图纸中的离散线段和文字组成的表格,常通过配置表格左右两端的特征的方式提取表格,该方式每次提取一张表或提取一类表都需要手工配置特征,导致该方式人工干预过多,且过多人工配置使得该方法通用性较差。
发明内容
[0004] 本发明的目的在于提供一种表格提取方法、装置和电子设备,以避免人工干预,提高表格提取的通用性。
[0005] 第一方面,本发明
实施例提供一种表格提取方法,该方法包括:提取预先获取的待处理图纸中的垂线段和
水平线段;根据垂线段和水平线段的坐标值,确定垂线段和水平线段的线段交点;通过线段交点,提取多个单元格;对多个单元格进行归类,根据归类结果确定多个单元格对应的表格。
[0006] 在可选的实施方式中,上述提取预先获取的待处理图纸中的垂线段和水平线段的步骤,包括:提取待处理图纸中与预设横轴的夹
角在第一预设范围内的线段,作为水平段;提取待处理图纸中与预设纵轴的夹角在第二预设范围内的线段,作为垂线段。
[0007] 在可选的实施方式中,上述根据垂线段和水平线段的坐标值,确定垂线段和水平线段的线段交点的步骤之前,上述方法还包括:根据预设的坐标排序规则,对垂线段和水平线段进行排序,得到线段排序序列;合并线段排序序列中互相包含的垂线段和互相包含的所述水平线段。
[0008] 在可选的实施方式中,上述根据垂线段和水平线段的坐标值,确定垂线段和水平线段的线段交点的步骤,包括:选取纵坐标值在垂线段的纵坐标值范围内的水平线段,以及横坐标值在水平线段的横坐标值范围内的垂线段;对选取的水平线段和垂线段进行相交,得到线段交点,以及线段交点之间的拓扑关系。
[0009] 在可选的实施方式中,上述通过线段交点,提取多个单元格的步骤,包括:提取包含有四个线段交点的矩形,将矩形确定为单元格。
[0010] 在可选的实施方式中,上述对多个单元格进行归类,根据归类结果确定多个单元格对应的表格的步骤,包括:选取多个单元格中左上角的线段交点的纵坐标值相同的所述单元格,归类为同一行单元格;按照预设规则,提取每一个同一行单元格,以组合成表格。
[0011] 在可选的实施方式中,上述提取预先获取的待处理图纸中的垂线段和水平线段的步骤之前,上述方法还包括:从CAD的背景数据中加载待处理图纸,以及待处理图纸对应的文本数据;根据待处理图纸和待处理图纸对应的文本数据,构建文本搜索表。
[0012] 在可选的实施方式中,上述对多个单元格进行归类,根据归类结果确定多个单元格对应的表格的步骤之后,上述方法还包括:遍历表格中的每个单元格,获取每个单元格的坐标范围;根据坐标范围,从文本搜索表中确定单元格对应的文本值。
[0013] 第二方面,本发明实施例提供一种表格提取装置,该装置包括:线段提取模
块,用于提取预先获取的待处理图纸中的垂线段和水平线段;交点确定模块,用于根据垂线段和水平线段的坐标值,确定垂线段和水平线段的线段交点;单元格提取模块,用于通过线段交点,提取多个单元格;表格确定模块,用于对多个单元格进行归类,根据归类结果确定多个单元格对应的表格。
[0014] 第三方面,本发明实施例提供一种电子设备,该电子设备包括处理器和
存储器,存储器存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现前述实施方式任一项所述的表格提取方法。
[0015] 本发明实施例带来了以下有益效果:
[0016] 本发明提供了一种表格提取方法、装置和电子设备,首先提取预先获取的待处理图纸中的垂线段和水平线段;进而根据垂线段和水平线段的坐标值,确定垂线段和水平线段的线段交点;再通过线段交点提取多个单元格;然后对多个单元格进行归类,根据归类结果确定多个单元格对应的表格。该方式能够自动从待处理图纸中确定表格,无需人工干预,从而提高了表格提取的通用性。
[0017] 发明的其他特征和优点将在随后的
说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本发明的上述技术即可得知。
[0018] 为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施方式,并配合所附
附图,作详细说明如下。
附图说明
[0019] 为了更清楚地说明本发明具体实施方式或
现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0020] 图1为本发明实施例提供的一种表格提取方法的
流程图;
[0021] 图2为本发明实施例提供的另一种表格提取方法的流程图;
[0022] 图3为本发明实施例提供的一种表格提取装置的结构示意图;
[0023] 图4为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
[0024] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
[0025] 因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的
选定实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0026] 在CAD中使用离散的线段和文字绘制表格时,离散线段和文字组成的表格仅是一张视觉效果的表格,使用计算机进行识别时仍然是一系列离散的线段和文字,需要对把文件内的离散线段和文字进行组合成表格,确定表格的行、列和单元格信息才能以表格的形式进行读写。组合成表格时存在如下困难:一是表格的行列组成线段与其他线段难以区分;二是存在表格内部单元格合并;三是存在表格与表格共外边;四是存在表格嵌套在其他表格内部。
[0027] 目前解析CAD图纸中的离散线段和文字组成的表格,常通过配置表格左右两端特征提取表格,该方式中通过配置提取表格时人工干预过多,导致该方式的不通用较差、且不能适用上述组合成表格时存在困难的后三种复杂场景。
[0028] 基于此,本发明实施例提供了一种表格提取方法、装置和电子设备,该技术可以应用于任何复杂场景下的表格提取的场景中。为便于对本实施例进行理解,首先对本发明实施例所公开的一种表格提取方法进行详细介绍,如图1所示;该方法包括如下具体步骤:
[0029] 步骤S102,提取预先获取的待处理图纸中的垂线段和水平线段。
[0030] 通常用户可以在CAD中绘制图纸,从而可以在CAD的背景数据中获取到待处理图纸,该待处理图中通常包含用户通过离散的线段和文字组成的表格,该表格的数量可以为多个。根据离散的线段的坐标值,可确定出垂线段和水平线线段。
[0031] 步骤S104,根据上述垂线段和水平线段的坐标值,确定垂线段和水平线段的线段交点。
[0032] 根据垂线段和水平线段的首位端点的坐标值,可以确定两条线段的相对
位置,基于该相对位置可以对垂线段和相应的水平线段做相交,得到线段交点,此时通常可以得到多个线段交点。
[0033] 步骤S106,通过上述线段交点,提取多个单元格。
[0034] 通常单元为矩形,提取由四个向线段交点组成的矩形,可以得到多个单元格。
[0035] 步骤S108,对上述多个单元格进行归类,根据归类结果确定多个单元格对应的表格。
[0036] 根据单元格中线段交点的坐标值,可以确定多个单元格之间的相对位置,从而可以归类出在同一行的单元,以及在同一列的单元格,然后根据单元格的位置关系,确定出表格。
[0037] 本发明提供了一种表格提取方法,首先提取预先获取的待处理图纸中的垂线段和水平线段;进而根据垂线段和水平线段的坐标值,确定垂线段和水平线段的线段交点;再通过线段交点提取多个单元格;然后对多个单元格进行归类,根据归类结果确定多个单元格对应的表格。该方式能够自动从待处理图纸中确定表格,无需人工干预,从而提高了表格提取的通用性。
[0038] 本发明实施例还提供了另一种表格提取方法,该方法在上述实施例方法的
基础上实现;如图2所示,该方法包括如下步骤:
[0039] 步骤S202,从CAD的背景数据中加载待处理图纸,以及该待处理图纸对应的文本数据。
[0040] 上述文本数据可以称为待处理图纸中的全部实体,该全部实体包含了图纸中线段的坐标值、关键点的坐标值,以及每个单元格对应的文本值。
[0041] 步骤S204,根据上述待处理图纸和待处理图纸对应的文本数据,构建文本搜索表。
[0042] 上述文本搜索表中存储有文本的关键点坐标,从文本搜索表中查找文本时,通过文本的关键点坐标可以搜索到该关键点对应的文本值,也即是当文本的关键点坐标在表格的单元格区域内时,即搜索到单元格对应的文本值,其中单元格通常指的是表格中第N行N列所在的区域。建立上述构建文本搜索表有利于确定单元格对应的文本值。
[0043] 步骤S206,提取上述待处理图纸中与预设横轴的夹角在第一预设范围内的线段,作为水平段。
[0044] 上述第一预设范围可以根据需求设定,例如,将第一预设范围设置为与预设横轴的夹角小于或者等于1度,也即是判断待处理图纸中的线段与预设横轴的夹角是否大于或者等于1度,如果是,将该线段确定为水平线段,其中,预设横轴通常是指直角
坐标系中的横轴的方向。
[0045] 步骤S208,提取上述待处理图纸中与预设纵轴的夹角在第二预设范围内的线段,作为垂线段。
[0046] 上述第二预设范围可以根据需求设定,例如,将第二预设范围设置为与预设纵轴的夹角小于或者等于1度,也即是判断待处理图纸中的线段与预设纵轴的夹角是否大于或者等于1度,如果是,将该线段确定为垂线段,其中,预设纵轴通常是指直角坐标系中的纵轴的方向。
[0047] 在具体实现时,为了提高计算效率,通常在确定出水平线段和垂线段后,需要进行下述步骤10-11,以合并相互包含的线段:
[0048] 步骤10,根据预设的坐标排序规则,对垂线段和水平线段进行排序,得到线段排序序列。
[0049] 上述预设的坐标排序规则通常包括:首端点横坐标值升序、纵坐标值降序的方式,该首端点通常指的是垂线段或者水平线段的首尾端点中,横坐标值较小的端点,如果横坐标值相同,首端点是指垂线段或者水平线段的首尾端点中,纵坐标值较大的端点。
[0050] 在具体实现时,上述垂线段和水平线段可以按照首端点横坐标值从小到大,纵坐标值从大到小的顺序进行排序,得到线段排序序列,该线段排序序列通常是以线段为最小单元的序列。该排序方式有利于后续进行相互包的线段的合并,以减少重复的线段,提升后续表格提取的效率。
[0051] 步骤11,合并线段排序序列中互相包含的垂线段和互相包含的水平线段。
[0052] 上述相互包含通常是指相互平行且相交的线段。例如,A、B、C、D四点共线,线段AB的一个端点B在线段CD上,线段CD的一个端点C在线段AB上,此时线段AB和线段CD相互包含。合并相互包含的线段可以减少线段相交次数,避免获取重复交点,提升后续表格提取的效率。
[0053] 步骤S210,选取纵坐标值在垂线段的纵坐标值范围内的水平线段,以及横坐标值在水平线段的横坐标值范围内的垂线段。
[0054] 步骤S212,对选取的水平线段和垂线段进行相交,得到线段交点,以及线段交点之间的拓扑关系。
[0055] 在具体实现时,在做线段相交之前,需要根据水平线段和垂线段的长度从短到长的顺序进行排序,得到一个长度排序序列。在做线段相交时,允许容差为长度排序
序列表中排序在中间的线段的长度的0.01倍,从而减少没必要的相交运算,提升效率,通过线段交点的位置关系可以建立选段交点之间的拓扑关系,以为提取单元格提供依据。
[0056] 步骤S214,提取包含有四个线段交点的矩形,将该矩形确定为单元格。
[0057] 步骤S216,选取多个单元格中左上角的线段交点的纵坐标值相同的单元格,归类为同一行单元格。
[0058] 步骤S218,按照预设规则,提取每一个同一行单元格,以组合成表格。
[0059] 在具体实现时,由于单元格已按左上角
顶点横坐标值升序、纵坐标值降序排序,所以第一步可直接确定表格的第一行:从左至右查找顶点坐标相同、且未使用、且共外边的单元格组成表的第一行,标记已经使用的单元格,未找到可用单元格则结束表格提取;令第一行第一个单元格左上角顶点坐标为m(x1,y1),第一行最后一个单元格右上角顶点坐标为n(x2,y2),当前单元格左上角顶点坐标为p(x3,y3)、右上角顶点坐标为q(x4,y4)时,第二步确定表格下一行:判断坐标p与上一行第一个单元格左下角顶点相同、且x4<=x2,不符合条件则结束本次循环重复第一步开始提取下一张表,否则挑选符合x1<=x3、且y3
[0060] 在具体实现时,为了确保单元格底部在一条水平线上,需要对通过以上步骤组成的每个表格的最后一行进行验证,该验证过程通常是从表格的最后一行的前两个单元格开始验证,也即是验证当前单元格的左下角顶点的y坐标值与当前单元格的下一个单元格的左下角顶点的y坐标值是否相同;如果相同,保留当前单元格,继续将当前单元格的下一个单元格作为新的单元格进行验证,直到当前单元格为最后一行的最后一个单元格,停止验证;如果不相同,将最后一行从该表格中去除,并将最后一行中的所有单元格设置为未使用,继续将该表格中的最后一行的上一行设置为新的最后一行,继续执行上述对最后一行进行验证的步骤。
[0061] 当最后一行是表格的第一行时,如果当前单元格的左下角顶点的y坐标值与当前单元格的下一个单元格的左下角顶点的y坐标值不相同,则将当前单元格的下一个单元格之后的所有单元格从该表格中去除,并将去除的单元格设置为未使用状态。
[0062] 步骤S220,遍历上述表格中的每个单元格,获取每个单元格的坐标范围。表格每个单元格中线段交点的坐标值,可以得到每个单元格的坐标范围。
[0063] 步骤S222,根据上述坐标范围,从文本搜索表中确定单元格对应的文本值。
[0064] 上述表格提取方法,可以提取所有符合表格逻辑的表,为
指定的业务表格提取提供数据支持;该方式使得业务和逻辑分离,增加
软件功能的复用性,同时该方式不论图纸中含有多少种表格,只需加载一次图纸,即可提取出所有的表格,从而提升了软件效率。
[0065] 对应于上述表格提取方法,本发明实施例还提供了一种表格提取装置,如图3所示,该装置包括:
[0066] 线段提取模块30,用于提取预先获取的待处理图纸中的垂线段和水平线段。
[0067] 交点确定模块31,用于根据垂线段和水平线段的坐标值,确定垂线段和水平线段的线段交点。
[0068] 单元格提取模块32,用于通过线段交点,提取多个单元格。
[0069] 表格确定模块33,用于对多个单元格进行归类,根据归类结果确定多个单元格对应的表格。
[0070] 上述表格提取装置,首先提取预先获取的待处理图纸中的垂线段和水平线段;进而根据垂线段和水平线段的坐标值,确定垂线段和水平线段的线段交点;再通过线段交点提取多个单元格;然后对多个单元格进行归类,根据归类结果确定多个单元格对应的表格。该方式能够自动从待处理图纸中确定表格,无需人工干预,从而提高了表格提取的通用性。
[0071] 进一步地,上述线段提取模块30,用于:提取待处理图纸中与预设横轴的夹角在第一预设范围内的线段,作为水平线段;提取待处理图纸中与预设纵轴的夹角在第二预设范围内的线段,作为垂线段。
[0072] 具体地,上述装置还包括线段合并模块,用于:根据预设的坐标排序规则,对垂线段和所述水平线段进行排序,得到线段排序序列;合并线段排序序列中互相包含的垂线段和互相包含的所述水平线段。
[0073] 进一步地,上述交点确定模块31,用于:选取纵坐标值在垂线段的纵坐标值范围内的水平线段,以及横坐标值在水平线段的横坐标值范围内的垂线段;对选取的所述水平线段和垂线段进行相交,得到线段交点,以及线段交点之间的拓扑关系。
[0074] 进一步地,上述单元格提取模块32,用于:提取包含有四个线段交点的矩形,将该矩形确定为单元格。
[0075] 进一步地,上述表格确定模块33,用于:选取多个单元格中左上角的线段交点的纵坐标值相同的单元格,归类为同一行单元格;通过预设规则,提取每一个同一行单元格,以组合成表格。
[0076] 上述装置还包括搜索表确定构建模块,用于:从CAD的背景数据中加载待处理图纸,以及待处理图纸对应的文本数据;根据待处理图纸和待处理图纸对应的文本数据,构建文本搜索表。
[0077] 上述装置还包括文本确定模块,用于:遍历表格中的每个单元格,获取每个单元格的坐标范围;根据坐标范围,从文本搜索表中确定单元格对应的文本数据。
[0078] 本发明实施例所提供的表格提取装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
[0079] 本发明实施例还提供了一种电子设备,参见图4所示,该电子设备包括处理器101和存储器100,该存储器100存储有能够被处理器101执行的机器可执行指令,该处理器101执行机器可执行指令以实现上述表格提取方法。
[0080] 进一步地,图4所示的电子设备还包括总线102和通信
接口103,处理器101、
通信接口103和存储器100通过总线102连接。
[0081] 其中,存储器100可能包含高速
随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是ISA总线、
PCI总线或EISA总线等。所述总线可以分为
地址总线、
数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
[0082] 处理器101可能是一种集成
电路芯片,具有
信号的处理能
力。在实现过程中,上述方法的各步骤可以通过处理器101中的
硬件的集成
逻辑电路或者软件形式的指令完成。上述的处理器101可以是通用处理器,包括
中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是
数字信号处理器(Digital Signal Processor,简称DSP)、
专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程
门阵列(Field-Programmable Gate Array,简称FPGA)或者其他
可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑
框图。通用处理器可以是
微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及
软件模块组合执行完成。软件模块可以位于随机存储器,闪存、
只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器100,处理器101读取存储器100中的信息,结合其硬件完成前述实施例的方法的步骤。
[0083] 本发明实施例还提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,该机器可执行指令促使处理器实现上述表格提取方法,具体实现可参见方法实施例,在此不再赘述。
[0084] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和/或电子设备的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0085] 最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行
修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。