CN113505762B - 一种表格识别方法和装置、终端及存储介质 - Google Patents

一种表格识别方法和装置、终端及存储介质 Download PDF

Info

Publication number
CN113505762B
CN113505762B CN202111052581.XA CN202111052581A CN113505762B CN 113505762 B CN113505762 B CN 113505762B CN 202111052581 A CN202111052581 A CN 202111052581A CN 113505762 B CN113505762 B CN 113505762B
Authority
CN
China
Prior art keywords
position information
picture
row
column
information
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.)
Active
Application number
CN202111052581.XA
Other languages
English (en)
Other versions
CN113505762A (zh
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guanchuan Network Technology Nanjing Co ltd
Original Assignee
Guanchuan Network Technology Nanjing Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guanchuan Network Technology Nanjing Co ltd filed Critical Guanchuan Network Technology Nanjing Co ltd
Priority to CN202111052581.XA priority Critical patent/CN113505762B/zh
Publication of CN113505762A publication Critical patent/CN113505762A/zh
Application granted granted Critical
Publication of CN113505762B publication Critical patent/CN113505762B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Character Input (AREA)
  • Image Analysis (AREA)

Abstract

本发明实施例提供一种表格识别方法和装置、终端及存储介质,该方法包括:获取待识别的文件,该文件包括至少一个表格;利用表格位置检测模型,检测该文件中至少一个表格的位置信息,该表格位置检测模型是深度学习模型;根据该位置信息处理所述文件,得到每一表格对应的、只包含表格的表格图片;对每一该表格图片进行如下处理:预处理操作;根据表格行划分模型和表格列划分模型处理处理后的表格图片,获取该表格的行位置信息和列位置信息,表格行划分模型和表格列划分模型均是深度学习模型;从而还原出表格的结构信息;结合识别出的表格的文字信息,输出结构化的表格数据。通过上述方式,本发明能够提升表格识别效率和灵活性。

Description

一种表格识别方法和装置、终端及存储介质
技术领域
本发明实施例涉及表格识别技术领域,尤其涉及一种表格识别方法和装置、终端及存储介质。
背景技术
现在文本识别技术的应用越来越广泛,越来越成熟,同时将识别结果转换成为结构化数据也越来越重要。
然而,目前业界常用的结构化算法是预先建立好模板,采用模板匹配技术,将识别结果(如:文本位置和文本内容)转换为结构化信息。但是,使用模板匹配的前提条件是文本内容的排版必须是固定的。如果文本内容的排版有变化,就需要重新建立新的模板。然而,文本中往往包括大量的表格,表格的排版方式往往多样化,如果利用模板匹配技术来将待识别的表格转换为结构化的数据,需要建立大量的模板,导致表格识别效率低,且不利于后期的维护和扩展。
因而,如何提高识别表格的效率,使得识别表格得到表格的结构化数据更为灵活,是目前亟待解决的技术问题。
发明内容
本发明实施例提供一种表格识别方法和装置、终端及存储介质,以解决表格识别效率低,且识别方式不灵活的问题。
为了解决上述技术问题,本发明是这样实现的:
第一方面,本发明实施例提供了一种表格识别方法,包括:
获取待识别的文件,所述文件为图片格式的PDF或图片,且包括至少一个表格;
利用表格位置检测模型,检测所述文件中所述至少一个表格的位置信息,所述表格位置检测模型是深度学习模型;
根据所述位置信息处理所述文件,得到每一所述表格对应的表格图片,所述表格图片中只包含表格;
对每一所述表格图片进行如下处理:
预处理所述表格图片,所述预处理操作包括:对所述表格图片先进行二值化处理,然后进行膨胀处理,得到处理后的表格图片;
根据表格行划分模型和表格列划分模型处理所述处理后的表格图片,获取所述表格的行位置信息和所述表格的列位置信息,其中,所述表格行划分模型和所述表格列划分模型均是深度学习模型;
根据所述行位置信息和所述列位置信息,得到所述表格的结构信息;
根据所述表格的结构信息,对所述表格进行文字识别,获取所述表格对应的文字信息;
根据所述表格的结构信息和所述表格的文字信息,输出结构化的表格数据。
第二方面,本发明实施例提供了一种表格识别装置,包括:
获取模块,用于获取待识别的文件,所述文件为图片格式的PDF或图片,且包括至少一个表格;
检测模块,用于利用表格位置检测模型,检测所述文件中所述至少一个表格的位置信息,所述表格位置检测模型是深度学习模型;
处理模块,用于根据所述位置信息处理所述文件,得到每一所述表格对应的表格图片,所述表格图片中只包含表格;对每一所述表格图片进行如下处理:预处理所述表格图片,所述预处理操作包括:对所述表格图片先进行二值化处理,然后进行膨胀处理,得到处理后的表格图片;根据表格行划分模型和表格列划分模型处理所述处理后的表格图片,获取所述表格的行位置信息和所述表格的列位置信息,其中,所述表格行划分模型和所述表格列划分模型均是深度学习模型;根据所述行位置信息和所述列位置信息,得到所述表格的结构信息;根据所述表格的结构信息,对所述表格进行文字识别,获取所述表格对应的文字信息;根据所述表格的结构信息和所述表格的文字信息,输出结构化的表格数据。
第三方面,本发明实施例提供了一种终端,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如第一方面所述的表格识别方法的步骤。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的表格识别方法的步骤。
在本发明实施例中,获取待识别的文件;利用表格位置检测模型,检测所述文件中所述至少一个表格的位置信息,所述表格位置检测模型是深度学习模型;根据所述位置信息处理所述文件,得到每一所述表格对应的表格图片,所述表格图片中只包含表格;对每一所述表格图片进行如下处理:预处理所述表格图片,所述预处理操作包括:对所述表格图片先进行二值化处理,然后进行膨胀处理,得到处理后的表格图片;根据表格行划分模型和表格列划分模型处理所述处理后的表格图片,获取所述表格的行位置信息和所述表格的列位置信息,其中,所述表格行划分模型和所述表格列划分模型均是深度学习模型;根据所述行位置信息和所述列位置信息,得到所述表格的结构信息;根据所述表格的结构信息,对所述表格进行文字识别,获取所述表格对应的文字信息;根据所述表格的结构信息和所述表格的文字信息,输出结构化的表格数据,能够实现表格识别更为灵活,表格识别效率得到提升的技术效果。
附图说明
图1是本申请实施例一的表格识别方法的流程示意图;
图2是采用表格标记模型对常规表格进行标记的示意图;
图3是缺少表格线的表格的示意图;
图4-5是采用表格标记模型对缺少表格线的表格进行标记的示意图;
图6-7是采用表格标记模型对含有空白单元格的表格进行标记的示意图;
图8是采用表格标记模型对含有跨行的单元格的表格进行标记的示意图;
图9-10是用户对复杂的第一表格进行手工标记的示意图;
图11是本申请实施例二的表格识别装置的结构示意图;
图12是本申请实施例三的终端的结构示意图;
图13是实现本发明各个实施例的一种终端的硬件结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
表格识别,就是将图片格式的表格转换为结构化的表格数据,待识别的含有表格的图片,经过识别后,得到结构化的表格数据。其中,图片格式的表格可以是图片形式的PDF(即扫描式的PDF,其中文字不能进行复制)中的表格,也可以是一张含有表格的图片。可以将含有表格的文件,通过光学字符识别OCR (Optical Character Recognition,简称OCR)进行识别,并利用结构化算法将识别的结果转换为表格类型数据。
然而,对表格识别存在多个难点,例如:
1)表格中的单元格可以跨行和跨列,数据排版形式复杂多变;
2)待识别的文件中的表格可能是旋转、倾斜的,摆放的角度多变;
3)很多表格没有表格线,无法通过线来划分表格单元格。
因此,我们需要一种比较鲁棒的结构化算法来处理这些类型的表格,传统的表格结构化算法(如:仅利用检测表格线来划分表格)并不适用于上述类型的表格。
参阅图1,图1是本申请实施例一的表格识别方法的流程示意图,该方法包括:
步骤S201:获取待识别的文件,所述文件为图片格式的PDF或图片,且包括至少一个表格;
其中,PDF往往会有两种主要形式,一种是PDF中原来就是文字,可以直接对文字进行复制,另外一种则是图片格式的PDF,比如说扫描式的PDF,其中文字不能进行复制。本申请中的表格识别是针对图片格式的PDF或图片进行表格识别。
步骤S202:利用表格位置检测模型,检测所述文件中所述至少一个表格的位置信息,所述表格位置检测模型是深度学习模型;
具体的,将待识别的图片输入该表格位置检测模型,会输出图片中每一个表格在该图片中的位置信息(x,y,w,h)。将待识别的图片格式的PDF输入该表格位置检测模型,会将该PDF拆分为至少一张图片,每一页PDF对应一张图片,然后,输出每一张图片中每一个表格在该张图片中的位置信息(x,y,w,h)。(x,y)可以是表格的任一个顶点(如:表格左上角的顶点、左下角的顶点、右上角的顶点或右下角的顶点)的坐标,也可以是表格的中心点的坐标。w表示表格的宽,h表示表格的高。其中,所输出的表格在该张图片中的位置信息(x,y,w,h)中,(x,y)优选为表格的左上角的顶点的坐标。当然,也可以输出每一张图片中每一个表格的四个顶点在该张图片中的坐标信息,作为该表格在该张图片中的位置信息。
步骤S203:根据所述位置信息处理所述文件,得到每一所述表格对应的表格图片,所述表格图片中只包含表格;对每一所述表格图片进行如下处理:预处理所述表格图片,所述预处理操作包括:对所述表格图片先进行二值化处理,然后进行膨胀处理,得到处理后的表格图片;根据表格行划分模型和表格列划分模型处理所述处理后的表格图片,获取所述表格的行位置信息和所述表格的列位置信息,其中,所述表格行划分模型和所述表格列划分模型均是深度学习模型;根据所述行位置信息和所述列位置信息,得到所述表格的结构信息;根据所述表格的结构信息,对所述表格进行文字识别,获取所述表格对应的文字信息;根据所述表格的结构信息和所述表格的文字信息,输出结构化的表格数据。
具体的,针对每一表格,可以根据该表格所在图片的位置信息(x,y,w,h)裁剪图片,得到与该表格对应的、只包含该表格的表格图片。可以采用一预设裁剪模型对图片中的表格进行裁剪。可以通过对一训练集中大量图片和这些图片中已知的表格位置信息,训练得到该预设裁剪模型。预设裁剪模型优选为深度学习模型,例如OpenCV模型,等等。
对表格图片的膨胀处理操作可以根据实际需求设置核的大小,设置核的大小不同,也就是所需膨胀的程度不同。例如:对表格图片的膨胀处理操作可以为核为(3,1)和(1,3)的膨胀处理。
优选的,为了利于后续表格行划分模型对行进行划分处理,将表格图片按照水平方向进行膨胀,如:对表格图片进行核为(3,1)的膨胀处理,3表示在x轴方向上进行膨胀,1表示y轴方向不膨胀,从而能让一行的文字连在一起,从而将在水平方向上膨胀处理后的表格图片输入表格行划分模型,获取表格的行位置信息。
同样的,为了利于后续表格列划分模型对列进行划分处理,将表格图片按照垂直方向进行膨胀,如:对表格图片进行核为(1,3)的膨胀处理,从而将在垂直方向上膨胀处理后的表格图片输入表格列划分模型,获取表格的列位置信息。通过深度学习算法可以高效识别图片中的表格,可以使用深度学习算法预先训练好两个模型:表格行划分模型和表格列划分模型。将预处理后的表格图片分别输入表格行划分模型和表格列划分模型,能够直接输出该表格的行位置信息和该表格的列位置信息,进而能够快速还原出该表格的结构信息。
其中,输出的结构化的表格数据可以为结构化的excel或HTML表格类型的数据。
本发明实施例的表格识别方法,由于使用深度学习算法预先训练好多个模型:表格位置检测模型、表格行划分模型和表格列划分模型,使用这些模型识别待识别的文件中的表格,不仅能够快速定位出该表格在该文件中的具体位置,快速还原出该表格的结构信息,识别效率高,而且能够识别各种类型的表格,识别方式也更为灵活。
在本发明的一些优选实施例中,所述利用表格位置检测模型,检测所述文件中所述至少一个表格的位置信息之前,还包括:
获取所述文件中的文字轮廓信息,判断所述文字轮廓是否倾斜;
若判定所述文字轮廓倾斜,利用所述文字轮廓的倾斜程度,得到所述文件的旋转角度;
根据所述旋转角度对所述文件进行旋转纠正。
具体而言,待识别的文件可以是用户拍摄或扫描后上传的,很有可能是倾斜的。而对倾斜的图像进行识别会影响识别的准确性。因此,有必要先对该文件进行倾斜判断,在判定该文件上的内容是倾斜的情况下,及时进行旋转纠正。若一PDF或图片中包含文字时,其中每一行文字都构成一条直线,且这些直线平行。因此,可以采用霍夫直线变换探测出该文件中每一行文字轮廓构成的直线;基于直线之间的角度,来计算该文件的倾斜角度,进而得到该文件的旋转角度,从而根据旋转角度进行旋转纠正操作。优选的,可以计算出每条直线的倾斜角度,求它们的平均值,作为该文件的倾斜角度。
可选的,在本发明的另一些优选实施例中,所述表格位置检测模型采用如下方式训练得到:
获取训练集中每一第一图片中第一表格的位置信息,其中,所述训练集包括至少一张所述第一图片,且所述第一图片包括至少一个表格;所述第一图片中第一表格的位置信息是预先得到的;
根据所述第一表格的位置信息,使用YOLOv4模型训练得到所述表格位置检测模型。
具体而言,随着深度学习技术的不断发展,基于卷积神经网络的目标检测算法应用也越来越广泛,其中具有代表性的就是YOLO模型。其中,YOLOv4模型是一种实时、高精度的目标检测模型,可以使用传统的 GPU 进行训练和测试,并能够获得实时的,高精度的检测结果,处理同样的数据时,使用YOLOv4模型进行检测的速度和精度都较使用YOLOv3模型有明显的提高。因此,本申请采用YOLOv4模型来训练表格位置检测模型。
可以预先准备一训练集,该训练集中包括大量第一图片,且每张第一图片中都包含表格,且表格在该第一图片中的位置信息已知。进而,可以根据包含第一表格的第一图片和已知的该第一表格在该第一图片中的位置信息,使用YOLOv4模型来训练得到所述表格位置检测模型。训练完成后,将任一张含有表格的图片输入到该表格位置检测模型,就可以快速定位该表格在该图片中的位置,更为方便便捷。
优选的,所述利用表格位置检测模型,检测所述文件中所述至少一个表格的位置信息包括:
若所述文件为所述图片格式的PDF,将所述图片格式的PDF拆分为至少一张图片,每一张图片对应所述图片格式的PDF中的一页;
判断拆分得到的图片是否包含表格;
将包含表格的图片输入所述表格位置检测模型,检测得到该表格的位置信息。
也就是说,若待识别的文件是图片格式的PDF,先将其拆分成一张张图片,将其中包含表格的图片输入表格位置检测模型,就可以直接输出表格在该图片中的位置信息,计算速度快。
在本发明的一些优选实施例中,所述根据表格行划分模型和表格列划分模型处理所述处理后的表格图片,获取所述表格的行位置信息和所述表格的列位置信息之前,还包括:
获取训练集中每一第一图片中的第一表格的位置信息、所述第一表格的行位置信息和所述第一表格的列位置信息,其中,所述训练集包括至少一张第一图片,且所述第一图片包括至少一个表格;所述第一图片中第一表格的位置信息是预先得到的;所述第一表格的行位置信息和所述第一表格的列位置信息均采用表格标记模型对所述第一表格进行标记得到;
根据所述第一表格的位置信息处理所述第一图片,得到每一所述第一表格对应的第一表格图片,所述第一表格图片只包含表格;
预处理所述第一表格图片;
根据预处理后的所述第一表格图片、所述第一表格的行位置信息和所述第一表格的列位置信息,使用UNet模型训练得到所述表格行划分模型和所述表格列划分模型。
具体而言,随着深度学习研究热潮的兴起,UNet算法也在图像分割领域应用越来越广泛。其中,UNet模型建立在全卷积网络上,让计算机根据图像的语义来进行图像分割。整个UNet网络分为两个部分,左边部分负责特征提取,随着网络层加深,网络的channel逐渐变大,图片逐渐变小。右边的网络负责特征的还原,整个网络实际上就是一个编码-解码器,网络的形状类似于字母U,因此称为“UNet”。UNet模型能够同时结合高分辨率的局部信息和低分辨率的大面积信息,分割准确性和精度高。因此,本申请采用UNet模型来训练表格行划分模型和表格列划分模型。
可以预先准备一训练集,该训练集中包括大量第一图片,且每张第一图片中都包含表格,且表格在该第一图片中的位置信息已知。进而,可以对第一图片进行裁剪,得到只包含表格的第一表格图片。
其中,对第一表格图片的预处理操作包括:对第一表格图片先进行二值化处理,然后进行膨胀处理,得到预处理后的所述第一表格图片。其中,可以对用于训练表格行划分模型的第一表格图片做核为(3,1)的膨胀处理操作,可以对用于训练表格列划分模型的第一表格图片做核为(1,3)的膨胀处理操作。当然,对表格图片的膨胀处理操作也可以根据实际需求设置核的大小,更为灵活。
可以采用表格标记模型对第一表格进行标记得到第一表格的行位置信息和列位置信息。因此,可以根据预处理后的第一表格图片、标记得到的该第一表格的行位置信息和列位置信息,使用UNet模型来训练得到表格行划分模型和表格列划分模型。训练完成后,将任一张裁剪好的只含表格的表格图片分别输入到该表格行划分模型和该表格列划分模型,就可以快速输出该表格的行位置信息和该表格的列位置信息,计算效率高,更为方便便捷。
可选的,第一图片中表格的位置信息也可以是未知的,可以采用第一预设标记软件对第一图片中的第一表格进行手工标记,例如用户可以使用该第一预设标记软件,用恰好能框住该第一表格的矩形框框住该第一表格,该第一预设标记软件即可输出该矩形框的位置信息,即为该第一表格的位置信息。
可选的,第一表格的行位置信息和列位置信息也可以是未知的,可以采用第二预设标记软件对第一图片中的第一表格进行手工标记,例如用户可以使用该第二预设标记软件,用至少一个恰好能框住该第一表格的一行的矩形框框住该第一表格的每一行(即第一表格中同一行的内容用一个矩形框进行标记),用至少一个恰好能框住该第一表格的一列的矩形框框住该第一表格的每一列(即第一表格中同一列的内容也用一个矩形框进行标记),该第二预设标记软件即可输出这些框住第一表格的每一行的至少一个矩形框的位置信息(即该第一表格的行位置信息)以及框住第一表格的每一列的至少一个矩形框的位置信息(即该第一表格的列位置信息)。
通过用户使用软件手动对表格进行标记,更为方便灵活,满足用户的不同需要。
在本发明的一些优选实施例中,采用表格标记模型得到所述第一表格的行位置信息和所述第一表格的列位置信息包括:
采用所述表格标记模型,获取所述第一表格所属的类型,所述类型包括:常规表格、缺少表格线的表格、含有空白单元格的表格、含有跨行和/或跨列的单元格的表格;其中,所述常规表格为不缺少表格线,且不含空白单元格,且不含跨行和/或跨列的单元格,且表格的水平线和垂直线划分清晰的表格;
根据所述第一表格所属的类型,采用对应的矩形框标记表格;
根据所述矩形框的位置信息,获取所述第一表格的行位置信息和所述第一表格的列位置信息。
具体的,可以将预处理后的第一表格图片输入第三预设标记软件,采用表格标记模型自动对第一表格进行矩形框标记,该第一预设标记软件能够输出自动标记的矩形框的位置信息,即该第一表格的行位置信息和所述第一表格的列位置信息。
可选的,第一预设标记软件、第二预设标记软件和第三预设标记软件相同或不同。
优选的,所述类型为所述常规表格时,所述根据所述第一表格所属的类型,采用对应的矩形框标记表格包括:根据所述第一表格的水平线和所述垂直线标记所述表格的矩形框,以使所述第一表格的相邻两根水平线内的文字信息均位于同一矩形框内,且所述第一表格的相邻两根垂直线内的文字信息也均位于同一矩形框内;
所述类型为其他类型的表格时,所述根据第一表格所属的类型,采用对应的矩形框标记所述表格包括:
根据所述第一表格对应的文字信息,获取每一连续文字的坐标信息;
根据所述每一连续文字的坐标信息,标记所述表格的矩形框,以使横坐标相同的连续文字位于同一列,纵坐标相同的连续文字位于同一行;
其中,所述类型为含有空白单元格的表格时,标记的所述第一表格的矩形框不包括所述空白单元格;所述类型为含有跨行和/或跨列的单元格的表格时,跨相同行的单元格均位于同一矩形框内,跨相同列的单元格也均位于同一矩形框内。
具体的,表格可以划分为多种类型,例如:常规表格、缺少表格线的表格、含有空白单元格的表格、含有跨行和/或跨列的单元格的表格。
其中,常规表格即为最简单的表格,表格线划分清晰,且不含空白单元格,也不含有跨行和/或跨列的单元格。缺少表格线的表格指部分或全部表格线缺失的表格。含有空白单元格的表格指表格的内容包含空白单元格,空白单元格可以位于表格的任何位置。含有跨行和/或跨列的单元格的表格是复杂类型的表格,即表格中有的单元格横跨表格的多行,且/或有的单元格横跨表格的多列。
下面,结合不同的表格类型,具体分析表格标记模型如何对表格进行标记。
(一)常规表格
如图2所示,图2是采用表格标记模型对常规表格进行标记的示意图。由于第一表格是常规表格类型,其表格线清晰,可以根据清晰的表格线来标记出第一表格的矩形框,使得第一表格的相邻两根水平线内的文字信息均位于同一矩形框内(即都在同一行内),且所述第一表格的相邻两根垂直线内的文字信息也均位于同一矩形框内(即都在同一列内)。
(二)缺少表格线的表格、含有空白单元格的表格、含有跨行和/或跨列的单元格的表格
如图3-5所示,图3是缺少表格线的表格的示意图,图4-5是采用表格标记模型对缺少表格线的表格进行标记的示意图;如图6-7所示,图6-7是采用表格标记模型对含有空白单元格的表格进行标记的示意图;如图8所示,图8是采用表格标记模型对含有跨行的单元格的表格进行标记的示意图。
采用表格标记模型对缺少表格线的表格、含有空白单元格的表格、或含有跨行和/或跨列的单元格的表格进行标记时,获取第一表格中的文字信息,将横坐标相同的连续文字用至少一个矩形框标记(即划分为同一列的连续文字用至少一个矩形框框住),将纵坐标相同的连续文字用至少一个矩形框标记(即划分为同一行的连续文字用至少一个矩形框框住)。
如图4-5所示,虽然第一表格中缺少部分表格线,通过将相同横坐标的文字用一个矩形框601框住,将相同纵坐标的文字用一个矩形框501框住,可以快速完成缺少表格线的表格的标注工作。
如图6-7所示,当第一表格是含有空白单元格的表格,采用表格标记模型对其进行标记时,还要使得标记的矩形框不含空白单元格。进一步的,如果空白单元格位于第一表格的中间位置,可以将其分为多行或多列进行标记,如图6所示,第一表格中空白单元格701所在位置在多行的中间,则采用两个矩形框702、703分别框住不同行。
而当第一表格是含有跨行和/或跨列的单元格的表格时,采用表格标记模型对其进行标记时,还要使得跨相同行的单元格均位于同一矩形框内,跨相同列的单元格也均位于同一矩形框内。
如图8所示,单元格901和单元格902都为跨行单元格,且跨了相同行,则将单元格901和单元格902框在一个矩形框903中。当第一表格含有跨列单元格时,与图8的处理方式类似,在此不加赘述。
此外,由于表格类型众多,用户可以根据实际需求在表格标记模型中及时添加新的类型,也可以在训练表格标记模型时自动将表格的新类型进行归类添加,利于后续进一步提升处理效率。若将表格输入表格标记模型中,无法将该表格归类为其当前能相应处理的类型,可以输出提示用户进行手工处理,即对于难以归类为表格标记模型中相应类型的表格,还可以提供手工标记功能,利于用户根据实际需求及时对图片中的表格进行标记。
参阅图9-10,是用户对对于复杂的第一表格进行手工标记。例如第一表格的部分表格线缺失,还包括跨行单元格和跨列单元格,难以归类到上述任一类型。当将该复杂的第一表格输入表格标记模型时,会提示用户进行手工标记,具体标记方式可以是通过该第一表格的水平线来判断表格单元格的内容是否属于同一行,第一表格的水平线对齐(起始位置和结束位置都相同)才算同一行,对于属于同一行的表格用一个矩形框标记,如图9所示;可以通过第一表格的垂直线来判断表格单元格的内容是否属于同一列,表格列的垂直线对齐(起始位置和结束位置都相同)才算同一列,同一列的单元格用一个矩形框标记,如图10所示。
优选的,所述根据预处理后的所述第一表格图片、所述第一表格的行位置信息和所述第一表格的列位置信息,使用UNet模型训练得到所述表格行划分模型和所述表格列划分模型包括:
根据所述第一表格的行位置信息,对所述第一表格中行内的像素值与所述第一表格中行外的像素值进行设置,得到第一表格的行掩膜图片;其中,设置的所述第一表格中行内的像素值与所述第一表格中行外的像素值不同;
根据所述第一表格的列位置信息,对所述第一表格中列内的像素值与所述第一表格中列外的像素值进行设置,得到第一表格的列掩膜图片;其中,设置的所述第一表格中列内的像素值与所述第一表格中列外的像素值不同;
根据所述第一表格的行掩膜图片和所述第一表格的列掩膜图片,训练得到所述表格行划分模型和所述表格列划分模型。
其中,可以根据实际需求具体设置行内/外、列内/外的像素值。例如:可以将第一表格中行内的像素值设置为1,将所述第一表格中行外的像素值进行设置为0,得到第一表格的行掩膜图片。可以将第一表格中列内的像素值设置为1,将所述第一表格中列外的像素值进行设置为0,得到第一表格的列掩膜图片。当然,也可以将第一表格中行内的像素值设置为0,将所述第一表格中行外的像素值进行设置为1,得到第一表格的行掩膜图片。可以将第一表格中列内的像素值设置为0,将所述第一表格中列外的像素值进行设置为1,得到第一表格的列掩膜图片。
在本发明的一些优选实施例中,所述根据表格行划分模型和表格列划分模型处理所述处理后的表格图片,获取所述表格的行位置信息和所述表格的列位置信息包括:
将所述处理后的表格图片输入所述表格行划分模型,得到所述表格的行掩膜图片;将所述处理后的表格图片输入所述表格列划分模型,得到所述表格的列掩膜图片;
从所述表格的行掩膜图片获取所述表格的第一行位置信息,从所述表格的列掩膜图片获取所述表格的第一列位置信息,以采用OpenCV获取所述行掩膜图片中所述表格的至少一个覆盖矩形框,所述覆盖矩形框为能够覆盖所述表格的一行或一列、且面积最小的矩形框;
根据获取的所述覆盖矩形框,获取所述表格的行位置信息和所述表格的列位置信息。
其中,所述表格的结构信息包括:所述表格的行数、跨行的单元格的跨行信息、所述表格的列数和跨列的单元格的跨列信息;所述根据所述行位置信息和所述列位置信息,得到所述表格的结构信息包括:
根据所述表格的行位置信息,计算所述表格的行数和所述跨行的单元格的跨行信息;根据所述表格的列位置信息,计算所述表格的列数和所述跨列的单元格的跨列信息。
具体而言,所述跨行的单元格的跨行信息包括跨行的单元格跨了几行,所述跨列的单元格的跨列信息包括跨列的单元格跨了几列。根据表格行划分模型输出的表格的行位置信息、表格列划分模型输出的表格的列位置信息、计算得到的表格的的行数、跨行的单元格的跨行信息、表格的列数和跨列的单元格的跨列信息,能够得到表格的完整结构信息,进而还原出表格。
优选的,所述表格的行位置信息包括所述行的纵坐标,所述根据所述表格的行位置信息,计算所述表格的行数和所述跨行的单元格的跨行信息包括:
获取所述表格的每一行对应的纵坐标,按所述纵坐标进行排序;
若有至少两行的纵坐标存在交集,计算所述至少两行的纵坐标中范围较大的行所跨行数;
在存在交集的纵坐标所对应的行中,保留纵坐标范围最小的行,以使剩下的每一行的纵坐标与其它行没有交集;
统计剩下的行的行数,作为所述表格的行数,并保存每一剩下的行对应的纵坐标。
具体而言,表格的某一行的纵坐标可以是该行在y轴的坐标范围。如果两个单元格(一行表示一个单元格,但可能存在跨行的单元格)间在y轴方向上存在交集,就表明y轴坐标范围较大的单元格存在跨行,计算跨行的单元格所跨行数。跨行的单元格的纵坐标的范围较不跨行的单元格的纵坐标的范围大,因此,在存在交集的纵坐标所对应的行中,只保留纵坐标范围最小的行,从而,使得剩下的每一行都不包含跨行的单元格,统计剩下的行数,就是该表格的行数。
优选的,所述根据所述表格的列位置信息,计算所述表格的列数和所述跨列的单元格的跨列信息包括:
获取所述表格的每一列对应的横坐标,按所述横坐标进行排序;
若有至少两列的横坐标存在交集,计算所述至少两列的横坐标中范围较大的列所跨列数;
在存在交集的横坐标所对应的列中,保留横坐标范围最小的列,以使剩下的每一列的横坐标与其它列没有交集;
统计剩下的列的列数,作为所述表格的列数,并保存每一剩下的列对应的横坐标。
具体而言,表格的某一列的横坐标可以是该列在x轴的坐标范围。如果两个单元格(一列表示一个单元格,但可能存在跨列的单元格)间在x轴方向上存在交集,就表明x轴坐标范围较大的单元格存在跨列,计算跨列的单元格所跨列数。跨列的单元格的横坐标的范围较不跨列的单元格的横坐标的范围大,因此,在存在交集的横坐标所对应的列中,只保留横坐标范围最小的列,从而,使得剩下的每一列都不包含跨列的单元格,统计剩下的列数,就是该表格的列数。
进一步的,所述根据所述行位置信息和所述列位置信息,得到所述表格的结构信息还包括:
遍历所述表格的每一行位置信息对应的行矩形框和每一列位置信息对应的列矩形框;
计算由行矩形框与列矩形框相交得到的相交矩形框的面积,所述相交矩形框的高度不小于行矩形框的高度乘以预设系数;
针对面积大于0的相交矩形框,获取相交矩形框的位置信息;
根据每一相交矩形框的位置信息,得到所述表格中每一单元格的位置信息。
其中,表格的一行位置信息对应的行矩形框为恰好能框住该表格的该行的矩形框,表格的一列位置信息对应的列矩形框为恰好能框住该表格的该列的矩形框。
预设系数可以根据实际需求设置,例如:90%,即某一行矩形框与列矩形框相交得到的相交矩形框的高度需要在该行矩形框高度的90%以上。
相交矩形框的位置信息可以为相交矩形框的坐标信息(x1,y1,x2,y2)。其中,(x1,y1)可以为该相交矩形框的左上角顶点的坐标,(x2,y2)可以为该相交矩形框的右下角顶点的坐标;(x1,y1)也可以为该相交矩形框的左下角顶点的坐标,(x2,y2)可以为该相交矩形框的右上角顶点的坐标。
也就是说,得到表格的行位置信息、列位置信息后,可以遍历每一行位置信息对应的行矩形框和每一列位置信息对应的列矩形框;进而,计算行矩形框和列矩形框之间的相交矩形框(即交集,也就是对应表格中的单元格)的面积,筛选出面积大于0的相交矩形框,得到这些相交矩形框的位置信息,进而得到这些相交矩形框对应的单元格的位置信息。
优选的,所述根据每一相交矩形框的位置信息,得到所述表格中每一单元格的位置信息包括:
根据每一相交矩形框的位置信息、所述表格的行数和所述表格的列数,计算所述相交矩形框对应的单元格的位置信息。
具体而言,可以根据前述计算得到的表格的行数和列数,以及相交矩形框的位置信息,计算相交矩形框所对应的单元格的行起始位置、行结束位置、列起始位置和列结束位置,进而可以还原出表格。
上述还原步骤可以采用如下代码实现:
class TabelConstructData(object):
def __init__(self,table_row_col_infos):
#获取表格的行位置信息
self._row_box_array = np.array(table_row_col_infos["row"])
#获取表格的列位置信息
self._col_box_array = np.array(table_row_col_infos["col"])
#获取表格的宽和高
self._table_xmin = min(self._row_box_array[:,0])
self._table_xmax = max(self._row_box_array[:,2])
self._table_ymin = min(self._row_box_array[:,1])
self._table_ymax = max(self._row_box_array[:,3])
self._table_width = self._table_xmax - self._table_xmin
self._table_height = self._table_ymax - self._table_ymin
def cal_inter_box(self,box1,box2):
"""计算两个矩形框的交集
:param box1:
:param box2:
:return:
"""
#获取矩形框的位置坐标(x1,y1,x2,y2)左上角顶点和右下角顶点坐标
box1_x1, box1_y1, box1_x2, box1_y2 = box1
box2_x1, box2_y1, box2_x2, box2_y2 = box2
#计算两个矩形框相交的矩形框
inter_box = [max(box1_x1, box2_x1), max(box1_y1, box2_y1),
min(box1_x2, box2_x2), min(box1_y2, box2_y2)]
#计算相交矩形框的面积
inter_area = (inter_box[2] - inter_box[0]) * (inter_box[3] -inter_box[1])
#将没有相交的矩形框的交集面积置为0
if inter_box[2] < inter_box[0]:
inter_area = 0
return inter_box,inter_area
def get_row_col_range(self):
"""获取表格行和列的位置范围
:return:
"""
row_position_range = []
for row_box in self._row_box_array:
x1,y1,x2,y2 = row_box
row_position_range.append((y1,y2))
col_position_range = []
for col_box in self._col_box_array:
x1,y2,x2,y2 = col_box
col_position_range.append((x1,x2))
return np.array(row_position_range),np.array(col_position_range)
def get_table_cell_info(self):
"""
:return:
"""
row_position_array, col_position_array = self.get_row_col_range()
cell_box_info = []
for row_box in self._row_box_array:
for col_box in self._col_box_array:
#计算出每个单元格的位置
inter_box, inter_area = self.cal_inter_box(row_box,col_box)
if inter_area > 0:
#计算单元格行和列下标的起始位置
row_start_index = np.max(np.argwhere(row_position_array[:,0] <= inter_box[1]))
row_end_index = np.max(np.argwhere(row_position_array[:,1] <= inter_box[3]))
col_start_index = np.max(np.argwhere(col_position_array[:,0] <= inter_box[0]))
col_end_index = np.max(np.argwhere(col_position_array[:,1] <= inter_box[2]))
if row_end_index <= row_start_index:
row_end_index = row_start_index
if col_end_index <= col_start_index:
col_end_index = col_start_index
#记录每个单元格起始行(列)结束行(列)的下标信息
cell_box_info.append({"index":(row_start_index,row_end_index,
col_start_index,col_end_index),
"box":inter_box,"text":""})
self._cell_box_info = cell_box_info
可选的,得到根据所述表格的结构信息之后,还包括:根据所述表格的结构信息,绘制所述表格的表格线。
上述表格的表格线的绘制步骤可以采用如下代码实现:
def draw_table_row_col(table_row_col_infos:dict):
"""根据表格行和列的位置信息来绘制
:param table_row_col_infos:
:return:
"""
img_path = table_row_col_infos["imagePath"]
if not os.path.exists(img_path):
raise("%s image is not exist"%img_path)
img = cv2.imread(img_path)
#获取表格行和列的位置信息
row_boxes = table_row_col_infos["row"]
col_boxes = table_row_col_infos["col"]
#绘制表格的行
for row_box in row_boxes:
x1,y1,x2,y2 = row_box
cv2.rectangle(img,(x1,y1),(x2,y2),(0,255,0))
#绘制表格的列
for col_box in col_boxes:
x1,y1,x2,y2 = col_box
cv2.rectangle(img,(x1,y1),(x2,y2),(51,204,255))
#保存绘制表格行和列的图片
cv2.imwrite("draw_talbe.jpg",img)
在本发明的另一些优选实施例中,所述表格的结构信息包括每一单元格的位置信息,所述根据所述表格的结构信息,对所述表格进行文字识别,获取所述表格对应的文字信息包括:
采用OCR技术,识别所述每一单元格的文字信息。
具体而言,所述表格的结构信息还包括每一单元格的位置信息,可以根据还原的表格结构,可以采用OCR技术进行文字识别,识别每一单元格所在位置对应的文字信息。
可选的,所述采用OCR技术,识别所述每一单元格的文字信息包括:
采用OCR技术识别所述表格的文字信息;
获取识别的每一文字信息的位置信息;
根据所述表格的单元格的位置信息和所述文字信息的位置信息,获取每一单元格的文字信息。
具体而言,可以采用OCR技术识别表格的文字信息,并获取识别的文字信息的位置信息,针对每一单元格,可以获取该单元格的位置信息,判断文字信息是否在该单元格内,若是,则将文字加入该单元格内,进而,获取到每一单元格的文字信息。
上述对采用OCR技术对表格中单元格进行识别步骤可以采用如下代码实现:
def ocr_res_table_construct(self,ocr_res):
"""根据OCR的识别结果来结构化表格
:param ocr_res:
:return:
"""
for res in ocr_res:
#获取OCR的识别文字
text = res["text"]
#获取OCR识别文字的位置
box = res["box"]
#遍历每个单元格的信息
for index,cell_info in enumerate(self._cell_box_info):
#获取单元格的位置信息
cell_box = cell_info["box"]
#判断文字是否在单元格内
_,inter_area = self.cal_inter_box(box,cell_box)
if inter_area > 0:
#如果文字在这个单元格内,就将结果添加到该单元格中
self._cell_box_info[index]["text"] += text
可选的,上述输出结构化的表格数据的步骤可以采用如下代码实现:
def read_json_data(json_path):
"""获取表格行和列的位置信息
:param json_path:json文件的位置
:return:表格的行和列的位置信息
"""
with open(json_path,"r") as rf:
json_info = json.load(rf)
shapes = json_info["shapes"]
#用来保存表格行和列的位置信息
table_row_col_infos = {"imagePath":"","row":[],"col":[]}
#保存图片的路径
table_row_col_infos["imagePath"] = json_info["imagePath"]
#遍历表格的位置信息
for label_info in shapes:
#获取表格的行和列的标签
label = label_info["label"]
points = np.array(label_info["points"],dtype=np.int32)
#获取矩形框左上角顶点和右下角点的坐标
x1,y1 = points[0]
x2,y2 = points[1]
#保存表格行和列的位置信息
table_row_col_infos[label].append((x1,y1,x2,y2))
return table_row_col_infos
#读取表格的行和列的位置信息
table_row_col_infos = read_json_data("1.json")
#初始化表格结构化模块
table_obj = TabelConstructData(table_row_col_infos)
#根据表格的行和列的位置信息,还原表格单元格的结构
cell_box_info = table_obj.get_table_cell_info()
#利用OCR的识别结果来还原表格的结构
with open("1_ocr.json","r") as rf:
ocr_res = json.load(rf)
#将还原的表格结构保存为xls表格文件
table_obj.ocr_res_table_construct(ocr_res)
基于本申请实施例一相同的发明构思,本发明还提供一种表格识别装置,请参阅图11,图11是本申请实施例二的表格识别装置的结构示意图。该表格识别装置1200包括:
获取模块1201,用于获取待识别的文件,所述文件为图片格式的PDF或图片,且包括至少一个表格;
检测模块1202,用于利用表格位置检测模型,检测所述文件中所述至少一个表格的位置信息,所述表格位置检测模型是深度学习模型;
处理模块1203,用于根据所述位置信息处理所述文件,得到每一所述表格对应的表格图片,所述表格图片中只包含表格;对每一所述表格图片进行如下处理:预处理所述表格图片,所述预处理操作包括:对所述表格图片先进行二值化处理,然后进行膨胀处理,得到处理后的表格图片;根据表格行划分模型和表格列划分模型处理所述处理后的表格图片,获取所述表格的行位置信息和所述表格的列位置信息,其中,所述表格行划分模型和所述表格列划分模型均是深度学习模型;根据所述行位置信息和所述列位置信息,得到所述表格的结构信息;根据所述表格的结构信息,对所述表格进行文字识别,获取所述表格对应的文字信息;根据所述表格的结构信息和所述表格的文字信息,输出结构化的表格数据。
本发明实施例的表格识别装置,由于使用深度学习算法预先训练好多个模型:表格位置检测模型、表格行划分模型和表格列划分模型,使用这些模型识别待识别的文件中的表格,不仅能够快速定位出该表格在该文件中的具体位置,快速还原出该表格的结构信息,识别效率高,而且能够识别各种类型的表格,识别方式也更为灵活。
本申请实施例提供的表格识别装置能够实现上述表格识别方法实施例实现的各个过程,为避免重复,这里不再赘述。
优选的,本发明实施例三还提供一种终端,请参阅图12,图12是本申请实施例三的终端的结构示意图,该终端1300包括处理器1301,存储器1302,存储在存储器1302上并可在所述处理器1301上运行的计算机程序,该计算机程序被处理器1301执行时实现上述表格识别方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,本申请实施例中的终端包括上述移动终端和非移动终端。
图13为实现本发明各个实施例的一种终端的硬件结构示意图。该终端100包括但不限于:射频单元101、网络模块102、音频输出单元103、输入单元104、传感器105、显示单元106、用户输入单元107、接口单元108、存储器109、处理器110、以及电源111等部件。本领域技术人员可以理解,图13中示出的终端结构并不构成对终端的限定,终端可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。在本发明实施例中,终端包括但不限于手机、平板电脑、笔记本电脑、掌上电脑、车载终端、可穿戴设备、以及计步器等。
其中,处理器110,用于获取待识别的文件,所述文件为图片格式的PDF或图片,且包括至少一个表格;利用表格位置检测模型,检测所述文件中所述至少一个表格的位置信息,所述表格位置检测模型是深度学习模型;根据所述位置信息处理所述文件,得到每一所述表格对应的表格图片,所述表格图片中只包含表格;对每一所述表格图片进行如下处理:预处理所述表格图片,所述预处理操作包括:对所述表格图片先进行二值化处理,然后进行膨胀处理,得到处理后的表格图片;根据表格行划分模型和表格列划分模型处理所述处理后的表格图片,获取所述表格的行位置信息和所述表格的列位置信息,其中,所述表格行划分模型和所述表格列划分模型均是深度学习模型;根据所述行位置信息和所述列位置信息,得到所述表格的结构信息;根据所述表格的结构信息,对所述表格进行文字识别,获取所述表格对应的文字信息;根据所述表格的结构信息和所述表格的文字信息,输出结构化的表格数据。
本发明实施例的终端,由于使用深度学习算法预先训练好多个模型:表格位置检测模型、表格行划分模型和表格列划分模型,使用这些模型识别待识别的文件中的表格,不仅能够快速定位出该表格在该文件中的具体位置,快速还原出该表格的结构信息,识别效率高,而且能够识别各种类型的表格,识别方式也更为灵活。
应理解的是,本发明实施例中,射频单元101可用于收发信息或通话过程中,信号的接收和发送,具体的,将来自基站的下行数据接收后,给处理器110处理;另外,将上行的数据发送给基站。通常,射频单元101包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器、双工器等。此外,射频单元101还可以通过无线通信系统与网络和其他设备通信。
终端通过网络模块102为用户提供了无线的宽带互联网访问,如帮助用户收发电子邮件、浏览网页和访问流式媒体等。
音频输出单元103可以将射频单元101或网络模块102接收的或者在存储器109中存储的音频数据转换成音频信号并且输出为声音。而且,音频输出单元103还可以提供与终端100执行的特定功能相关的音频输出(例如,呼叫信号接收声音、消息接收声音等等)。音频输出单元103包括扬声器、蜂鸣器以及受话器等。
输入单元104用于接收音频或视频信号。输入单元104可以包括图形处理器(Graphics Processing Unit,GPU)1041和麦克风1042,图形处理器1041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。处理后的图像帧可以显示在显示单元106上。经图形处理器1041处理后的图像帧可以存储在存储器109(或其它存储介质)中或者经由射频单元101或网络模块102进行发送。麦克风1042可以接收声音,并且能够将这样的声音处理为音频数据。处理后的音频数据可以在电话通话模式的情况下转换为可经由射频单元101发送到移动通信基站的格式输出。
终端100还包括至少一种传感器105,比如光传感器、运动传感器以及其他传感器。具体地,光传感器包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板1061的亮度,接近传感器可在终端100移动到耳边时,关闭显示面板1061和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别终端姿态(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;传感器105还可以包括指纹传感器、压力传感器、虹膜传感器、分子传感器、陀螺仪、气压计、湿度计、温度计、红外线传感器等,在此不再赘述。
显示单元106用于显示由用户输入的信息或提供给用户的信息。显示单元106可包括显示面板1061,可以采用液晶显示器(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode, OLED)等形式来配置显示面板1061。
用户输入单元107可用于接收输入的数字或字符信息,以及产生与终端的用户设置以及功能控制有关的键信号输入。具体地,用户输入单元107包括触控面板1071以及其他输入设备1072。触控面板1071,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板1071上或在触控面板1071附近的操作)。触控面板1071可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器110,接收处理器110发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板1071。除了触控面板1071,用户输入单元107还可以包括其他输入设备1072。具体地,其他输入设备1072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
进一步的,触控面板1071可覆盖在显示面板1061上,当触控面板1071检测到在其上或附近的触摸操作后,传送给处理器110以确定触摸事件的类型,随后处理器110根据触摸事件的类型在显示面板1061上提供相应的视觉输出。虽然在图13中,触控面板1071与显示面板1061是作为两个独立的部件来实现终端的输入和输出功能,但是在某些实施例中,可以将触控面板1071与显示面板1061集成而实现终端的输入和输出功能,具体此处不做限定。
接口单元108为外部装置与终端100连接的接口。例如,外部装置可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别模块的装置的端口、音频输入/输出(I/O)端口、视频I/O端口、耳机端口等等。接口单元108可以用于接收来自外部装置的输入(例如,数据信息、电力等等)并且将接收到的输入传输到终端100内的一个或多个元件或者可以用于在终端100和外部装置之间传输数据。
存储器109可用于存储软件程序以及各种数据。存储器109可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器109可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器110是终端的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器109内的软件程序和/或模块,以及调用存储在存储器109内的数据,执行终端的各种功能和处理数据,从而对终端进行整体监控。处理器110可包括一个或多个处理单元;优选的,处理器110可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器110中。
终端100还可以包括给各个部件供电的电源111(比如电池),优选的,电源111可以通过电源管理系统与处理器110逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
另外,终端100包括一些未示出的功能模块,在此不再赘述。
本发明实施例四还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述表格识别方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。

