CN112307718A - 一种基于文本特征和语法规则的pdf全自动标引系统及方法 - Google Patents
一种基于文本特征和语法规则的pdf全自动标引系统及方法 Download PDFInfo
- Publication number
- CN112307718A CN112307718A CN202011339681.6A CN202011339681A CN112307718A CN 112307718 A CN112307718 A CN 112307718A CN 202011339681 A CN202011339681 A CN 202011339681A CN 112307718 A CN112307718 A CN 112307718A
- Authority
- CN
- China
- Prior art keywords
- paragraph
- picture
- matching
- character
- 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/103—Formatting, i.e. changing of presentation of documents
- G06F40/117—Tagging; Marking up; Designating a block; Setting of attributes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/84—Mapping; Conversion
- G06F16/86—Mapping to a database
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Document Processing Apparatus (AREA)
Abstract
本发明公开了一种基于文本特征和语法规则的PDF全自动标引系统及方法,系统配置解析层、事件分发层、功能实现层。该系统采用了事件驱动的方式,使用了观察者模式的架构,先通过解析PDF生成一个包含基础信息的XML中间文件,然后再使用文本特征以及语法特征分析等技术分析所有的PDF元素以完成全部自动标引过程;PDF全自动标引方法将整个工作流程分为了七个阶段,分别为元素提取阶段、块聚合阶段、行聚合阶段、图片标签识别阶段、标签匹配阶段、标引文件生成阶段和异常处理阶段,能够实现PDF文件的全自动解析、加标签、聚合并最终导出包含所有信息的结构化数据。本发明提高了系统的扩展性、PDF处理效率和内容利用深度,实现PDF的全自动标引。
Description
技术领域
本发明涉及自然语言处理技术领域,更具体的说是涉及一种基于文本特征和语法规则的PDF全自动标引系统及方法。
背景技术
目前,实现PDF标引的主流工具都是依托数字加工人员进行框选标记,程序通过识别人工框选的内容区域以及配置的标签来实现PDF到结构化数据的转化。这种方式主要存在两大问题:(1)过分依赖数字加工人员自身的素质。人工标记的方式实现的PDF标引能够满足从PDF到结构化数据的转化,但是段落的划分、标签的配置等环节都依赖数字加工人员对待标记内容的判断,因此,现有的标引技术会因为数字加工人员自身对PDF内容理解不同而呈现出层次不齐的输出结果。(2)标引的效率过慢。人工标引大多数都是依靠数字加工人员按段或者按行进行元素的属性标记,然后再使用程序导出加工完成的结构化数据,这种方式加工效率较低,进而导致行业数字加工整体产出效率不高。同时,传统的PDF标引都是由数字加工人员人工标记,然后依据标引的结果导出结构化数据,这种方式已经将PDF中内容元素的坐标挖掘出来了,但是对于内容本身的特征还没有深度利用。
因此,如何实现PDF的深度利用内容特征进行全自动解析、标引,以及提高标引效率是本领域技术人员亟需解决的问题。
发明内容
有鉴于此,本发明提供了一种基于文本特征和语法规则的PDF全自动标引系统及方法,基于自然语言处理技术,对内容本身的特征以及相互关系进行分析,将人工判断并打标签的过程用软件实现出来,解决PDF标引过程对于人员素质高度依赖的问题,同时可以极大程度的提升标引的效率和质量。
为了实现上述目的,本发明采用如下技术方案:
一种基于文本特征和语法规则的PDF全自动标引系统,包括配置解析层、事件分发层和功能实现层;所述解析配置层、所述事件分发层和所述功能实现层采用事件驱动方式和观察者模式架构实现松耦合连接。观察者模式架构可以实现系统的监督,如果用户对特征匹配库进行了修改则触发系统进行重新匹配。
优选的,所述配置解析层包括规则解析模块、流程解析模块和监听器注册模块;所述规则解析模块存储标准特征库和自定义配置规则构成的特征匹配库,为自动标引提供规则数据;所述流程解析模块将采用不同处理器实现不同阶段的子功能组装起来,配置标注有自动标引过程中每个所述阶段完成的所述所述子功能的流程模板;所述监听器注册模块注册监听事件的监听器,将定义的事件与全自动标引过程中需要监听事件进行一一对应并存储。
优选的,所述事件分发层定义自动标引过程中的若干事件,所述事件包括元素提取事件、块聚合事件、行聚合事件、图片标签识别事件、标引匹配事件、标引文件生成事件和异常事件;所述事件分发层根据所述流程解析模块的所述流程模板中流程执行节点将对应的事件发送给所述监听器;所述监听器接收所述事件并使用对应的功能实现层的执行器实现功能。
优选的,所述功能实现层包括若干与事件对应的执行器,包括页面信息导出器、空格过滤器、字体过滤器、上下标处理器和异常处理器。
一种基于文本特征和语法规则的PDF全自动标引方法,包括以下具体步骤:
步骤1:元素提取,基于文本特征和语法规则分析PDF中待处理元素的特征信息,获得元数据和图片元素,所述元数据为文字元素;如果出现异常情况,跳转至所述步骤4;
步骤2:将所述元数据解析到P2XBook对象中,以页面为维度将所述PDF中每一页的数据进行聚合并存储在P2XPage对象中,所述数据包括所述元数据和所述图片元素;如果出现所述异常情况,跳转至所述步骤4;
步骤3:识别所述图片元素,识别图片信息和图片文本信息,将所述图片文本信息并添加到图片的图片标题信息中,并聚合成图片信息;将聚合划分后的所述文字元素和所述图片信息与特征匹配库中的特征进行匹配实现自动化标引,生成标引文件;如果出现所述异常情况,跳转至所述步骤4;
步骤4:异常处理,采集所述异常情况并判断异常类型,提示错误原因,并记录异常情况。
优选的,所述元素提取过程中,将所述PDF中的元数据提取并存储在XML文件中,将所述XML文件中的XML信息转化为P2XBook类型数据结构。
优选的,所述步骤2中对按页为维度提取的元数据和图片元素进行聚合,包括块聚合和行聚合;
所述块聚合将整页的文字元素按照所述文字元素的坐标和字体划分为若干文字块,获得若干段落,具体流程为:
步骤211:对所述PDF中所有的所述文字元素按坐标进行排序,每个所述文字元素在所述PDF中都是一个矩形块,排序规则为计算文字矩形块的中点坐标,按照从左到右,从上到下的顺序进行排序,排序完成后所有的所述文字元素都是有顺序的;
步骤212:创建一个新的段落,内部数据结构为P2XMark,将排序后的第一个文字元素放入到所述段落中;
步骤213:按顺序将第二个文字元素拿出来与前面的所述文字元素进行字号的比较,根据字号差距是否位于设定的块聚合误差范围内判断是否在同一个所述段落对象内;如果两个元素的字号差距超过所述块聚合误差范围,则认为这两个文字元素不在一个段落内,重新创建一个所述段落,并将所述第二个文字元素放入其中,使得内部的文字不会出现字号相差很大的情况;唯一例外的情况是所述文字元素的上下标,会在后续的执行器内统一进行处理判断,当前忽略所述文字元素存在的上下标情况;
步骤214:若两个所述文字元素的字号相似,即所述字号差距位于所述块聚合误差范围内,计算两个所述文字元素的所述文字矩形块的横向距离和纵向距离,其中所述横向距离等于矩形块中点的横坐标之差,所述纵向距离等于所述矩形块中点的纵坐标之差;若所述横向距离大于一个字符的宽度或者所述纵向距离大于一个字符的高度,则判断这两个所述文字元素不在一个所述段落内;否则,两个所述文字元素位于同一所述段落内;
步骤215:循环遍历完所有的所述文字元素,把每页所述PDF内的所有所述文字元素划分为若干段落;
步骤216:将每个所述段落看做一个段落矩形块,计算每个所述段落的区域范围,和表示所述文字矩形块的坐标一样,用x,y,dx,dy四个数值分别就能表示所述段落矩形块的横坐标、纵坐标、横向距离和纵向距离,完成段落划分;
步骤217:完成段落划分之后处理略过的存在上下标的所述文字元素,计算所述上下标所在区域是否被别的段落区域包含在内,若被包含在内则找出距离所述上下标最近的所述文字元素,若上下标的中心纵坐标位于距离最近的所述文字元素的上半部分,则可以判定为当前文字元素的上标,反之则为所述当前文字元素的下标;若不包含在段落区域内,则作为新段落处理,划分成一个新段落;
块聚合结束后会发出块聚合事件,在块聚合阶段配置的功能实现层的执行器有页面信息导出器和上下标处理器;其中上下标处理器解决段落划分时上下标会被看做单独的段落的问题,上下标处理器的解决思路是计算上下标生成的段落所在区域是否被别的段落区域包含在内,若被包含在内再找出距离上下标最近的文字,应该为这个文字的上下标,计算上下标的矩形块在文字的上半部是还是下半部,若在上半部则为该文字的上标,下半部为文字的下标;
所述行聚合将每个所述段落内的所述文字元素划分为行,具体流程为:
步骤221:遍历每个所述段落,对每个所述段落内的所述文字元素按照所述排序规则进行排序,所述排序规则为段落排序中的所述排序规则;
步骤222:对所述段落内的所述文字元素进行行划分,根据文字矩形块中点的纵坐标来区分行,纵坐标在设定的行聚合误差范围内,认为是同一行,每一行对应一个P2XRow对象,代表一行的数据结果,将同行的所述文字元素存储至同一个P2XRow对象中;
步骤223:将所述段落内的行进行排序,行排序规则为按所述纵坐标从小到大依次排序;
步骤224:计算所述段落内每行开头的缩进距离,计算方法为找到每行横坐标最小的所述文字元素,判断这个横坐标是否相对于别的行有两个字符的缩进,如果有缩进,认为从当前行开始是一个新的段落,重新生成一个新的P2XMark对象作为新的段落;这样段落的划分将更加细粒度,解决了在上一个块聚合中段落划分无法处理段落连续排布且段间距和行间距一样的问题;
步骤225:对每页所述PDF中的所述段落依次排序,并给所述段落标上序号;
行聚合完成后对页面内的文字的划分结束,这时页面内任一文字所处段落号和行号都可以得到,为后面进行标签匹配提供了匹配基础;行聚合阶段配置的执行器只有页面元素导出器。
优选的,所述步骤3中包括图片标签标识、标签匹配和标引文件生成;
所述图片标签识别对所述图片块元素进行处理,识别图片中的所述图片文本信息并添加到图片标签数据中,具体流程为:
步骤311:找到页面内所有的所述图片元素,利用P2XMark对象中type属性标识当前划定的是图片还是文本段落;
步骤312:大部分图片元素的所述图片标题信息会有序号,如“图3-2”这种信息,因此对于所述图片标题这类信息可以使用特征匹配库中设置的正则表达式进行匹配筛选,所述图片标题信息的正则表达式为:^(T\d+-\d+),其中T表示设定的一种字符;
步骤313:对页面的所有行使用所述步骤312的所述正则表达式进行正则匹配,找到满足以“图”开头的文本,若只有一行匹配到,则匹配的行为当前图片的所述图片标题信息;若存在多个匹配结果,计算行与图片的距离,距离最近的一行为所述当前图片的所述图片标题信息;
步骤314:若所述正则匹配没有匹配结果,找到所有行中距离图片最近的一行,将这行作为所述当前图片的所述图片标题信息;
步骤315:将所述图片元素和所述图片标题信息聚合成图片信息;
图片标签识别完成后所有的图片元素信息也会补充完毕,图片标签识别配置的执行器有页面元素导出器和图片大小过滤器;图片大小过滤器是为了过滤有些在识别图片时将一些过小的元素识别为图片内的情况,这些过小的图片没有任何意义,完全是因为PDF资源制作出的一些问题,因此需要将这些图片全部过滤,否则会导致工作人员坚持自动标引结果时产生疑惑;
所述标签匹配,根据标准特征库或设定的自定义配置规则对经过所述块聚合和所述行聚合获得的页面文字、经过所述图片标签识别获得的所述图片信息进行自动标引,获得自动标引数据;
所述标引文件生成,采用线程池并发和FreeMarker模板等技术的方式将所述自动标引数据转换成与人工标引的数据格式相同的XML文件。
优选的,所述标签匹配可以进行实现行标引和段落标引,实现行标引时首先进行段落匹配再进行行匹配,经过标签标记后实现行标引,所述标签匹配的具体流程如下:
步骤321:首先计算设定的规则的应用范围,将不在所述应用范围的页过滤掉;所述设定规则包括标准特征库或自定义配置规则;
步骤322:根据操作人员在软件上设置的所述规则判断匹配模式,所述匹配模式包括行匹配和段落匹配,根据所述匹配模式对应进行行遍历或段落遍历;
步骤323:采用所述特征匹配库进行识别匹配,所述特征匹配库中设置有特征描述和匹配误差阈值,根据所述特征描述和所述匹配误差阈值进行遍历匹配;所述特征匹配库中设置有特征库字体、字号误差、段落位置描述、段落类型描述、行类型描述、特征匹配度等;根据所述特征库字体匹配、字号误差匹配、段落位置匹配和段落类型匹配等,进行字体识别、字号识别、位置识别和类型识别等,完成段落标签标记;所述行匹配包括段落首行判断等,匹配完成标记上标签;
步骤324:根据所述规则中设定的字体和字号,计算每个行或段落中所述文字元素的匹配百分比是否超过所述规则中的特征匹配度,如果是则当前所述文字元素匹配成功;否则,匹配失败,不进行标签标记;
步骤325:若所述规则中设置有匹配文本,将所述匹配文本代入所述正则表达式,对遍历的所述文字元素进行所述正则匹配,若能匹配到所述文字元素,则匹配成功,对匹配成功的所述文字元素进行标签标记;
步骤326:对匹配成功的所述行或所述段落打上所述规则设置的所述标签,若所述规则中没有设置标签,则默认打上设定字符标签,所述字符可以为“段落”;
步骤327:将标签标记的所有所述文字元素和所述图片元素形成的标引信息写入到对应的数据结构中,生成所述标引文件。所述标引文件为P2XBook类型文件。
优选的,所述异常处理负责统一处理所有所述异常情况,首先判断异常类型,所述异常类型包括规则设置错误和PDF资源不正确等,然后直接显示错误原因;对于步骤执行产生的错误导致处理PDF时出现所述异常情况,将所述异常情况记录下来形成日志信息,并存储所述日志信息,还可以打印所述日志信息,根据所述日志信息进行异常的定位和修复。
经由上述的技术方案可知,与现有技术相比,本发明公开提供了一种基于文本特征和语法规则的PDF自动标引系统及方法,系统一共分为三层,配置解析层、事件分发层、功能实现层。该系统采用了事件驱动的方式,使用了观察者模式的架构,这种架构的优势在于功能的具体实现和主流程是松耦合的关系,属于不同的层次中,模块在工作时只需要将事件发送出去,对于具体的实现是不关注的,这样会极大的提高系统的扩展性。对于自动标引来说,很多功能是需要迭代优化以适应复杂版面和特殊情况的,如果是正常的流程架构,添加一个功能往往需要修改整个流程,但是采用了事件驱动的架构,我们只需重新增加一个事件和功能处理器,将处理器配置在适合的流程节点中就可以了,对于整个流程的影响较小,极大的方便了后续的迭代开发。PDF全自动标引系统提高了数字加工人员操作工具的效率,减少重复劳动,数字加工人员使用标准特征库或者自定义配置规则后,自动标引系统就可以自动给PDF资源的信息进行标引,该系统先通过解析PDF生成一个包含基础信息的XML中间文件,然后再使用文本特征以及语法特征分析等技术分析所有的PDF元素以完成全部自动标引过程。
全自动标引方法首先需要分析PDF中待处理元素的特征信息——元数据,这些元数据包括每个文字的字体、字号、字符、坐标等文本特征信息;特征解析算法会将整个PDF的数据解析到P2XBook对象中,然后以页面为维度将PDF中每一页的数据存储在P2XPage对象中,在P2XPage中算法会将PDF的元素以两个维度划分,一个是以段落为维度将PDF元素聚合,即块聚合,划分后的元素用P2XMark存储,另一个是以行为维度将PDF元素聚合,即行聚合,划分后的元素用P2XRow存储。P2XElement表示PDF中最基础的文本元素,这个对象存储了一个PDF文本元素所有的元数据信息;在处理完PDF的文字元素后,还需要处理图片元素,需要识别这些图片的文本信息并添加到图片标签的数据中;处理完所有的文字和图片数据之后算法将会使用特征匹配库对元素特征进行匹配,它会遍历所有的解析好的行或段落是否符合特征库中所描述的规则,若符合规则就会打上对应的标签。该方法能够实现PDF文件的全自动解析、加标签、聚合并最终导出包含所有信息的结构化数据。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1附图为本发明提供的PDF全自动标引系统架构示意图;
图2附图为本发明提供的PDF全自动标引方法流程图;
图3附图为本发明提供的PDF元数据构成示意图;
图4附图为本发明提供的块聚合算法流程图;
图5附图为本发明提供的行聚合算法流程图;
图6附图为本发明提供的图片标签识别流程图;
图7附图为本发明提供的标签匹配流程示意图;
图8附图为本发明提供的块聚合处理原理示意图;
图9附图为本发明提供的行聚合处理原理示意图;
图10附图为本发明提供的图片标签识别工作原理示意图;
图11附图为本发明提供的标签匹配原理示意图;
图12附图为本发明提供的PDF全自动标引系统界面示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种基于文本特征和语法规则的PDF全自动标引系统,包括配置解析层、事件分发层和功能实现层;解析配置层、事件分发层和功能实现层采用事件驱动方式和观察者模式架构实现松耦合连接。观察者模式架构可以实现系统的监督,如果用户对特征匹配库进行了修改则触发系统进行重新匹配。
为了进一步优化上述技术方案,配置解析层包括规则解析模块、流程解析模块和监听器注册模块;规则解析模块存储标准特征库和自定义配置规则构成的特征匹配库,为自动标引提供规则数据;流程解析模块将采用不同处理器实现不同阶段的子功能组装起来,配置标注有自动标引过程中每个阶段完成的子功能的流程模板;监听器注册模块注册监听事件的监听器,将定义的事件与AIProcedure中需要监听事件进行一一对应并存储。
为了进一步优化上述技术方案,事件分发层定义自动标引过程中的若干事件,事件包括元素提取事件、块聚合事件、行聚合事件、图片标签识别事件、标引匹配事件、标引文件生成事件和异常事件;事件分发层根据流程解析模块的流程模板中流程执行节点将对应的事件发送给监听器;监听器接收事件并使用对应的功能实现层的执行器实现功能。
为了进一步优化上述技术方案,功能实现层包括若干与事件对应的执行器,包括页面信息导出器、空格过滤器、字体过滤器、上下标处理器和异常处理器。
一种基于文本特征和语法规则的PDF全自动标引方法,包括以下具体步骤:
S1:元素提取,基于文本特征和语法规则分析PDF中待处理元素的特征信息,获得元数据和图片元素,元数据为文字元素;如果出现异常情况,跳转至S4;元素提取过程中,将PDF中的元数据提取并存储在XML文件中,将XML文件中的XML信息转化为P2XBook类型数据结构;
S2:将元数据解析到P2XBook对象中,以页面为维度将PDF中每一页的数据进行聚合并存储在P2XPage对象中,数据包括元数据和图片元素;如果出现异常情况,跳转至S4;
S3:识别图片元素,识别图片信息和图片文本信息,将图片文本信息并添加到图片的图片标题信息中,并聚合成图片信息;将聚合划分后的文字元素和图片信息与特征匹配库中的特征进行匹配实现自动化标引,生成标引文件;如果出现异常情况,跳转至S4;
S4:异常处理,采集异常情况并判断异常类型,提示错误原因,并记录异常情况。
为了进一步优化上述技术方案,S2中对按页为维度提取的元数据和图片元素进行聚合,包括块聚合和行聚合;
块聚合将整页的文字元素按照文字元素的坐标和字体划分为若干文字块,获得若干段落,具体流程为:
S211:对PDF中所有的文字元素按坐标进行排序,每个文字元素在PDF中都是一个矩形块,排序规则为计算文字矩形块的中点坐标,按照从左到右,从上到下的顺序进行排序,排序完成后所有的文字元素都是有顺序的;
S212:创建一个新的段落,内部数据结构为P2XMark,将排序后的第一个文字元素放入到段落中;
S213:按顺序将第二个文字元素拿出来与前面的文字元素进行字号的比较,根据字号差距是否位于设定的块聚合误差范围内判断是否在同一个段落对象内;如果两个元素的字号差距超过块聚合误差范围,则认为这两个文字元素不在一个段落内,重新创建一个段落,并将第二个文字元素放入其中,使得内部的文字不会出现字号相差很大的情况;唯一例外的情况是文字元素的上下标,会在后续的执行器内统一进行处理判断,当前忽略文字元素存在的上下标情况;
S214:若两个文字元素的字号相似,即字号差距位于块聚合误差范围内,计算两个文字元素的文字矩形块的横向距离和纵向距离,其中横向距离等于矩形块中点的横坐标之差,纵向距离等于矩形块中点的纵坐标之差;若横向距离大于一个字符的宽度或者纵向距离大于一个字符的高度,则判断这两个文字元素不在一个段落内;否则,两个文字元素位于同一段落内;
S215:循环遍历完所有的文字元素,把每页PDF内的所有文字元素划分为若干段落;
S216:将每个段落看做一个段落矩形块,计算每个段落的区域范围,和表示文字矩形块的坐标一样,用x,y,dx,dy四个数值就能分别表示段落矩形块的横坐标、纵坐标、横向距离和纵向距离,完成段落划分;
S217:完成段落划分之后处理略过的存在上下标的文字元素,计算上下标所在区域是否被别的段落区域包含在内,若被包含在内则找出距离上下标最近的文字元素,若上下标的中心纵坐标位于距离最近的文字元素的上半部分,则可以判定为当前文字元素的上标,反之则为当前文字元素的下标;若不包含在段落区域内,则作为新段落处理,划分成一个新段落;
块聚合结束后会发出块聚合事件,在块聚合阶段配置的功能实现层的执行器有页面信息导出器和上下标处理器;其中上下标处理器解决段落划分时上下标会被看做单独的段落的问题,上下标处理器的解决思路是计算上下标生成的段落所在区域是否被别的段落区域包含在内,若被包含在内再找出距离上下标最近的文字,应该为这个文字的上下标,计算上下标的矩形块在文字的上半部是还是下半部,若在上半部则为该文字的上标,下半部为文字的下标;
行聚合将每个段落内的文字元素划分为行,具体流程为:
S221:遍历每个段落,对每个段落内的文字元素按照排序规则进行排序,排序规则为段落排序中的排序规则;
S222:对段落内的文字元素进行行划分,根据文字矩形块中点的纵坐标来区分行,纵坐标在设定的行聚合误差范围内,认为是同一行,每一行对应一个P2XRow对象,代表一行的数据结果,将同行的文字元素存储至同一个P2XRow对象中;
S223:将段落内的行进行排序,行排序规则为按纵坐标从小到大依次排序;
S224:计算段落内每行开头的缩进距离,计算方法为找到每行横坐标最小的文字元素,判断这个横坐标是否相对于别的行有两个字符的缩进,如果有缩进,认为从当前行开始是一个新的段落,重新生成一个新的P2XMark对象作为新的段落;这样段落的划分将更加细粒度,解决了在上一个块聚合中段落划分无法处理段落连续排布且段间距和行间距一样的问题;
S225:对每页PDF中的段落依次排序,并给段落标上序号;
行聚合完成后对页面内的文字的划分结束,这时页面内任一文字所处段落号和行号都可以得到,为后面进行标签匹配提供了匹配基础;行聚合阶段配置的执行器只有页面元素导出器。
为了进一步优化上述技术方案,S3中包括图片标签标识、标签匹配和标引文件生成;
图片标签识别对图片块元素进行处理,识别图片中的图片文本信息并添加到图片标签数据中,具体流程为:
S311:找到页面内的所有的图片元素,利用P2XMark对象中type属性标识当前划定的是图片还是文本段落;
S312:大部分图片元素的图片标题信息会有序号,如“图3-2”这种信息,因此对于图片标题这类信息可以使用特征匹配库中设置的正则表达式进行匹配筛选,图片标题信息的正则表达式为:^(T\d+-\d+),其中T表示设定的一种字符,T可以为字符“图”,正则表达式表示以“图”开始的文本都可能是图片标题信息;
S313:对页面的所有行使用所述步骤312的所述正则表达式进行正则匹配,找到满足以“图”开头的文本,若只有一行匹配到,则匹配的行为当前图片的图片标题信息;若存在多个匹配结果,计算行与图片的距离,距离最近的一行为当前图片的图片标题信息;
S314:若正则匹配没有匹配到结果,找到所有行中距离图片最近的一行,将这行作为当前图片的图片标题信息;
S315:将图片元素和图片标题信息聚合成图片信息;
图片标签识别完成后所有的图片元素信息也会补充完毕,图片标签识别配置的执行器有页面元素导出器和图片大小过滤器;图片大小过滤器是为了过滤有些在识别图片时将一些过小的元素识别为图片内的情况,这些过小的图片没有任何意义,完全是因为PDF资源制作出的一些问题,因此需要将这些图片全部过滤,否则会导致工作人员坚持自动标引结果时产生疑惑;
标签匹配,根据标准特征库或设定的自定义配置规则对经过块聚合和行聚合获得的页面文字、经过图片标签识别获得的图片信息进行自动标引,获得自动标引数据;
标签匹配可以进行实现行标引和段落标引,实现行标引时首先进行段落匹配再进行行匹配,经过标签标记后实现行标引,标签匹配的具体流程如下:
S321:首先计算设定的规则的应用范围,将不在应用范围的页过滤掉;设定规则包括标准特征库或自定义配置规则;
S322:根据操作人员在软件上设置的规则判断匹配模式,匹配模式包括行匹配和段落匹配,根据匹配模式对应进行行遍历或段落遍历;
S323:采用特征匹配库进行识别匹配,特征匹配库中设置有特征描述和匹配误差阈值,根据特征描述和匹配误差阈值进行遍历匹配;特征匹配库中设置有特征库字体、字号误差、段落位置描述、段落类型描述、行类型描述、特征匹配度等;根据特征库字体匹配、字号误差匹配、段落位置匹配和段落类型匹配等,进行字体识别、字号识别、位置识别和类型识别等,完成段落标签标记;行匹配包括段落首行判断等,匹配完成标记上标签;
S324:根据规则中设定的字体和字号,计算每个行或段落中文字元素的匹配百分比是否超过所述规则中的特征匹配度,如果是则认为当前文字元素匹配成功;否则,匹配失败,不进行标签标记;
S325:若规则中设置有匹配文本,将匹配文本代入正则表达式,对遍历的文字元素进行正则匹配,若能匹配到文字文字元素,则匹配成功,对匹配成功的文字元素进行标签标记;匹配文本字符可以选取“摘要”、“关键字”、“附录”等,作为正则表达式中的T;
S326:对匹配成功的行或段落打上规则设置的标签,若规则中没有设置标签,则默认打上设定字符标签,字符可以为“段落”;
S327:将标签标记的所有文字元素和图片元素形成的标引信息写入到对应的数据结构中,生成标引文件,标引文件为P2XBook类型文件;
标引文件生成,采用线程池并发加FreeMarker模板的方式将自动标引数据转换成与人工标引的数据格式相同的XML文件。
为了进一步优化上述技术方案,异常处理负责统一处理所有异常情况,首先判断异常类型,异常类型包括规则设置错误和PDF资源不正确等,然后直接显示错误原因,提示工作人员,工作人员可以自动进行修改;对于S执行产生的错误导致处理PDF时出现异常情况,将异常情况记录下来形成日志信息,并存储日志信息,还可以打印日志信息,根据日志信息由开发人员进行异常的定位和修复。
实施例
PDF全自动标引系统的整体架构图如图1所示。
PDF全自动标引系统一共分为三层,配置解析层、事件分发层、功能实现层。该系统采用了事件驱动的方式,使用了观察者模式的架构,这种架构的优势在于功能的具体实现和主流程是松耦合的关系,属于不同的层次中,模块在工作时只需要将事件发送出去,对于具体的实现是不关注的,这样会极大的提高系统的扩展性。对于自动标引来说,很多功能是需要迭代优化以适应复杂版面和特殊情况的,如果是正常的流程架构,添加一个功能往往需要修改整个流程,但是采用了事件驱动的架构,我们只需重新增加一个事件和功能处理器,将处理器配置在适合的流程节点中就可以了,对于整个流程的影响较小,极大的方便了后续的迭代开发。
系统的最底层是配置解析层,这层主要有三个功能:
(1)规则解析
自动标引并不能只依靠词间关系的计算就可以完成PDF资源的标引功能,它还需要一个已有的特征匹配库或者由数字加工工作人员给出一定的规则,告诉模块符合这些规则的PDF元素应该被打上选定的标签。工作人员目前可以设定的规则条件有字体、字号、匹配元素是否必须是行开头或行结尾、是否是内嵌标签、匹配文本,规则内还必须设置选定的标签和应用范围。同一本PDF资源可以设置多条规则,如果同一个PDF元素符合了多条规则,工具默认采用第一条规则。工作人员在设置好标引规则后,工具会将这些规则持久化保存起来,这里采用的XML的方式进行保存和展示。PDF自动标引系统工作时会读取这个XML文件中的规则,为后续的自动标引提供规则数据。
(2)流程解析
自动标引系统将自动标引的过程分为多个阶段,每个阶段会有不同的子功能需要完成,由不同的处理器进行处理,因此需要一个可以把各个子功能组装起来的功能,流程解析就是负责这个功能的。我们首先会配置一个流程模板,这个模板里配置了整个自动标引过程中每个阶段需要完成那些子功能,然后流程解析功能会读取这个流程模板文件,将配置的流程信息读取进来。这里我们设计了一套数据结构来存储配置好的流程定义,图6是统一建模用例。
这里AIConfig类存储整个流程的配置数据,自动标引系统将整个流程分为多个阶段,每个阶段对应一个AIProcedure,name和stage参数表示阶段的名称和需要监听的事件,scope表示阶段的应用范围。对于每个阶段,会有数个不同的执行器去完成单独的任务,这里AIProcessor类表示一个执行器,index参数表示执行器的执行序号,当一个流程有多个执行器时,按照index从小到大的顺序串行的方式执行。className参数表示映射的具体执行类,AIProcessor类是一个包装类,主流程运行时通过该参数定位到执行类,通过反射的方式实例化执行类,执行任务。AIParam类是配置执行器的启动参数的地方,每个执行器都有一些初始参数需要配置,在流程模板的配置文件配置完毕后,由AIParam类来保存这些参数。
这种通过流程模板配置流程的方式最大的好处是配置灵活,像搭积木一样通过组装不同的执行器,就可以完成自己想要的功能。当我们需要给某一个执行阶段增加一个执行器时,只需要在流程模板里配置好即可,无需重新改写整个流程。同时流程模板可以最大程度复用各个执行器,往往不同的执行阶段会用到同一个执行器,只是执行参数不同,那我们只需在流程模板里配置同一个执行器,然后修改默认的配置参数即可。
(3)监听器注册
由于自动标引系统是由事件驱动,那么在流程执行之前需要将监听事件的监听器注册进来,在自动标引系统完成流程配置后,模块会将定义好的事件与AIProcedure中所需要监听的事件一一对应,放入到缓存内,当后续有对应的事件发生时,监听器会监听到事件的发生通知AIProcedure,流程已经开始,完成后续的任务。
自动标引系统的第二层为事件分发层,我们在这里定义了很多自动标引所需要用到的事件。每个事件代表自动标引一个阶段的开始,目前的事件有元素提取事件、块聚合事件、行聚合事件、图片标签识别事件、标引匹配事件、标引文件生成事件、异常事件。根据读取配置的流程模板,每当流程执行到一个节点时,事件分发层会将对应的事件发给每个监听器,监听器收到事件后会使用各种功能实现层的执行器完成特定的功能。
事件分发层是衔接功能实现层和底层配置层的中间层,通过事件的分发避免了两个不同层的强耦合关系,为后续的扩展提供了条件,当需要有新的功能加入时,只需增加一个新的事件和新的执行器,通过注册监听器监听需要的事件和执行器,就可以在对应事件发生时完成相应的功能。
整个架构的最上层就是各个单独功能的执行器,每个执行器只完成一个单独的功能,目前实现的执行器有页面元素导出器、字体过滤器、空格过滤器、上下标处理器、图片大小过滤器、内嵌标签处理器等。这些执行器会对每个阶段的标引数据进行一定的处理。这些执行器是可以复用的,在自动标引的每个阶段,都可能需要用到其中几个执行器完成一定的功能,因此通过单元化的方式对每个功能进行封装,需要用时调用相关执行器是一个比较好的设计模式。
PDF全自动标引方法将整个工作流程分为了七个阶段,分别为元素提取阶段、块聚合阶段、行聚合阶段、图片标签识别阶段、标签匹配阶段、标引文件生成阶段和异常处理阶段。工作流程图如图2所示。
(1)元素提取阶段
元素提取阶段是自动标引工作最开始的阶段,在这个阶段自动标引系统会将PDF的元数据信息提取进来,之前PDF解析模块已经将PDF内的元数据已经提取并存储在XML文件中了,因此这个阶段不会再做重复提取的工作,而是读取XML文件中的信息,将XML信息转化为内部的数据结构,为了整个工具的一致性,内部的数据结构和PDF解析模块一致,仍为P2XBook类。其中元数据构成如图3所示。
元素提取后会发出元素提取事件,在流程模板里,这个事件中配置的执行器有页面信息导出器、字体过滤器和空格过滤器。
页面信息导出器的作用是将当前阶段的页面内的mark、row、element等信息全部导出到一个json文件中,这么做的目的是为了方便调试信息和定位bug,由于各种各样的PDF资源存在,自动标引难免会存在一些问题,通过这个执行器将需要的信息打印出来,可以快速定位问题所在。这个执行器后续的每个阶段都有配置进去。
字体过滤器是因为当元素提取中会有一些过小的字体文字掺杂其中,这些元素往往是在制作PDF时存在的一些问题,元素提取后需要过滤掉,否则会影响后续流程的结果。
空格过滤器是为了过滤很多在两个字符间存在的空格元素,这些空格元素会影响后续阶段对数据的处理,可能会导致后续数据聚合产生错误的结果,因此会配置空格过滤器对这些空格进行过滤。
(2)块聚合阶段
在元素提取阶段,工具将PDF中所有的文字、图片按页为维度提取进来,但是对于每一页PDF,其中的文字全部聚合在一起,对于有多个段落的页面,这种聚合太过于粗粒度,因此需要经过块聚合将整页的文字划分为几个文字块,这里工具的聚合算法主要通过文字的坐标和字体来划分,块聚合算法的流程图如4所示。
PDF中所有的文字、图片在元数据提取阶段已经按页为维度被提取出来了,这些元数据全部混杂在一页中。对于一页包含多段内容的情况这种聚合方式就显得太过于粗粒度,因此需要经过块聚合将整页的文字按照段落划分为几个文字块。特征匹配算法的块聚合模块主要通过识别文字的坐标、字体、字号等特征来划分段落,其处理原理如图8所示。
块聚合算法的具体处理流程如下:
S1:将所有的文字元素按坐标进行排序,每个文字元素在PDF中都是一个矩形块,矩形块左上角顶点的坐标用(x,y)表示;排序规则为按照顶点坐标从左到右,从上到下的顺序进行排序,排序完成后所有的文字元素都是有顺序的;
S2:创建一个新的段落对象,内部数据结构为P2XMark,将排序后的第一个文字元素放入到对象中;
S3:矩形区域的长和宽分别用dx和dy来表示,它们可以用来表征文字的字号,一般情况下同一段内部的文字不会出现太大的字号的差异,如果第二个元素和第一个元素字体不同或者字号差异大于允许误差Ew算法就认为这两个文字元素不在一个段落内,从而重新创建一个段落对象P2XMark将第二个元素存入;如果以W={w1,w2,...,wn}代表输入的文字序列,以P2XMark={P1,P2,...,Pm}代表划分完的段落序列,以代表输入文字序列中第k个元素划分到第i个段落中,那么每个元素划分规则如下所示:
δA(k)是指示函数,其计算式为:
每当δη(k)从1变成0的时候,文字将被划分到下一段,段落下标i增加1;
S4:字号判断还有一个特殊情况,那就是文内的上下标,如果直接按照上述段落划分方式进行判断的话可能将上下标划入新的段落,因此,加入了一些容错处理先略过可能是上下标的元素,等待段落划分完毕之后再进行处理,例如其高度或者宽度小于等于其前方元素的一半,可以初步认定是上下标;
S5:若w1和w2两个元素的字号相似,则计算两个元素矩形块的横向距离和纵向距离;其中横向距离等于两个矩形块之间的横向间距,用Δx表示,其计算公式为Δx=x2-x1-dx1;纵向距离等于矩形块之间的纵向间距,用Δy表示,其计算公式为Δy=y2-y1-dy1;若Δx>dx1或者Δy>dy1,则判断这两个元素不在一个段落内;
S6:循环遍历完所有的文字元素,可以把一页PDF内的所有文字按照文字特征划分为几个段落;
S7:将每个段落看做一个矩形块,计算每个段落的区域范围,和表示文字块的坐标一样,用X,Y,dX,dY四个数值就能表示段落矩形块的坐标;
S8:完成段落划分之后则需要继续处理之前略过的上下标,上下标的处理思路是计算上下标所在区域是否被别的段落区域包含在内,若被包含在内则再找出距离上下标最近的文字元素,若以wr代表距离最近的文字元素,以ws代表待处理的上下标元素;若ws的中心纵坐标位于wr的上半部分,即则可以判定ws为wr的上标,反之则为其下标。
块聚合算法可以将页面中的文字元素以段落为维度划分为若干块,但是无法处理段落连续排布且段间距和行间距一样的情况,这种情况则需要用到行聚合算法。
(3)行聚合阶段
行聚合阶段流程如图5所示,行聚合模块是页面元素划分的第二个层次,块聚合模块已经将页面元素划分为了多个段落,行聚合算法会将每个段落内的文字划分为行,行聚合模块的处理原理如图9所示。
行聚合模块的处理步骤如下:
S1:遍历每个段落,对每个段落内的文字元素进行排序,排序规则与段落排序一致;
S2:对段落内的文字进行行划分,根据文字矩形块左上角顶点的纵坐标来区分行;纵坐标差值在允许误差范围Ew内的元素算法将判定为同一行的元素,每一行元素存储在一个P2XRow对象中,如果以W={wi,wi+1,...,wj}代表块聚合划分的一段内包含的文字序列,以P2XRow={R1,R2,...,Rm}代表划分完的行序列,以rt k代表文字序列中第k个元素重新划分到第t行中,那么每个元素划分规则如下所示:
rt k=wk×δB(k) (4)
δB(k)是指示函数,其计算式为:
S3:将段落内的行进行排序,排序规则为按纵坐标从小到大排序;
S4:在一个P2XMark对象中照P2XRow纵坐标由小到大依次计算其缩进距离,即每行第一个元素的横坐标x;然后算法判断这个元素横坐标x是否相对已经被判定为当前段内的行有两个字符的缩进,即是否满足x≥2×dx,如果满足则认为从这行开始是一个新的段落,算法将重新生成一个新的P2XMark对象;例如图9中的第10个文字元素和第11个文字元素的横向距离和纵向距离满足Δx≤dx并且Δy≤dy,这种情况在块聚合中被判定为同一段的元素,而在行聚合中就可以更为精确的拆分为两段;
S5:最后对一页中的段落重新排序并校对序号.
执行完行聚合之后页面内的文字的划分过程基本结束了,这时页面内任一文字所处段落号和行号都被标记完毕,这将为后续的标签匹配模块提供极大的便利。
(4)图片标签识别阶段
图片标签识别阶段的流程如图6所示,在处理完PDF的文字元素后,算法还需要单独处理图片元素。图片标签除了包含图片本身的信息以外,还需要标记图注、图表题等文字信息。图片标签识别模块则可以将图片的所有关联信息识别出来并记录到图片标签中。图片标签识别模块的工作原理如图10所示。
识别算法步骤如下:
S1:找到页面内的所有图片元素,在P2XMark对象中有一个type属性标识是的段落还是图片;
S2:大部分的图注信息会是类似“图1”这种带序号的表达方式,因此可以使用正则表达式处理图注,如果以P2XRow={r1,r2,...,rn}代表一个P2XPage所包含的行元素,以IR={ri,ri+1,...,rj}代表匹配上的图注行,那么正则匹配公式为:
IR=Reg(P2XRow,^(Figure\d+-\d+)) (7)
S3:对页面的所有行进行正则匹配,若只有一行匹配到则这行就为这图片的标题;若存在多个匹配结果,计算行与图片的距离,最近的一行为图片的标题信息,以rd表示,它和图片的距离用Δyd来表示,其计算公式为:
Δyd=Min(Δyi,Δyi+1,...,Δyj) (8)
S4:若正则匹配没有匹配到结果则判断最小距离行是否是首行缩进行,如果是首行缩进行则是新的一段开始,不做处理;如果不是则可以提取为图书信息;
S5:将图片和标题聚合成图片元素。
至此,页面中所有的元素已经被解析识别完毕,接下来就可以按照特征进行文本标签自动匹配了。
(5)标签匹配阶段
标签匹配阶段是整个自动标引工程中的核心阶段,通过利用工作人员设置的规则,再加上前面几个阶段对PDF资源的数据整理做铺垫,可以顺利的对整本PDF资源内的元素进行自动化标引工作。标签匹配阶段配置的执行器有页面元素导出器、内嵌标签处理器。其中内嵌标签处理器是为了处理如上下标这种在一个标签内还有标签的情况,这些内嵌标签需要标识出来并打上内嵌标签的信息,内嵌标签处理器会遍历所有的行或段落,对内嵌标签进行统一处理。
标签匹配阶段流程如图7所示,标签匹配模块会借助特征匹配库对已经按照段、行划分的文本进行匹配,模块会先以段落为维度遍历已经划分好的段落,然后根据段落特征从特征匹配库中寻找到对应的标签并进行配置。段落标签配置完毕之后模块再次遍历所有已经划分好的行并为其配置上标签。标签匹配的原理如图11所示。
标签匹配模块的算法执行流程如下:
S1:为了降低计算器处理的无用开销,标签匹配模块只会处理有价值的数据,诸如广告、公示等无用数据将不会处理;
S2:先以段落为维度遍历所有已经划分好的段落,通过识别字体、字号初步判断段落是标题还是正文,识别的过程也包含两个层次:特征库字体匹配和字号误差判定,特征库字体匹配是通过识别段落文本字体并从特征库中找出字体对应的标签来完成段落标签的大致判定;字号误差判定则是进一步通过判断段落所有文本元素的字号平均值是否在特征库标题标签约定的范围[Fmin,Fmax]内,在内则认为段落是标题段落,否则判定段落是正文段落;如果将所有待处理段落的字号平均值用序列来表示,以序列CP代表划定为章节的所有段落元素,其计算公式如下所示:
CP={Pk|k∈D} (9)
D={k|Fmin≤dPk≤Fmax} (10);
S3:然后依据段落居中情况、缩进情况等具体判定标题是几级标题以及判定段落是正文段落、引文段落还是其他类型的段落等;按照特征库的描述,标题如果居中则判定为章标题,如果居左则判定为节标题;同时,依据特征库中对于正文类型的定义,如果正文起始行缩进大于两个文字元素的横向距离则认为是普通正文,如果正文左右都缩进一个文字元素的距离则是引文的可能性比较大;所有匹配都设置了一个匹配误差范围Em从而增大算法的容错性。
S4:除此之外,特征库中还包含一些固定搭配的正则表达式,如“摘要”、“关键字”、“附录”等可以直接指示当前段落的属性,算法将这些文字加入到正则表达式的条件中以满足相关标签配置的需求;
S5:在特征库中没有任何匹配结果的段落都会被配置上“段落”标签,处理完成之后算法将配置信息存入到结构化数据中。
行的处理和段落类似,只不过处理过程中需要综合考虑行所在的段落特征,比如正文段中的缩进行应该是段落首行的这种综合判断的情况。标签匹配完成之后原始PDF数据都已经全部被转化为包含标签信息的结构化数据了。这些数据不仅包含PDF所有的内容信息,还包含了格式、位置、标签等重要的元数据信息,自动标引环节中的基于标签权重的新词发现算法就可以利用这些元数据将结构化数据处理为能够构建知识体系和知识图谱的知识元,从而深层挖掘图书的核心价值。
(6)标引文件生成阶段
到这个阶段所有的自动标引的数据标引已经完成了,需要的是将数据生成为XML文件,和人工标引的数据格式保持一致,这样工具在显示自动标引数据时可以做到和人工标引的显示一致,工作人员才能对自动标引的结果进行校验。这里生成XML文件的方法和PDF解析模块生成XML文件的方法类似,采用线程池并发加FreeMarker模板的方式最大效率的生成XML文件,该阶段没有配置执行器。
(7)异常处理阶段
异常处理阶段属于比较特殊的阶段,在前面任意6个阶段发生错误无法继续进行下去的时候会跳到异常处理阶段,异常处理阶段负责统一处理所有异常情况,该阶段首先会判断异常类型,对于如规则设置错误、PDF资源不正确的情况,直接提示工作人员错误原因,让工作人员可以自行进行修改。对于模块自身的错误导致处理PDF时异常的情况,需要记录下来,将日志信息打印到文件中存储在特定位置,由开发人员进行异常的定位和修复。
PDF全自动标引系统的功能界面如图12所示:
该界面主要分为左中右三大块,左边区域为PDF的目录以及书签区域,数字加工人员可以看到整个PDF的目录层级并进行快速的跳转。
中间的显示区域会显示PDF自动标引完毕的结果,所有的标引都是通过标引框的框选和右下角的标签进行展示的,工具会对每个标引框进行标号排序,后续生成的XML资源也是根据这个序号来组装的。数字加工人员可以通过该界面快速验证标引的结果以及调整标记结果,可以拖拽标引框,并且可以编辑标引的标签以矫正自动标引的结果。
右边的显示区域是文本视图区域,该区域会显示该页PDF所有的标引信息,中间显示区域所有的标引文字都会在该区域显示,每一个标引框对应一个标签段落,标引框内的文字对应标引段落中的文字。数字加工人员可以编辑标签段落内的文字,这里的编辑修改不会显示在PDF中,但在最后生成XML资源时,这些更改都会出现在XML的内容中。为了让数字加工人员能更快的定位标签段落中的文字在PDF中的显示位置,当数字加工人员点击文字时,中间显示区域该文字所处的行会高亮显示,并且会将该文字所在的位置高亮框选出来,为数字加工人员快速的查看标签内容是否有错误提供了方便。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种基于文本特征和语法规则的PDF全自动标引系统,其特征在于。包括配置解析层、事件分发层和功能实现层;所述解析配置层、所述事件分发层和所述功能实现层采用事件驱动方式实现松耦合连接。
2.根据权利要求1所述的一种基于文本特征和语法规则的PDF全自动标引系统,其特征在于,所述配置解析层包括规则解析模块、流程解析模块和监听器注册模块;所述规则解析模块存储标准特征库和自定义配置规则构成的特征匹配库,为自动标引提供规则数据;所述流程解析模块将采用不同处理器实现不同阶段的子功能组装起来,配置标注有自动标引过程中每个所述阶段完成的所述所述子功能的流程模板;所述监听器注册模块注册监听事件的监听器,将定义的事件与需要监听事件进行一一对应并存储。
3.根据权利要求2所述的一种基于文本特征和语法规则的PDF全自动标引系统,其特征在于,所述事件分发层定义自动标引过程中的若干事件,所述事件包括元素提取事件、块聚合事件、行聚合事件、图片标签识别事件、标引匹配事件、标引文件生成事件和异常事件;所述事件分发层根据所述流程解析模块的所述流程模板中流程执行节点将对应的事件发送给所述监听器;所述监听器接收所述事件并使用对应的功能实现层的执行器实现功能。
4.根据权利要求1所述的一种基于文本特征和语法规则的PDF全自动标引系统,其特征在于,所述功能实现层包括若干与事件对应的执行器,包括页面信息导出器、空格过滤器、字体过滤器、上下标处理器和异常处理器。
5.一种根据权利要求1-4任一项所述的基于文本特征和语法规则的PDF全自动标引系统的全自动标引方法,其特征在于,包括以下具体步骤:
步骤1:元素提取,基于文本特征和语法规则分析PDF中待处理元素的特征信息,获得元数据和图片元素,所述元数据为文字元素;如果出现异常情况,跳转至所述步骤4;
步骤2:将所述元数据解析到P2XBook对象中,以页面为维度将所述PDF中每一页的数据进行聚合并存储在P2XPage对象中,所述数据包括所述元数据和所述图片元素;如果出现所述异常情况,跳转至所述步骤4;
步骤3:识别所述图片元素,识别图片和图片文本信息,将所述图片文本信息添加到图片的图片标题信息中,并聚合成图片信息;将聚合划分后的所述文字元素和所述图片信息与特征匹配库中的特征进行匹配实现自动化标引,生成标引文件;如果出现所述异常情况,跳转至所述步骤4;
步骤4:异常处理,采集所述异常情况并判断异常类型,提示错误原因,并记录异常情况。
6.根据权利要求5所述的一种基于文本特征和语法规则的PDF全自动标引方法,其特征在于,所述元素提取过程中,将所述PDF中的元数据提取并存储在XML文件中,将所述XML文件中的XML信息转化为P2XBook类型数据结构。
7.根据权利要求5所述的一种基于文本特征和语法规则的PDF全自动标引方法,其特征在于,所述步骤2中对按页为维度提取的元数据和图片元素进行聚合,包括块聚合和行聚合。
所述块聚合将整页的文字元素按照所述文字元素的坐标和字体划分为若干文字块,获得若干段落,具体流程为:
步骤211:对所述PDF中所有的所述文字元素按坐标进行排序,每个所述文字元素在所述PDF中都是一个矩形块,排序规则为计算文字矩形块的中点坐标,按照从左到右,从上到下的顺序进行排序,排序完成后所有的所述文字元素都是有顺序的;
步骤212:创建一个新的段落,内部数据结构为P2XMark,将排序后的第一个文字元素放入到所述段落中;
步骤213:按顺序将第二个文字元素拿出来与前面的所述文字元素进行字号的比较,根据字号差距是否位于设定的块聚合误差范围内判断是否在同一个所述段落对象内;如果超过所述块聚合误差范围,则重新创建一个所述段落,并将所述第二个文字元素放入其中;忽略所述文字元素存在上下标情况;
步骤214:若两个所述文字元素的所述字号差距位于所述块聚合误差范围内,计算两个所述文字元素的所述文字矩形块的横向距离和纵向距离,其中所述横向距离等于矩形块中点的横坐标之差,所述纵向距离等于所述矩形块中点的纵坐标之差;若所述横向距离大于一个字符的宽度或者所述纵向距离大于一个字符的高度,则判断这两个所述文字元素不在一个所述段落内;否则,两个所述文字元素位于同一所述段落内;
步骤215:循环遍历完所有的所述文字元素,把每页所述PDF内的所有所述文字元素划分为若干段落;
步骤216:将每个所述段落看做一个段落矩形块,计算每个所述段落的区域范围,和表示所述文字矩形块的坐标一样,用x,y,dx,dy四个数值分别表示所述段落矩形块的横坐标、纵坐标、横向距离和纵向距离,完成段落划分;
步骤217:完成段落划分之后处理略过的存在上下标的所述文字元素,计算所述上下标所在区域是否被别的段落区域包含在内,若被包含在内则找出距离所述上下标最近的所述文字元素,若上下标的中心纵坐标位于距离最近的所述文字元素的上半部分,则可以判定为当前文字元素的上标,反之则为所述当前文字元素的下标;若不包含在段落区域内,则作为新段落处理,划分成一个新段落;
所述行聚合将每个所述段落内的所述文字元素划分为行,具体流程为:
步骤221:遍历每个所述段落,对每个所述段落内的所述文字元素按照所述排序规则进行排序;
步骤222:对所述段落内的所述文字元素进行行划分,根据文字矩形块中点的纵坐标来区分行,纵坐标在设定的行聚合误差范围内,认为是同一行,每一行对应一个P2XRow对象,代表一行的数据结果,将同行的所述文字元素存储至同一个P2XRow对象中;
步骤223:将所述段落内的行进行排序,行排序规则为按所述纵坐标从小到大依次排序;
步骤224:计算所述段落内每行开头的缩进距离,计算方法为找到每行横坐标最小的所述文字元素,判断所述横坐标是否相对于别的行有两个字符的缩进,如果有缩进,认为从当前行开始是一个新的段落,重新生成一个新的段落;
步骤225:对每页所述PDF中的所述段落依次排序,并给所述段落标上序号。
8.根据权利要求7所述的一种基于文本特征和语法规则的PDF全自动标引方法,其特征在于,所述步骤3中包括图片标签标识、标签匹配和标引文件生成;
所述图片标签识别对所述图片元素进行处理,识别所述图片元素中的所述图片文本信息并添加到图片标签数据中,具体流程为:
步骤311:找到页面内所有的所述图片元素,利用P2XMark对象中type属性标识当前划定的是图片还是文本段落;
步骤312:所述图片元素的图片标题信息会有序号,对所述图片标题信息使用特征匹配库中设置的正则表达式进行匹配筛选;
步骤313:对页面的所有行使用所述步骤312的所述正则表达式进行正则匹配,若只有一行匹配,则匹配的行为当前图片的所述图片标题信息;若存在多个匹配结果,计算行与图片的距离,距离最近的一行为所述当前图片的所述图片标题信息;
步骤314:若所述正则匹配没有匹配结果,找到所有行中距离图片最近的一行,将这行作为所述当前图片的所述图片标题信息;
步骤315:将所述图片元素和所述图片标题信息聚合成图片信息;
所述标签匹配,根据标准特征库或设定的自定义配置规则对经过所述块聚合和所述行聚合获得的页面文字、经过所述图片标签识别获得的所述图片信息进行自动标引,获得自动标引数据;
所述标引文件生成,采用线程池并发和FreeMarker模板将所述自动标引数据转换成与人工标引的数据格式相同的XML文件。
9.根据权利要求8所述的一种基于文本特征和语法规则的PDF全自动标引方法,其特征在于,所述标签匹配的具体流程如下:
步骤321:首先计算设定的规则的应用范围,将所述PDF中不在所述应用范围的页过滤掉;
步骤322:根据设置的所述规则判断匹配模式,所述匹配模式包括行匹配和段落匹配,根据所述匹配模式对应进行行遍历或段落遍历;
步骤323:采用所述特征匹配库进行识别匹配,所述特征匹配库中设置有特征描述和匹配误差阈值,根据所述特征描述和所述匹配误差阈值进行遍历匹配;
步骤324:计算每个行或段落中所述文字元素的匹配百分比是否超过所述规则中的特征匹配度,如果是则当前所述文字元素匹配成功;否则,匹配失败,不进行标签标记;
步骤325:所述规则中设置有匹配文本,将所述匹配文本代入所述正则表达式,对遍历的所述文字元素进行所述正则匹配,若能匹配到所述文字元素,则匹配成功,对匹配成功的所述文字元素进行标签标记;
步骤326:对匹配成功的所述行或所述段落打上所述规则设置的所述标签,若所述规则中没有设置标签,则默认打上设定字符标签;
步骤327:将标签标记的所有所述文字元素和所述图片元素形成的标引信息写入到对应的数据结构中,生成所述标引文件。
10.根据权利要求5所述的一种基于文本特征和语法规则的PDF全自动标引方法,其特征在于,所述异常处理负责统一处理所有所述异常情况,首先判断异常类型;然后直接显示错误原因;对于步骤执行产生的错误导致处理PDF时出现所述异常情况,将所述异常情况记录下来形成日志信息并存储,根据所述日志信息进行异常的定位和修复。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011339681.6A CN112307718B (zh) | 2020-11-25 | 2020-11-25 | 一种基于文本特征和语法规则的pdf全自动标引系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011339681.6A CN112307718B (zh) | 2020-11-25 | 2020-11-25 | 一种基于文本特征和语法规则的pdf全自动标引系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112307718A true CN112307718A (zh) | 2021-02-02 |
CN112307718B CN112307718B (zh) | 2021-05-11 |
Family
ID=74335562
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011339681.6A Active CN112307718B (zh) | 2020-11-25 | 2020-11-25 | 一种基于文本特征和语法规则的pdf全自动标引系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112307718B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112699637A (zh) * | 2021-01-08 | 2021-04-23 | 中南大学 | 段落类型识别方法及系统和文档结构识别方法及系统 |
CN113033164A (zh) * | 2021-03-31 | 2021-06-25 | 善诊(上海)信息技术有限公司 | 一种pdf文件信息分析方法和装置 |
WO2022188821A1 (zh) * | 2021-03-09 | 2022-09-15 | 智慧芽信息科技(苏州)有限公司 | 对文件进行自定义字段标引的处理方法、装置、服务器及系统 |
CN117391192A (zh) * | 2023-12-08 | 2024-01-12 | 杭州悦数科技有限公司 | 基于图数据库的利用llm从pdf构建知识图谱的方法及装置 |
CN117473980A (zh) * | 2023-11-10 | 2024-01-30 | 中国医学科学院医学信息研究所 | 一种便携式文档格式文件的结构化解析方法及相关产品 |
CN117744597A (zh) * | 2024-02-19 | 2024-03-22 | 广州睿帆科技有限公司 | 具有错误处理机制的xsd到json转换方法 |
US20240111942A1 (en) * | 2022-09-30 | 2024-04-04 | Konica Minolta Business Solutions U.S.A., Inc. | Detection and tagging of paragraphs spanning columns, pages, or other reading units |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105988979A (zh) * | 2015-02-16 | 2016-10-05 | 北京邮电大学 | 基于pdf文件的表格提取方法和装置 |
US20160371238A1 (en) * | 2013-07-09 | 2016-12-22 | Blueprint Sofware Systems Inc, | Computing device and method for converting unstructured data to structured data |
CN106354861A (zh) * | 2016-09-06 | 2017-01-25 | 中国传媒大学 | 电影标签自动标引方法及自动标引系统 |
CN107291677A (zh) * | 2017-07-14 | 2017-10-24 | 北京神州泰岳软件股份有限公司 | 一种pdf文档标题结构树生成方法、装置、终端及系统 |
CN108132920A (zh) * | 2018-01-10 | 2018-06-08 | 北京仁和汇智信息技术有限公司 | 一种xml文件与pdf文件同步关联的方法及装置 |
CN108536683A (zh) * | 2018-04-18 | 2018-09-14 | 同方知网数字出版技术股份有限公司 | 一种基于机器学习的论文碎片化信息抽取方法 |
CN108959254A (zh) * | 2018-06-29 | 2018-12-07 | 中教汇据(北京)科技有限公司 | 一种用于期刊pdf文件中文章内容的解析方法 |
CN109739834A (zh) * | 2018-12-25 | 2019-05-10 | 青岛高企通互联网有限公司 | 一种基于云计算的科技项目智能申报系统 |
CN111859931A (zh) * | 2020-07-27 | 2020-10-30 | 北京字节跳动网络技术有限公司 | 文本的提取处理方法、装置、终端和存储介质 |
-
2020
- 2020-11-25 CN CN202011339681.6A patent/CN112307718B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160371238A1 (en) * | 2013-07-09 | 2016-12-22 | Blueprint Sofware Systems Inc, | Computing device and method for converting unstructured data to structured data |
CN105988979A (zh) * | 2015-02-16 | 2016-10-05 | 北京邮电大学 | 基于pdf文件的表格提取方法和装置 |
CN106354861A (zh) * | 2016-09-06 | 2017-01-25 | 中国传媒大学 | 电影标签自动标引方法及自动标引系统 |
CN107291677A (zh) * | 2017-07-14 | 2017-10-24 | 北京神州泰岳软件股份有限公司 | 一种pdf文档标题结构树生成方法、装置、终端及系统 |
CN108132920A (zh) * | 2018-01-10 | 2018-06-08 | 北京仁和汇智信息技术有限公司 | 一种xml文件与pdf文件同步关联的方法及装置 |
CN108536683A (zh) * | 2018-04-18 | 2018-09-14 | 同方知网数字出版技术股份有限公司 | 一种基于机器学习的论文碎片化信息抽取方法 |
CN108959254A (zh) * | 2018-06-29 | 2018-12-07 | 中教汇据(北京)科技有限公司 | 一种用于期刊pdf文件中文章内容的解析方法 |
CN109739834A (zh) * | 2018-12-25 | 2019-05-10 | 青岛高企通互联网有限公司 | 一种基于云计算的科技项目智能申报系统 |
CN111859931A (zh) * | 2020-07-27 | 2020-10-30 | 北京字节跳动网络技术有限公司 | 文本的提取处理方法、装置、终端和存储介质 |
Non-Patent Citations (3)
Title |
---|
天津滨海迅腾科技集团有限公司: "《基于MVC的Java Web项目实战》", 31 January 2017, 天津:南开大学出版社 * |
赵严 等: "面向数字出版的PDF自动标引系统的研究与实现", 《中国科技论文在线》 * |
钱远鹏: "基于SWT元数据提取的研究与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112699637A (zh) * | 2021-01-08 | 2021-04-23 | 中南大学 | 段落类型识别方法及系统和文档结构识别方法及系统 |
WO2022188821A1 (zh) * | 2021-03-09 | 2022-09-15 | 智慧芽信息科技(苏州)有限公司 | 对文件进行自定义字段标引的处理方法、装置、服务器及系统 |
CN113033164A (zh) * | 2021-03-31 | 2021-06-25 | 善诊(上海)信息技术有限公司 | 一种pdf文件信息分析方法和装置 |
US20240111942A1 (en) * | 2022-09-30 | 2024-04-04 | Konica Minolta Business Solutions U.S.A., Inc. | Detection and tagging of paragraphs spanning columns, pages, or other reading units |
CN117473980A (zh) * | 2023-11-10 | 2024-01-30 | 中国医学科学院医学信息研究所 | 一种便携式文档格式文件的结构化解析方法及相关产品 |
CN117391192A (zh) * | 2023-12-08 | 2024-01-12 | 杭州悦数科技有限公司 | 基于图数据库的利用llm从pdf构建知识图谱的方法及装置 |
CN117391192B (zh) * | 2023-12-08 | 2024-03-15 | 杭州悦数科技有限公司 | 基于图数据库的利用llm从pdf构建知识图谱的方法及装置 |
CN117744597A (zh) * | 2024-02-19 | 2024-03-22 | 广州睿帆科技有限公司 | 具有错误处理机制的xsd到json转换方法 |
CN117744597B (zh) * | 2024-02-19 | 2024-04-26 | 广州睿帆科技有限公司 | 具有错误处理机制的xsd到json转换方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112307718B (zh) | 2021-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112307718B (zh) | 一种基于文本特征和语法规则的pdf全自动标引系统及方法 | |
CN110292775B (zh) | 获取差异数据的方法及装置 | |
EP2801906B1 (en) | Source code flow analysis using information retrieval | |
US20040181746A1 (en) | Method and expert system for document conversion | |
JP2005196291A (ja) | ユーザインタフェースアプリケーション開発プログラム、および開発装置 | |
US8914378B2 (en) | Specification document check method, program, and system | |
CN110968294B (zh) | 一种业务领域模型建立系统及方法 | |
CN105045583B (zh) | 一种基于可视化流程的ietm故障类数据模块创作装置及其创作方法 | |
CN110765739A (zh) | 一种从pdf文档中抽取表格数据和篇章结构的方法 | |
CN112307191A (zh) | 多系统交互式日志查询方法、装置、设备及存储介质 | |
CN114707474A (zh) | 报表生成方法、装置、电子设备及计算机可读存储介质 | |
CN113283216A (zh) | 网页内容显示方法、装置、设备及存储介质 | |
Yang et al. | UIS-hunter: Detecting UI design smells in Android apps | |
JP4373470B2 (ja) | 文書変換活用システム | |
CN113553055A (zh) | 一种基于机器学习的可视化图表代码自动生成方法 | |
CN113608903A (zh) | 一种基于xml语言的故障管理方法 | |
CN103365640A (zh) | 层叠样式表样式转换方法及装置 | |
CN102486731B (zh) | 增强软件的软件调用栈的可视化的方法、设备和系统 | |
CN115840564A (zh) | 基于多架构建模语言的一体化模型构建方法、装置及系统 | |
CN106873982B (zh) | 一种基于图形用户界面的软件搜索复用方法及系统 | |
CN111581815B (zh) | 一种基于xml的工艺模型本体构建方法 | |
CN110554860B (zh) | 一种软件项目自然语言编程接口nli的构造方法及代码生成方法 | |
CN109918129B (zh) | 一种基于g核分解的软件关键函数识别方法 | |
CN114637505A (zh) | 一种页面内容提取方法和装置 | |
CN111222310A (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 |