Claims (9)

1.一种表格识别方法,其特征在于,包括:
获取待识别的文件,所述文件为图片格式的PDF或图片,且包括至少一个表格;
利用表格位置检测模型,检测所述文件中所述至少一个表格的位置信息,所述表格位置检测模型是深度学习模型,且所述表格位置检测模型采用YOLOv4模型训练得到;
根据所述位置信息处理所述文件,得到每一所述表格对应的表格图片,所述表格图片中只包含表格;
对每一所述表格图片进行如下处理:
预处理所述表格图片,所述预处理操作包括:对所述表格图片先进行二值化处理,然后进行膨胀处理,得到处理后的表格图片;
根据表格行划分模型和表格列划分模型处理所述处理后的表格图片,获取所述表格的行位置信息和所述表格的列位置信息,其中,所述表格行划分模型和所述表格列划分模型均是深度学习模型;
根据所述行位置信息和所述列位置信息,得到所述表格的结构信息;
根据所述表格的结构信息,对所述表格进行文字识别,获取所述表格对应的文字信息;
根据所述表格的结构信息和所述表格的文字信息,输出结构化的表格数据;
其中,所述根据表格行划分模型和表格列划分模型处理所述处理后的表格图片,获取所述表格的行位置信息和所述表格的列位置信息之前,还包括:
获取训练集中每一第一图片中的第一表格的位置信息、所述第一表格的行位置信息和所述第一表格的列位置信息,其中,所述训练集包括至少一张第一图片,且所述第一图片包括至少一个表格;所述第一图片中第一表格的位置信息是预先得到的;所述第一表格的行位置信息和所述第一表格的列位置信息均采用表格标记模型对所述第一表格进行标记得到;
根据所述第一表格的位置信息处理所述第一图片,得到每一所述第一表格对应的第一表格图片,所述第一表格图片只包含表格;
预处理所述第一表格图片;
根据预处理后的所述第一表格图片、所述第一表格的行位置信息和所述第一表格的列位置信息,使用UNet模型训练得到所述表格行划分模型和所述表格列划分模型;
采用表格标记模型得到所述第一表格的行位置信息和所述第一表格的列位置信息包括:
采用所述表格标记模型,获取所述第一表格所属的类型,所述类型包括:常规表格、缺少表格线的表格、含有空白单元格的表格、含有跨行和/或跨列的单元格的表格;其中,所述常规表格为不缺少表格线,且不含空白单元格,且不含跨行和/或跨列的单元格,且表格的水平线和垂直线划分清晰的表格;
根据所述第一表格所属的类型,采用对应的矩形框标记表格;
根据所述矩形框的位置信息,获取所述第一表格的行位置信息和所述第一表格的列位置信息;
其中,所述类型为所述常规表格时,所述根据所述第一表格所属的类型,采用对应的矩形框标记表格包括:根据所述第一表格的水平线和所述垂直线标记所述表格的矩形框,以使所述第一表格的相邻两根水平线内的文字信息均位于同一矩形框内,且所述第一表格的相邻两根垂直线内的文字信息也均位于同一矩形框内;
所述类型为所述缺少表格线的表格,或为所述含有空白单元格的表格,或为所述含有跨行和/或跨列的单元格的表格时,所述根据第一表格所属的类型,采用对应的矩形框标记所述表格包括:
根据所述第一表格对应的文字信息,获取每一连续文字的坐标信息;
根据所述每一连续文字的坐标信息,标记所述表格的矩形框,以使横坐标相同的连续文字位于同一列,纵坐标相同的连续文字位于同一行;
其中,所述类型为含有空白单元格的表格时,标记的所述第一表格的矩形框不包括所述空白单元格;所述类型为含有跨行和/或跨列的单元格的表格时,跨相同行的单元格均位于同一矩形框内,跨相同列的单元格也均位于同一矩形框内。
2.根据权利要求1所述的方法,其特征在于,所述表格位置检测模型采用如下方式训练得到:
获取训练集中每一第一图片中第一表格的位置信息,其中,所述训练集包括至少一张所述第一图片,且所述第一图片包括至少一个表格;所述第一图片中第一表格的位置信息是预先得到的;
根据所述第一表格的位置信息,使用YOLOv4模型训练得到所述表格位置检测模型。
3.根据权利要求1所述的方法,其特征在于,所述根据表格行划分模型和表格列划分模型处理所述处理后的表格图片,获取所述表格的行位置信息和所述表格的列位置信息包括:
将所述处理后的表格图片输入所述表格行划分模型,得到所述表格的行掩膜图片;将所述处理后的表格图片输入所述表格列划分模型,得到所述表格的列掩膜图片;
从所述表格的行掩膜图片获取所述表格的第一行位置信息,从所述表格的列掩膜图片获取所述表格的第一列位置信息,以采用OpenCV获取所述行掩膜图片中所述表格的至少一个覆盖矩形框,所述覆盖矩形框为能够覆盖所述表格的一行或一列,且面积最小的矩形框;
根据获取的所述覆盖矩形框,获取所述表格的行位置信息和所述表格的列位置信息。
4.根据权利要求3所述的方法,其特征在于,所述表格的结构信息包括:所述表格的行数、跨行的单元格的跨行信息、所述表格的列数和跨列的单元格的跨列信息;所述根据所述行位置信息和所述列位置信息,得到所述表格的结构信息包括:
根据所述表格的行位置信息,计算所述表格的行数和所述跨行的单元格的跨行信息;根据所述表格的列位置信息,计算所述表格的列数和所述跨列的单元格的跨列信息。
5.根据权利要求1所述的方法,其特征在于,所述利用表格位置检测模型,检测所述文件中所述至少一个表格的位置信息之前,还包括:
获取所述文件中的文字轮廓信息,判断所述文字轮廓是否倾斜;
若判定所述文字轮廓倾斜,利用所述文字轮廓的倾斜程度,得到所述文件的旋转角度;
根据所述旋转角度对所述文件进行旋转纠正。
6.根据权利要求1所述的方法,其特征在于,所述表格的结构信息包括每一单元格的位置信息,所述根据所述表格的结构信息,对所述表格进行文字识别,获取所述表格对应的文字信息包括:
采用OCR技术,识别所述每一单元格的文字信息。
7.一种表格识别装置,其特征在于,包括:
获取模块,用于获取待识别的文件,所述文件为图片格式的PDF或图片,且包括至少一个表格;
检测模块,用于利用表格位置检测模型,检测所述文件中所述至少一个表格的位置信息,所述表格位置检测模型是深度学习模型,且所述表格位置检测模型采用YOLOv4模型训练得到;
处理模块,用于根据所述位置信息处理所述文件,得到每一所述表格对应的表格图片,所述表格图片中只包含表格;对每一所述表格图片进行如下处理:预处理所述表格图片,所述预处理操作包括:对所述表格图片先进行二值化处理,然后进行膨胀处理,得到处理后的表格图片;根据表格行划分模型和表格列划分模型处理所述处理后的表格图片,获取所述表格的行位置信息和所述表格的列位置信息,其中,所述表格行划分模型和所述表格列划分模型均是深度学习模型;根据所述行位置信息和所述列位置信息,得到所述表格的结构信息;根据所述表格的结构信息,对所述表格进行文字识别,获取所述表格对应的文字信息;根据所述表格的结构信息和所述表格的文字信息,输出结构化的表格数据;
所述处理模块,还用于在根据表格行划分模型和表格列划分模型处理所述处理后的表格图片,获取所述表格的行位置信息和所述表格的列位置信息之前,还获取训练集中每一第一图片中的第一表格的位置信息、所述第一表格的行位置信息和所述第一表格的列位置信息,其中,所述训练集包括至少一张第一图片,且所述第一图片包括至少一个表格;所述第一图片中第一表格的位置信息是预先得到的;所述第一表格的行位置信息和所述第一表格的列位置信息均采用表格标记模型对所述第一表格进行标记得到;根据所述第一表格的位置信息处理所述第一图片,得到每一所述第一表格对应的第一表格图片,所述第一表格图片只包含表格;预处理所述第一表格图片;根据预处理后的所述第一表格图片、所述第一表格的行位置信息和所述第一表格的列位置信息,使用UNet模型训练得到所述表格行划分模型和所述表格列划分模型;采用所述表格标记模型,获取所述第一表格所属的类型,所述类型包括:常规表格、缺少表格线的表格、含有空白单元格的表格、含有跨行和/或跨列的单元格的表格;其中,所述常规表格为不缺少表格线,且不含空白单元格,且不含跨行和/或跨列的单元格,且表格的水平线和垂直线划分清晰的表格;根据所述第一表格所属的类型,采用对应的矩形框标记表格;根据所述矩形框的位置信息,获取所述第一表格的行位置信息和所述第一表格的列位置信息;其中,所述类型为所述常规表格时,根据所述第一表格的水平线和所述垂直线标记所述表格的矩形框,以使所述第一表格的相邻两根水平线内的文字信息均位于同一矩形框内,且所述第一表格的相邻两根垂直线内的文字信息也均位于同一矩形框内;所述类型为所述缺少表格线的表格,或为所述含有空白单元格的表格,或为所述含有跨行和/或跨列的单元格的表格时,根据所述第一表格对应的文字信息,获取每一连续文字的坐标信息;根据所述每一连续文字的坐标信息,标记所述表格的矩形框,以使横坐标相同的连续文字位于同一列,纵坐标相同的连续文字位于同一行;其中,所述类型为含有空白单元格的表格时,标记的所述第一表格的矩形框不包括所述空白单元格;所述类型为含有跨行和/或跨列的单元格的表格时,跨相同行的单元格均位于同一矩形框内,跨相同列的单元格也均位于同一矩形框内。
8.一种终端,其特征在于,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至6中任一项所述的表格识别方法的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述的表格识别方法的步骤。
CN202111052581.XA 2021-09-09 2021-09-09 一种表格识别方法和装置、终端及存储介质 Active CN113505762B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111052581.XA CN113505762B (zh) 2021-09-09 2021-09-09 一种表格识别方法和装置、终端及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111052581.XA CN113505762B (zh) 2021-09-09 2021-09-09 一种表格识别方法和装置、终端及存储介质

Publications (2)

Publication Number Publication Date
CN113505762A CN113505762A (zh) 2021-10-15
CN113505762B true CN113505762B (zh) 2021-11-30

Family

ID=78016877

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111052581.XA Active CN113505762B (zh) 2021-09-09 2021-09-09 一种表格识别方法和装置、终端及存储介质

Country Status (1)

Country Link
CN (1) CN113505762B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114359938B (zh) * 2022-01-07 2023-09-29 北京有竹居网络技术有限公司 一种表格识别方法及装置
CN114663897A (zh) * 2022-04-07 2022-06-24 贝壳找房网(北京)信息技术有限公司 表格提取方法与表格提取系统
CN114842489A (zh) * 2022-05-13 2022-08-02 北京百度网讯科技有限公司 表格解析方法及装置
CN116259064B (zh) * 2023-03-09 2024-05-17 北京百度网讯科技有限公司 表格结构识别方法、表格结构识别模型的训练方法及装置
CN116052193B (zh) * 2023-04-03 2023-06-30 杭州实在智能科技有限公司 Rpa界面动态表格的拾取和匹配方法及系统
CN116206321A (zh) * 2023-04-25 2023-06-02 荣耀终端有限公司 一种表格识别方法、电子设备、存储介质及程序产品

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110163198A (zh) * 2018-09-27 2019-08-23 腾讯科技(深圳)有限公司 一种表格识别重建方法、装置和存储介质
CN110390269A (zh) * 2019-06-26 2019-10-29 平安科技(深圳)有限公司 Pdf文档表格提取方法、装置、设备及计算机可读存储介质
CN111144300A (zh) * 2019-12-26 2020-05-12 杭州费尔斯通科技有限公司 一种基于图像识别的pdf表格结构识别方法
CN111783735A (zh) * 2020-07-22 2020-10-16 欧冶云商股份有限公司 一种基于人工智能的钢材单据解析系统
CN112183511A (zh) * 2020-12-01 2021-01-05 江西博微新技术有限公司 一种图像导出表格的方法、系统、存储介质及设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000251012A (ja) * 1999-03-01 2000-09-14 Hitachi Ltd 帳票処理方法およびシステム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110163198A (zh) * 2018-09-27 2019-08-23 腾讯科技(深圳)有限公司 一种表格识别重建方法、装置和存储介质
CN110390269A (zh) * 2019-06-26 2019-10-29 平安科技(深圳)有限公司 Pdf文档表格提取方法、装置、设备及计算机可读存储介质
CN111144300A (zh) * 2019-12-26 2020-05-12 杭州费尔斯通科技有限公司 一种基于图像识别的pdf表格结构识别方法
CN111783735A (zh) * 2020-07-22 2020-10-16 欧冶云商股份有限公司 一种基于人工智能的钢材单据解析系统
CN112183511A (zh) * 2020-12-01 2021-01-05 江西博微新技术有限公司 一种图像导出表格的方法、系统、存储介质及设备

Also Published As

Publication number Publication date
CN113505762A (zh) 2021-10-15

Similar Documents

Publication Publication Date Title
CN113505762B (zh) 一种表格识别方法和装置、终端及存储介质
CN110390269B (zh) Pdf文档表格提取方法、装置、设备及计算机可读存储介质
CN111586237B (zh) 一种图像显示方法及电子设备
CN109684980B (zh) 自动阅卷方法及装置
CN106156711B (zh) 文本行的定位方法及装置
CN106874906B (zh) 一种图片的二值化方法、装置及终端
CN111488104B (zh) 一种字形编辑方法及电子设备
CN112464931B (zh) 文本检测方法、模型训练方法及相关设备
CN112418214A (zh) 一种车辆识别码识别方法、装置、电子设备及存储介质
CN108960120B (zh) 一种指纹识别处理方法及电子设备
CN110544287A (zh) 一种配图处理方法及电子设备
CN114937270A (zh) 古籍文字处理方法、装置及计算机可读存储介质
KR20210034668A (ko) 문자 입력 방법 및 단말
CN114399813A (zh) 人脸遮挡检测方法、模型训练方法、装置及电子设备
CN108335259B (zh) 一种图像处理方法、图像处理设备及移动终端
CN111432122B (zh) 一种图像处理方法及电子设备
CN108038427B (zh) 一种文字识别方法及移动终端
CN111383298A (zh) 一种思维导图的转换方法及装置
WO2020124455A1 (zh) 一种优化字体的方法及相关设备
CN111147750B (zh) 对象显示方法、电子设备及介质
CN110440825B (zh) 一种距离显示方法及终端
CN109492451B (zh) 一种编码图像识别方法及移动终端
CN110969085B (zh) 脸部特征点定位方法及电子设备
CN111126388A (zh) 图像识别的方法及电子设备
CN110795016A (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