CN112597267A - 一种基于模式识别的英文论文文档多粒度内容处理方法 - Google Patents
一种基于模式识别的英文论文文档多粒度内容处理方法 Download PDFInfo
- Publication number
- CN112597267A CN112597267A CN202011474201.7A CN202011474201A CN112597267A CN 112597267 A CN112597267 A CN 112597267A CN 202011474201 A CN202011474201 A CN 202011474201A CN 112597267 A CN112597267 A CN 112597267A
- Authority
- CN
- China
- Prior art keywords
- text
- block
- page
- blocks
- feature
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Document Processing Apparatus (AREA)
- Machine Translation (AREA)
Abstract
本发明涉及一种基于模式识别的英文论文文档多粒度内容处理方法,属于信息处理技术领域。本方法,针对英文PDF格式论文文档内容识别处理面临的问题,将论文按章、节、段落拆分为更小粒度的内容子单元,并将论文中的表格、图形、算法等非文本内容单独抽取,同时,保留各个子单元原有的语义关系和上下文联系,以便后续应用。在进行信息抽取时,通过利用文本内容之间的语义关联及文本位置信息,能够高效、快速、准确地识别目标文本内容对象。
Description
技术领域
本发明涉及一种论文文档多粒度内容识别方法,尤其涉及一种基于模式识别的英文论文文档多粒度内容识别处理方法,属于信息处理技术领域。
背景技术
论文文献作为一种重要的知识载体,里面蕴含了丰富的知识内容。根据《科技日报》报道,2016年至2018年,中国研究人员平均每年发表的论文数量为305927篇,美国研究人员平均每年发表的论文数量为281487篇。面对每年新增数十万的论文信息,深入挖掘其中蕴藏的知识非常重要。论文文档富含丰富的知识内容,包含了许多的知识对象,如概念、定义等等。此外,论文除文字外,还含有大量的表格、图形以及算法等知识内容。
现有的对论文文档利用方法,主要采用基于关键词搜索、引文分析、全文推荐等技术,主要针对论文摘要、引文等粒度较粗的层面,没有深入到论文内容等细粒度层面上,无法满足实际应用需求。因此,需要对论文文档进行解构,将论文内容分解为更细粒度的内容单元,同时保留其组织关系和上下文联系,从而为后续应用提供支撑。
发明内容
本发明的目的是为了解决现有技术对英文PDF格式论文文档内容识别粒度较粗,无法有效提取出细粒度信息对象的技术问题,创造性地提出了一种基于模式识别的英文论文文档多粒度内容处理方法。
本发明方法的创新点在于:针对英文PDF格式论文文档,将论文按章、节、段落拆分为更小粒度的内容子单元,此外,将论文中的表格、图形、算法等非文本内容单独抽取,同时,保留各个子单元原有的语义关系和上下文联系,以便后续应用。在进行信息抽取时,通过利用文本内容之间的语义关联及文本位置信息,高效、快速、准确地识别目标文本内容对象。
本发明的目的是通过下述技术方案实现的,如图1所示,包括以下步骤:
步骤1:定义数据结构,用以表示PDF格式英文论文。其数据结构关系如图2所示。具体如下:
解构PDF格式英文论文,将解构数据写入数据结构中。
步骤1.1:定义数据结构。
具体如下:
步骤1.1.1:定义文本块结构block,用以存储文本块。
具体格式为:block[x0,y0,x1,y1,text]。其中,x0,y0,x1,y1对应文本块的位置坐标信息,text为文本块的文字信息,如图3所示。
步骤1.1.2:定义页面文本块列表blocks,用以存储本页面所有文本块block。
具体格式为:blocks={block0,block1,…,blocki}。其中,i为block在blocks中的序号,记为blockNum。
步骤1.1.3:定义页面结构page,用以表示页面,对应论文中的每一页。
具体格式为:page[blocks,rect]。其中,rect为页面尺寸信息,具体格式为rect[x,y],x为页面宽度,y为页面高度。
步骤1.1.4:定义页面列表pages,用以存储文档中的所有页面page。
具体格式为:pages={page0,page1,…,pagej},其中,j为page在pages中的序号,记为pageNum。
步骤1.1.5:定义文本块block类型集合typeSet,包含文本块的所有类型种类。
具体格式为:typeSet={type0,type1,…,typei}。其中,typei对应不同的文本块类型。
步骤1.1.6:定义文本块索引表BlockIndex,用以记录文本块所属的类型。
具体格式为:BlockIndex[pageNum,blockNum,type]。其中,pageNum为block所属的页面序号,blockNum为block所属的文本块序号,type为文本块所属类型,type∈typeSet。
步骤1.2:解构PDF格式英文论文,读取论文数据,并送至定义好的数据结构中。
具体如下:
步骤1.2.1:按页读取PDF格式英文论文,根据段落之间的距离,将文档内容切分为文本块,记录其坐标信息,并将内容转为文本。
步骤1.2.2:将步骤1.2.1中的数据分别赋值给对应的block、blocks、page、pages数据结构。
步骤1.2.3:初始化typeSet、BlockIndex。
步骤2:识别出文本块中的注释信息、页眉信息、页脚信息、页码、章标题及小节标题。
具体如下:
步骤2.1:循环遍历pages下的page,获取page下的blocks,遍历读取blocks中的block。
步骤2.2:判断文本块中文本内容是否为文章注释内容。
具体步骤为:
步骤2.2.1:定义特征ruleAnnotationText,用以确认文本块中文本内容block[text]的格式。特征具体为以数字加单词开始或以特殊字符加单词开始。
步骤2.2.2:定义特征ruleAnnotationRect,用以确认文本块的位置范围。注释文本块的位置应位于页面的下方位置,具体表示为:
y0<α*page.rect.y (1)
y1<β*page.rect.y (2)
其中,y0和y1为文本块的坐标信息,如图3所示,page.rect.y表示该页面的高度信息,α、β是比例参数。
步骤2.2.3:将block[text]匹配特征ruleAnnotationText、ruleAnnotationRect,若同时满足特征,执行步骤2.7。若不满足,则执行步骤2.3。
步骤2.3:判断文本块中文本内容是否是页码。
具体如下:
步骤2.3.1:定义特征rulePage,用以确认文本块中文本内容block[text]的格式。特征具体为:文本内容只能是阿拉伯数字。
步骤2.3.2:定义特征rulePageRect,用以确认文本块坐标block[x0,y0,x1,y1]位置范围。页码文本块的位置应位于页面的下方位置,具体公式同公式1和公式2。
步骤2.3.3:将block[text]匹配特征rulePage、rulePageRect,若同时满足特征,执行步骤2.7。若不满足,则执行步骤2.4。
步骤2.4:判断文本块中文本内容是否为页眉。
具体如下:
步骤2.4.1:定义特征ruleHeader,用以确认文本块中文本内容block[text]的格式。特征具体为页眉中不能包含有标点符号。
步骤2.4.2:定义特征ruleHeaderRect,用以确认文本块坐标block[x0,y0,x1,y1]位置范围。页眉文本块的位置应位于页码的上方位置,具体公式为:
y0>m*page.rect.y (3)
y1>n*page.rect.y (4)
其中,y0和y1为文本块的坐标信息,如图3所示,page.rect.y是该页面的长度信息,m、n是比例参数。
步骤2.4.3:将block[text]匹配特征ruleHeader、ruleHeaderRect,若同时满足特征,执行步骤2.7。若不满足,则执行步骤2.5。
步骤2.5:判断文本块中文本内容是否为章标题。
具体如下:
步骤2.5.1:定义特征ruleParagraph,用以确认文本块中文本内容block[text]的格式。特征具体为文本内容由数字加单词组成或者数字加标点符号加单词组成,且其中不能包含标点符号。
步骤2.5.2:将block[text]匹配特征ruleParagraph,若满足特征,执行步骤2.7。若不满足,则执行步骤2.6。
步骤2.6:判断文本块中文本内容是否为小节标题。
具体如下:
步骤2.6.1:定义特征rulePassage,用以确认文本块中文本内容block[text]的格式。特征具体为文本内容由数字加点号再加数字加单词组成。
步骤2.6.2:将block[text]匹配特征rulePassage,若满足特征,执行步骤2.7。若不满足,则返回步骤2.1,继续循环下一个block。
步骤2.7:将该文本块所属页面pageNum、所属文本块位置blockNum以及文本块对应类型type,写入文档索引列表BlockIndex中。
步骤3:识别非文本内容,包括图形、表格和算法。
具体如下:
步骤3.1:定义图形、表格、算法等非文本内容对应的触发特征RuleNonTextList={RuleTable,RuleFigure,RuleAlgorithm,…}。
其中,RuleTable对应为表格特征,具体为以Table空格加数字开始;RuleFigure对应为图形特征,具体为以Figure空格加数字开始;RuleAlgorithm对应为算法特征,具体为以Algorithm空格加数字开始。
步骤3.2:循环遍历pages下的page,获取page下的blocks,遍历读取blocks中的block,当对应的block在BlockIndex中已标记,即被标记为注释、页眉页脚、页码、章标题中任意类型时,则跳过该block。
步骤3.3:根据特征RuleNonTextList匹配文本块中文本内容block[text],若符合特征,记录该文本块在文本块列表blocks中所属的序号blockNum,记为blockNum0。
步骤3.4:寻找图形、表格、算法的起始位置或结束位置。
具体如下:
步骤3.4.1:当为算法时,沿blockNum往下在blocks列表中按特征寻找算法的结束位置。对应的特征是:block[text]为文本段落、图形、表格、算法、章标题、小节标题中的某一种类型。记录对应的blockNum,记为blockNum1。
步骤3.4.2:当为图形或表格时,从blockNum往上在blocks列表中按特征寻找图形或表格的开始位置。对应的特征是:block[text]为文本段落、图形、表格、算法、章标题、小节标题中的某一种类型。记录对应的blockNum,记为blockNum1。
步骤3.5:确定坐标位置,将整个内容保存为图片。
具体如下:
步骤3.5.1:在当前页面中,获取文本块blocks[blockNum0]至blocks[blockNum1]所有文本块的坐标信息[x0,y0,x1,y1]。遍历这些位置信息列表,按公式(5)、(6)、(7)、(8)获取最终的位置坐标信息。
x00=min(x00,x0) (5)
y00=min (y00,y0) (6)
x11=max(x11,x1) (7)
y11=max(y11,y1) (8)
记录最终的位置坐标信息为[x00,y00,x11,y11]。
步骤3.5.2:根据位置坐标信息[x00,y00,x11,y11],将所属这个位置区域的内容截取,另存为图片。
步骤3.6:识别出图形、算法、以及表格后,将对应所属的文本块所属页面pageNum、所属文本块位置blockNum以及文本块类型type,写入文档索引列表BlockIndex中。
步骤4:将文本块按章节聚合。
具体如下:
步骤4.1:定义关键词表KeywordsDict,用以表示论文中固定的章标题如摘要、参考文献和致谢等关键词,用kwi表示。
步骤4.2:建立字典ParagraphDict,其中key值为章标题,value值为章内容,即ParagraphDict[key]=value。
步骤4.3:循环遍历pages下的page,获取page下的blocks,遍历读取blocks中的block,当对应的block在BlockIndex中已标记为注释、页码、页眉页脚信息时,则跳过该block。
步骤4.4:根据block的pageNum和blockNum查询BlockIndex,若BlockIndex[type]为章标题或者 block[text]=kwi,则将block[text]作为ParagraphDict的key值。若不是章标题,进入步骤4.5。
步骤4.5:读取文本块,将文本块作为步骤4.4中key值对应的value存入ParagraphDict中。若当前key值为空,则继续执行步骤4.4。
步骤4.6:循环执行步骤4.4和步骤4.5,直至文档结束。
步骤5:遍历章内容字典ParagraphDict,进行段落关系聚合。
具体如下:
步骤5.1:定义关键词表NonKeywordsDict,该字典定义了章内容中不需要进行内容切分的章,包括摘要、参考文献等。
步骤5.2:遍历ParagraphDict的key值,当key∈NonKeywordsDict,则跳过。
步骤5.3:读取key值对应的value值,遍历value中的blocks。
步骤5.4:判断文本块中的文本类型,并将原属同一段落的文本聚合为段落。
具体如下:
步骤5.4.1:定义特征ruleTextParagraph,用以判断文本是否是一个完整段落。特征具体为文本首字母是大写且最后以句号结束。
步骤5.4.2:定义特征ruleTextWords,用以判断文本是否是以完整单词结束的不完整段落。特征具体为文本首字母大写开始并包含标点符号,且文本中包含的句子数大于等于2,同时文本的结束词是一个完整单词。
步骤5.4.3:定义特征ruleTextNoWords,用以判断文本是否是以不完整单词结束的不完整段落。特征具体为文本首字母大写开始并包含标点符号,且文本中包含的句子数大于等于2,同时文本的结束词不是一个英文单词。
步骤5.4.4:定义特征ruleNextText,用以判断文本是否是上一不完整文本段落的下一文本。
具体为:
当上一段落以不完整单词结束时,将上一段落结束字符和该段落首字符组成为一个新的字符串,若该字符串为单词则其为上一不完整段落的下一文本。
当上一段落以完整单词结束时,该段落以完整单词开始且段落包含完整句子。
步骤5.4.5:定义上一段落类型标记符paragraphFlag,paragraphFlag={1,2,3,4},其中1为完整文本段落,2为以完整单词结束的不完整文本段落,3为以不完整单词结束的不完整文本段落,4为其他。
步骤5.4.6:依据BlockIndex索引判断当前文本块是否是小节标题,若是返回步骤5.3循环处理下一block。
步骤5.4.7:查看上一文本块类型paragraphFlag,当为完整段落时,则往下执行;否则进入步骤5.3.10。
步骤5.4.8:依据特征ruleTextParagraph判断文本块中文本是否是一个完整段落,若不是则进入下一步骤。若是进入步骤5.4.6继续执行,并将paragraphFlag标记为1。
步骤5.4.9:依据特征判断文本块中文本是否是不完整文本段落。首先依据特征ruleTextWords判断是否是以完整单词结束的不完整段落,若是进入步骤5.4.6,并将paragraphFlag标记为2,若不是则依据特征ruleTextNoWords判断是否是以部分单词结束的不完整段落,若是进入步骤5.4.6,并将paragraphFlag标记为3,若不是则将paragraphFlag标记为4,并进入步骤5.4.6。
步骤5.4.10:依据特征ruleNextText判断文本块中文本是否是上一不完整文本段落的下一文本。若是,将上一文本块文本和该文本块文本合并,进入步骤5.4.8依次执行后续步骤。若不是,将该文本块标记为其他。
步骤6:解析英文PDF格式论文,提取论文多粒度信息并保留各个粒度信息之间原有的关系。
步骤6.1:依据步骤1,将论文数据读取至block、blocks、page、pages中,并初始化typeSet、BlockIndex。
步骤6.2:依据步骤2,提取出论文中的注释信息、页眉信息、页脚信息、页码、章标题及小节标题,并将提取出的信息各自保存为文本。
步骤6.3:依据步骤3,提取出论文中非文本内容,包括图形、表格、算法等,并将这些内容各自截取为图片保存。
步骤6.4:依据步骤4,提取出论文中的章、节内容,将内容各自保存为文本。
步骤6.5:依据步骤5,提取出论文中的段落,将段落各自保存为文本。
步骤6.6:BlockIndex保留了各个粒度信息的原有位置关系,通过BlockIndex重建原有论文,能够查询各个粒度信息的上下文关系。
有益效果
本发明方法,与已有技术相比,其优点在于:
(1)与传统的论文信息处理停留在作者、参考文献等较粗粒度层面相比,本发明方法,将论文进行了更细粒度的解构,从中提取出图形、表格、算法等内容,并按章、节、段落对论文进行了内容切分,同时保留了它们的上下文关系和原有的联系。
(2)与传统论文的图形、表格提取方法相比,本发明仅通过文本内容之间的语义关联即可识别出对应的内容,无需依赖其他操作,具有效率更高、使用更方便的特点。
(3)与传统论文信息抽取方法相比,本发明利用了文本的位置信息,通过文本的位置信息辅助来判断文本类型,从而大大提高了识别的准确率。
附图说明
图1为方法的流程图;
图2为文档组织结构图;
图3为文本块位置信息示意图;
图4为注释、页眉、页码、章节标题识别流程图;
图5为图形、表格、算法识别流程图;
图6为文本段落聚合流程图;
图7为文本块block文本内容样例。
具体实施方式
下面结合附图和实施例,对本发明提出的英文论文内容切分及组织方法作详细地说明。本实施例将以一篇英文会议论文为例。
步骤1:定义数据结构,用以表示PDF格式英文论文(数据结构关系见附图2)。解构PDF格式论文,将解构数据写入数据结构中。具体操作为:
步骤1.1:定义数据结构。具体操作为:
步骤1.1.1:定义一个数组array,数组由包含五个元素组成,五个元素分别是左上角横坐标、左上角纵坐标、右下角横坐标、右下角纵坐标和文本信息,坐标信息用浮点数表示,文本信息用字符串表示。该数组用以表示文本块结构block(Block示意图见附图3)。即为:
block=array(float x0,float y0,float x1,float y1,string text)
步骤1.1.2:定义一个列表,用以表示blocks,列表元素是步骤1.1.1中定义的block,即:blocks=list(block0,block1,…,blocki)。
步骤1.1.3:定义一个数组array,用以表示rect,数组元素为页面宽度和页面高度,即rect=array(float x,floaty)。定义一个数组,用以表示page,数组元素为页面所含的blocks以及给页面的rect,即:page=array(blocks,rect)。
步骤1.1.4:定义一个列表list,用以表示pages,即:pages=list(page0,page1,…,pagei)。
步骤1.1.5:定义一个数组array,用以表示typeSet,数组元素为对应的类型字符串,即:typeSet=array(string,string,…)。
步骤1.1.6:定义一个数组array,用以表示BlockIndex,即:BlockIndex=array(′int pageNum+int blockNum′=>string type),其中pageNum为block所属的页面序号,blockNum为block所属的文本块序号,type为文本块所属的类型,即type∈typeSet。
步骤1.2:解构PDF格式论文,读取论文数据至定义好的数据结构中。
步骤1.2.1:利用python开源库PyMuPDF读取PDF格式论文。PyMuPDF是一个PDF格式分析器,用来阅读并解析PDF文件。通过PyMuPDF可将PDF文件切成不同的文本块,示例可见附图7。切分是按照原有文件中文本的距离决定的,如换行等等。
步骤1.2.2:处理PyMuPDF读取文件后的数据,依次按格式给block、blocks、page、pages赋值。
步骤1.2.3:给typeSet初始化,赋值为typeSet=array(‘注释’,’页眉’,’页码’,’图形’,’表格’,’算法’,’章标题’,’小节标题’)。
步骤2:识别出文本块中的注释信息、页眉信息、页脚信息、页码、章标题及小节标题。整体流程图见附图4所示。具体操作为:
步骤2.1:遍历pages,读取page中的blocks以及rect,依次遍历blocks中的block。
步骤2.2:判断文本块中文本内容是否是文章注释内容。具体步骤为:
步骤2.2.1:定义特征ruleAnnotationText,用以确认文本块中文本内容格式。具体特征为:以数字加单词开始或以特殊字符加单词开始,对应的正则表达式分别是”\d+\s[a-zA-Z]{2,}.*”和”[^a-zA-Z0-9][a-zA-Z]{2,}.*.$”。
步骤2.2.2:定义特征ruleAnnotationRect,用以确认文本块的位置范围,具体为:y0<α*page.rect.y及y1<β*page.rect.y,其中的α和β均取值为0.8。
步骤2.2.3:将block[text]匹配正则表达式ruleAnnotationText,若满足,判断其是否满足位置特征ruleAnnotationRect,若满足进入步骤2.7。若不满足则进行下一判断。
步骤2.3:判断文本块中文本内容是否是页码。具体步骤为:
步骤2.3.1:定义特征rulePage,用以确认文本块中文本内容的格式,具体特征为:文本内容为纯数字,对应的正则表达式为"^\d+$"。
步骤2.3.2:定义特征rulePageRect,用以确认文本块坐标位置范围,具体为:y0<α*page.rect.y及y1<β*page.rect.y,其中的α和β均取值为0.8。
步骤2.3.3:将block[text]匹配正则表达式rulePage,若满足,判断其是否满足位置特征rulePageRect,若满足进入步骤2.7。若不满足则进行下一判断。
步骤2.4:判断文本块中文本内容是否是页眉。具体步骤为:
步骤2.4.1:定义特征ruleHeader,用以确认文本块中文本内容的格式,具体特征为:页眉中不能含有标点符号,对应的正则表达式为".*.[,.].*"。
步骤2.4.2:定义特征ruleHeaderRect,用以确认文本块中的位置范围信息,具体为y0>m*page.rect.y及y1>n*page.rect.y,其中m和n取值为0.1。
步骤2.4.3:将block[text]匹配位置特征ruleHeaderRect,若满足,判断其是否满足特征ruleHeader,若满足进入步骤2.7。若不满足则进行下一判断。
步骤2.5:判断文本块中文本内容是否是章标题。具体步骤为:
步骤2.5.1:定义特征ruleParagraph,用以确认文本块中文本内容格式,具体特征为:(1)数字加单词组成或者数字加点号加单词组成,对应的正则表达式分别为"\d+\s+[A-Z][a-zA-Z].*$"和"\d+\.\s+[a-zA-Z].*$";(2)标题中不能存在标点符号。对应的正则表达式为".*.[,].*"。
步骤2.5.2:将block[text]匹配特征ruleParagraph,若满足特征,进入步骤2.7。若不满足则进入下一步骤。
步骤2.6:判断文本块中文本内容是否是小节标题。具体步骤为:
步骤2.6.1:定义特征rulePassage,用以确认文本块中文本内容格式,具体特征为数字加点号加数字加单词,对应的正则表达式为"^\d[.]\d\s[A-Za-z]{2,}"。
步骤2.6.2:将block[text]匹配特征rulePassage,若满足特征,进入步骤2.7。若不满足则进入步骤2.1继续循环下一block。
步骤2.7:将该文本块所属页面pageNum、所属文本块位置blockNum以及文本块对应类型type,写入文档索引列表BlockIndex中。
步骤3:识别出图形、表格、算法等非文本内容。整体流程图见附图5所示。具体操作为:
步骤3.1:定义图形对应的特征RuleFigure,具体为以Figure空格加数字开始,对应的正则表达式为"[Figure]+\s+\d"。定义表格对应的特征RuleTable,具体为以Table空格加数字开始,对应的正则表达式为"[Table]+\s+\d"。定义算法对应的特征RuleAlgorithm,具体为以Algorithm加空格加数字开始,对应的正则表达式为"[Algorithm]+\s+\d"。
步骤3.2:循环遍历pages下的page,获取page下的blocks,遍历读取blocks中的block,当对应的block在BlockIndex中已标记,即被标记为注释、页眉页脚、页码、章标题等等类型,则跳过该block。
步骤3.3:根据特征RuleFigure、RuleTable、RuleAlgorithm匹配文本块中文本内容block[text],若符合特征,记录该文本块在文本块列表blocks中所属的序号blockNum,记为blockNum0。
步骤3.4:寻找图形、表格、算法的起始位置或结束位置。具体为:
步骤3.4.1:当为算法时,沿blockNum往下在blocks列表中按特征寻找算法的结束位置。对应的特征是:block[text]为文本段落、图形、表格、算法、章标题、小节标题中的某一种类型。记录对应的blockNum,记为blockNum1。其中文本段落的判断特征为(1)首字母大写开始,以句号结束,对应的正则表达式为"^[A-Z].*[.]\d*$";或者(2)文本段中的包含的句子数量大于等于2。
步骤3.4.2:当为图形或表格时,从blockNum往上在blocks列表中按特征寻找图形或表格的开始位置。对应的特征是:block[text]为文本段落、图形、表格、算法、章标题、小节标题中的某一种类型。记录对应的blockNum,记为blockNum1。
步骤3.5:确定坐标位置,将整个内容保存为图片。具体为:
步骤3.5.1:在当前页面中,获取文本块blocks[blockNum0]至blocks[blockNum1]所有文本块的坐标信息[x0,y0,x1,y1]。遍历这些位置信息列表,按公式(5)、(6)、(7)、(8)获取最终的位置坐标信息。
x00=min(x00,x0) (5)
y00=min(y00,y0) (6)
x11=max(x11,x1) (7)
y11=max(y11,y1) (8)
记录最终的位置坐标信息为[x00,y00,x11,y11]。
步骤3.5.2:根据上一步骤中的坐标信息[x00,y00,x11,y11],获取该区域的像素,生成PNG文件并存储。
步骤3.6:识别出图形、算法、以及表格后,将对应所属的文本块所属页面pageNum、所属文本块位置blockNum以及文本块类型type,写入文档索引列表BlockIndex中。
步骤4:将文本块按章节聚合。具体操作为:
步骤4.1:定义关键词表KeywordsDict,用以表示论文中固定的章标题如摘要、参考文献和致谢等关键词,KeywordsDict={′abstract′,′references′,′acknowledgments′}。
步骤4.2:建立字典ParagraphDict,其中key值为章标题,value值为章内容,即ParagraphDict[key]=value。
步骤4.3:循环遍历pages下的page,获取page下的blocks,遍历读取blocks中的block,当对应的block在BlockIndex中已标记为注释、页码、页眉页脚信息时,则跳过该block。
步骤4.4:根据block的pageNum和blockNum查询BlockIndex,若BlockIndex[type]为章标题或者 block[text]∈KeywordsDict,则将block[text]作为ParagraphDict的key值。若不是章标题,进入步骤4.5。
步骤4.5:读取文本块,将文本块作为步骤4.4中key值对应的value存入ParagraphDict中。若当前key值为空,则继续执行步骤4.4。
步骤4.6:循环执行步骤4.4和步骤4.5,直至文档结束。
步骤5:遍历章内容字典ParagraphDict,进行段落关系聚合。流程图见附图6所示。具体操作为:
步骤5.1:定义关键词表NonKeywordsDict,该字典定义了章内容中不需要进行内容切分的章,具体为:NonKeywordsDict={′references′,′acknowledgments′}。
步骤5.2:遍历ParagraphDict的key值,当key∈NonKeywordsDict,则跳过。
步骤5.3:读取key值对应的value值,遍历value中的blocks。
步骤5.4:判断文本块中的文本类型,并将原属同一段落的文本聚合为段落。
步骤5.4.1:定义特征ruleTextParagraph,用以判断文本是否是一个完整段落。具体特征为首字母是大写且最后是以句号结束,对应的正则表达式为"^[A-Z].*[.]\d*$"。
步骤5.4.2:定义特征ruleTextWords,用以判断文本是否是以完整单词结束的不完整段落。具体特征为(1)以首字母大写开始并包含标点符号,对应的正则表达式为"^[A-Z].*.[,.].*";(2)文本段中包含的句子数大于等于2,通过nltk工具包tokenizer可以进行句子切分统计;(3)结束词是一个单词,通过nltk工具包WordNetLemmatizer可以实现。
步骤5.4.3:定义特征ruleTextNoWords,用以判断文本是否是以不完整单词结束的不完整段落。特征ruleTextNoWords包含ruleTextWords中前两条特征,第三条特征为结束词不是一个单词。
步骤5.4.4:定义特征ruleNextText,用以判断文本是否是上一不完整文本段落的下一文本。具体特征为:
(1)当上一段落以不完整单词结束时,将上一段落结束字符和该段落首字符组成为一个新的字符串,若该字符串为单词则其为上一不完整段落的下一文本;判断字符串是否为单词通过nltk工具包WordNetLemmatizer来实现。
(2)当上一段落以完整单词结束时,该段落以完整单词开始且段落包含完整句子。通过nltk工具包中的WordNetLemmatizer和tokenizer实现单词判断和句子统计。
步骤5.4.5:定义上一段落类型标记符paragraphFlag,paragraphFlag={1,2,3,4},其中1为完整文本段落,2为以完整单词结束的不完整文本段落,3为以不完整单词结束的不完整文本段落,4为其他。
步骤5.4.6:依据BlockIndex索引判断当前文本块是否是小节标题,若是返回步骤5.3循环处理下一block。
步骤5.4.7:查看上一文本块类型paragraphFlag,当为完整段落时,则往下执行;否则进入步骤5.3.10;
步骤5.4.8:依据特征ruleTextParagraph判断文本块中文本是否是一个完整段落,若不是则进入下一步骤。若是进入步骤5.4.6继续执行,并将paragraphFlag标记为1。
步骤5.4.9:依据特征判断文本块中文本是否是不完整文本段落。
首先依据特征ruleTextWords判断是否是以完整单词结束的不完整段落,若是进入步骤5.4.6,并将paragraphFlag标记为2。若不是则依据特征ruleTextNoWords判断是否是以部分单词结束的不完整段落,若是进入步骤5.4.6,并将paragraphFlag标记为3。若不是将paragraphFlag标记为4,并进入步骤5.4.6。
步骤5.4.10:依据特征ruleNextText,判断文本块中文本是否是上一不完整文本段落的下一文本。若是,将上一文本块文本和该文本块文本合并,进入步骤5.4.8依次执行后续步骤。若不是将该文本块标记为其他。
为了说明本发明方法的有效性,选择准确率评价的方式对本方法进行评价。准确率体现在三个具体指标上,分别是:图形、算法、表格识别率,注释、页眉、页码、章标题、小节标题识别率,段落聚合准确率。在本实施例中,通过标注100份英文PDF格式论文对应的内容,利用本发明方法对这100份论文进行处理,将得出的结果与标注数据进行比较来得出最后的指标。
在本实施例中,最终算得以上三个指标分别为98%、95%、92%,由此证明本发明方法的有效性。
上述描述对本发明的特征和方法进行了具体的说明,但应了解,在所述权利要求中定义的本发明并不局限于所述的具体特征或方法。本领域人员可在权利要求的范围内做出修改,并不影响本发明的实质内容。
Claims (2)
1.一种基于模式识别的英文论文文档多粒度内容处理方法,其特征在于,包括以下步骤:
步骤1:定义数据结构,用以表示PDF格式英文论文,具体如下:
解构PDF格式英文论文,将解构数据写入数据结构中;
步骤1.1:定义数据结构;
定义文本块结构block,用以存储文本块;
定义页面文本块列表blocks,用以存储本页面所有文本块block;
定义页面结构page,用以表示页面,对应论文中的每一页;
定义页面列表pages,用以存储文档中的所有页面page;
定义文本块block类型集合typeSet,包含文本块的所有类型种类;
定义文本块索引表BlockIndex,用以记录文本块所属的类型;
步骤1.2:解构PDF格式英文论文,读取论文数据,并送至定义好的数据结构中,具体如下:
步骤1.2.1:按页读取PDF格式英文论文,根据段落之间的距离,将文档内容切分为文本块,记录其坐标信息,并将内容转为文本;
步骤1.2.2:将步骤1.2.1中的数据分别赋值给对应的block、blocks、page、pages数据结构;
步骤1.2.3:初始化typeSet、BlockIndex;
步骤2:识别出文本块中的注释信息、页眉信息、页脚信息、页码、章标题及小节标题,具体如下:
步骤2.1:循环遍历pages下的page,获取page下的blocks,遍历读取blocks中的block;
步骤2.2:判断文本块中文本内容是否为文章注释内容;
具体步骤为:
步骤2.2.1:定义特征ruleAnnotationText,用以确认文本块中文本内容block[text]的格式,特征具体包括以数字加单词开始、以特殊字符加单词开始。
步骤2.2.2:定义特征ruleAnnotationRect,用以确认文本块的位置范围,注释文本块的位置位于页面的下方位置,具体表示为:
y0<α*page.rect.y (1)
y1<β*page.rect.y (2)
其中,y0和y1为文本块的坐标信息,page.rect.y表示该页面的高度信息,α、β是比例参数;
步骤2.2.3:将block[text]匹配特征ruleAnnotationText、ruleAnnotationRect,若同时满足特征,执行步骤2.7,若不满足,则执行步骤2.3;
步骤2.3:判断文本块中文本内容是否是页码,具体如下:
步骤2.3.1:定义特征rulePage,用以确认文本块中文本内容block[text]的格式,特征具体为:文本内容只能是阿拉伯数字;
步骤2.3.2:定义特征rulePageRect,用以确认文本块坐标block[x0,y0,x1,y1]位置范围,页码文本块的位置应位于页面的下方位置,具体公式同公式1和公式2;
步骤2.3.3:将block[text]匹配特征rulePage、rulePageRect,若同时满足特征,执行步骤2.7;若不满足,则执行步骤2.4;
步骤2.4:判断文本块中文本内容是否为页眉,具体如下:
步骤2.4.1:定义特征ruleHeader,用以确认文本块中文本内容block[text]的格式,特征具体为:页眉中不能包含有标点符号;
步骤2.4.2:定义特征ruleHeaderRect,用以确认文本块坐标block[x0,y0,x1,y1]位置范围,页眉文本块的位置应位于页码的上方位置,具体公式为:
y0>m*page.rect.y (3)
y1>n*page.rect.y (4)
其中,y0和y1为文本块的坐标信息,page.rect.y是该页面的长度信息,m、n是比例参数;
步骤2.4.3:将block[text]匹配特征ruleHeader、ruleHeaderRect,若同时满足特征,执行步骤2.7;若不满足,则执行步骤2.5;
步骤2.5:判断文本块中文本内容是否为章标题,具体如下:
步骤2.5.1:定义特征ruleParagraph,用以确认文本块中文本内容block[text]的格式,特征具体包括:文本内容由数字加单词组成、由数字加标点符号加单词组成,且其中不能包含标点符号;
步骤2.5.2:将block[text]匹配特征ruleParagraph,若满足特征,执行步骤2.7;若不满足,则执行步骤2.6;
步骤2.6:判断文本块中文本内容是否为小节标题,具体如下:
步骤2.6.1:定义特征rulePassage,用以确认文本块中文本内容block[text]的格式,特征具体为文本内容由数字加点号再加数字加单词组成;
步骤2.6.2:将block[text]匹配特征rulePassage,若满足特征,执行步骤2.7;若不满足,则返回步骤2.1,继续循环下一个block;
步骤2.7:将该文本块所属页面pageNum、所属文本块位置blockNum以及文本块对应类型type,写入文档索引列表BlockIndex中;
步骤3:识别非文本内容,包括图形、表格和算法,具体如下:
步骤3.1:定义非文本内容对应的触发特征RuleNonTextList={RuleTable,RuleFigure,RuleAlgorithm,…};
其中,RuleTable对应为表格特征,具体为以Table空格加数字开始;RuleFigure对应为图形特征,具体为以Figure空格加数字开始;RuleAlgorithm对应为算法特征,具体为以Algorithm空格加数字开始;
步骤3.2:循环遍历pages下的page,获取page下的blocks,遍历读取blocks中的block,当对应的block在BlockIndex中已标记,即被标记为注释、页眉页脚、页码、章标题中任意类型时,则跳过该block;
步骤3.3:根据特征RuleNonTextList匹配文本块中文本内容block[text],若符合特征,记录该文本块在文本块列表blocks中所属的序号blockNum,记为blockNum0;
步骤3.4:寻找非文本内容的起始位置或结束位置,具体如下:
步骤3.4.1:当为算法时,沿blockNum往下在blocks列表中按特征寻找算法的结束位置;对应的特征是:block[text]为文本段落、图形、表格、算法、章标题、小节标题中的某一种类型;记录对应的blockNum,记为blockNum1;
步骤3.4.2:当为图形或者表格时,从blockNum往上在blocks列表中按特征寻找图形或表格的开始位置;对应的特征是:block[text]为文本段落、图形、表格、算法、章标题、小节标题中的某一种类型;记录对应的blockNum,记为blockNum1;
步骤3.5:确定坐标位置,将整个内容保存为图片,具体如下:
步骤3.5.1:在当前页面中,获取文本块blocks[blockNum0]至blocks[blockNum1]所有文本块的坐标信息[x0,y0,x1,y1];遍历这些位置信息列表,按公式(5)、(6)、(7)、(8)获取最终的位置坐标信息;
x00=min(x00,x0) (5)
y00=min(y00,y0) (6)
x11=max(x11,x1) (7)
y11=max(y11,y1) (8)
记录最终的位置坐标信息为[x00,y00,x11,y11];
步骤3.5.2:根据位置坐标信息[x00,y00,x11,y11],将所属这个位置区域的内容截取,另存为图片;
步骤3.6:识别出非文本内容后,将对应所属的文本块所属页面pageNum、所属文本块位置blockNum以及文本块类型type,写入文档索引列表BlockIndex中;
步骤4:将文本块按章节聚合,具体如下:
步骤4.1:定义关键词表KeywordsDict,用以表示论文中固定的章标题关键词,用kwi表示;
步骤4.2:建立字典ParagraphDict,其中key值为章标题,value值为章内容,即ParagraphDict[key]=value;
步骤4.3:循环遍历pages下的page,获取page下的blocks,遍历读取blocks中的block,当对应的block在BlockIndex中已标记为注释、页码、页眉页脚信息时,则跳过该block;
步骤4.4:根据block的pageNum和blockNum查询BlockIndex,若BlockIndex[type]为章标题或者block[text]=kwi,则将block[text]作为ParagraphDict的key值;若不是章标题,进入步骤4.5;
步骤4.5:读取文本块,将文本块作为步骤4.4中key值对应的value存入ParagraphDict中;若当前key值为空,则继续执行步骤4.4;
步骤4.6:循环执行步骤4.4和步骤4.5,直至文档结束;
步骤5:遍历章内容字典ParagraphDict,进行段落关系聚合,具体如下:
步骤5.1:定义关键词表NonKeywordsDict,该字典定义了章内容中不需要进行内容切分的章;
步骤5.2:遍历ParagraphDict的key值,当key∈NonKeywordsDict,则跳过;
步骤5.3:读取key值对应的value值,遍历value中的blocks;
步骤5.4:判断文本块中的文本类型,并将原属同一段落的文本聚合为段落,具体如下:
步骤5.4.1:定义特征ruleTextParagraph,用以判断文本是否是一个完整段落;特征具体为文本首字母是大写且最后以句号结束;
步骤5.4.2:定义特征ruleTextWords,用以判断文本是否是以完整单词结束的不完整段落;特征具体为文本首字母大写开始并包含标点符号,且文本中包含的句子数大于等于2,同时文本的结束词是一个完整单词;
步骤5.4.3:定义特征ruleTextNoWords,用以判断文本是否是以不完整单词结束的不完整段落;特征具体为文本首字母大写开始并包含标点符号,且文本中包含的句子数大于等于2,同时文本的结束词不是一个英文单词;
步骤5.4.4:定义特征ruleNextText,用以判断文本是否是上一不完整文本段落的下一文本,具体为:
当上一段落以不完整单词结束时,将上一段落结束字符和该段落首字符组成为一个新的字符串,若该字符串为单词则其为上一不完整段落的下一文本;
当上一段落以完整单词结束时,该段落以完整单词开始且段落包含完整句子;
步骤5.4.5:定义上一段落类型标记符paragraphFlag,paragraphFlag={1,2,3,4},其中1为完整文本段落,2为以完整单词结束的不完整文本段落,3为以不完整单词结束的不完整文本段落,4为其他;
步骤5.4.6:依据BlockIndex索引判断当前文本块是否是小节标题,若是返回步骤5.3循环处理下一block;
步骤5.4.7:查看上一文本块类型paragraphFlag,当为完整段落时,则往下执行;否则进入步骤5.3.10;
步骤5.4.8:依据特征ruleTextParagraph判断文本块中文本是否是一个完整段落,若不是则进入下一步骤;若是进入步骤5.4.6继续执行,并将paragraphFlag标记为1;
步骤5.4.9:依据特征判断文本块中文本是否是不完整文本段落;首先,依据特征ruleTextWords判断是否是以完整单词结束的不完整段落,若是进入步骤5.4.6,并将paragraphFlag标记为2,若不是则依据特征ruleTextNoWords判断是否是以部分单词结束的不完整段落,若是进入步骤5.4.6,并将paragraphFlag标记为3,若不是则将paragraphFlag标记为4,并进入步骤5.4.6;
步骤5.4.10:依据特征ruleNextText判断文本块中文本是否是上一不完整文本段落的下一文本;若是,将上一文本块文本和该文本块文本合并,进入步骤5.4.8依次执行后续步骤;若不是,将该文本块标记为其他;
步骤6:解析英文PDF格式论文,提取论文多粒度信息并保留各个粒度信息之间原有的关系;
步骤6.1:依据步骤1,将论文数据读取至block、blocks、page、pages中,并初始化typeSet、BlockIndex;
步骤6.2:依据步骤2,提取出论文中的注释信息、页眉信息、页脚信息、页码、章标题及小节标题,并将提取出的信息各自保存为文本;
步骤6.3:依据步骤3,提取出论文中非文本内容,包括图形、表格、算法,并将这些内容各自截取为图片保存;
步骤6.4:依据步骤4,提取出论文中的章、节内容,将内容各自保存为文本;
步骤6.5:依据步骤5,提取出论文中的段落,将段落各自保存为文本;
步骤6.6:BlockIndex保留了各个粒度信息的原有位置关系,通过BlockIndex重建原有论文,能够查询各个粒度信息的上下文关系。
2.如权利要求1所述的一种基于模式识别的英文论文文档多粒度内容处理方法,其特征在于,步骤1.1中,文本块结构block的具体格式为:block[x0,y0,x1,y1,text],其中,x0,y0,x1,y1对应文本块的位置坐标信息,text为文本块的文字信息;
页面文本块列表blocks的具体格式为:blocks={block0,block1,…,blocki},其中,i为block在blocks中的序号,记为blockNum;
页面结构page的具体格式为:page[blocks,rect],其中,rect为页面尺寸信息,具体格式为rect[x,y],x为页面宽度,y为页面高度;
页面列表pages的具体格式为:pages={page0,page1,…,pagej},其中,j为page在pages中的序号,记为pageNum;
文本块block类型集合typeSet的具体格式为:typeSet={type0,type1,…,typei},其中,typei对应不同的文本块类型。
文本块索引表BlockIndex的具体格式为:BlockIndex[pageNum,blockNum,type],其中,pageNum为block所属的页面序号,blockNum为block所属的文本块序号,type为文本块所属类型,type∈typeSet。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011474201.7A CN112597267B (zh) | 2020-12-14 | 2020-12-14 | 一种基于模式识别的英文论文文档多粒度内容处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011474201.7A CN112597267B (zh) | 2020-12-14 | 2020-12-14 | 一种基于模式识别的英文论文文档多粒度内容处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112597267A true CN112597267A (zh) | 2021-04-02 |
CN112597267B CN112597267B (zh) | 2022-09-20 |
Family
ID=75196499
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011474201.7A Active CN112597267B (zh) | 2020-12-14 | 2020-12-14 | 一种基于模式识别的英文论文文档多粒度内容处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112597267B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113448918A (zh) * | 2021-08-31 | 2021-09-28 | 中国建筑第五工程局有限公司 | 一种企业科研成果管理方法及管理平台、设备、存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1687926A (zh) * | 2005-04-18 | 2005-10-26 | 福州大学 | 一种基于xml的pdf文档信息抽取系统的方法 |
US20080263032A1 (en) * | 2007-04-19 | 2008-10-23 | Aditya Vailaya | Unstructured and semistructured document processing and searching |
CN107145479A (zh) * | 2017-05-04 | 2017-09-08 | 北京文因互联科技有限公司 | 基于文本语义的篇章结构分析方法 |
-
2020
- 2020-12-14 CN CN202011474201.7A patent/CN112597267B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1687926A (zh) * | 2005-04-18 | 2005-10-26 | 福州大学 | 一种基于xml的pdf文档信息抽取系统的方法 |
US20080263032A1 (en) * | 2007-04-19 | 2008-10-23 | Aditya Vailaya | Unstructured and semistructured document processing and searching |
CN107145479A (zh) * | 2017-05-04 | 2017-09-08 | 北京文因互联科技有限公司 | 基于文本语义的篇章结构分析方法 |
Non-Patent Citations (2)
Title |
---|
ZHIZHANG HU: "Inferring finer-grained human information with multi-modal cross-granularity learning: PhD forum abstract", 《PROCEEDINGS OF THE 18TH CONFERENCE ON EMBEDDED NETWORKED SENSOR SYSTEMS》 * |
张秀秀等: "PDF科技论文语义元数据的自动抽取研究", 《现代图书情报技术》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113448918A (zh) * | 2021-08-31 | 2021-09-28 | 中国建筑第五工程局有限公司 | 一种企业科研成果管理方法及管理平台、设备、存储介质 |
CN113448918B (zh) * | 2021-08-31 | 2021-11-12 | 中国建筑第五工程局有限公司 | 一种企业科研成果管理方法及管理平台、设备、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112597267B (zh) | 2022-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Giotis et al. | A survey of document image word spotting techniques | |
US5748805A (en) | Method and apparatus for supplementing significant portions of a document selected without document image decoding with retrieved information | |
US5325444A (en) | Method and apparatus for determining the frequency of words in a document without document image decoding | |
US7756871B2 (en) | Article extraction | |
EP0544432B1 (en) | Method and apparatus for document processing | |
CN109933796B (zh) | 一种公告文本关键信息提取方法及设备 | |
EP0544431A2 (en) | Methods and apparatus for selecting semantically significant images in a document image without decoding image content | |
EP0544433A2 (en) | Method and apparatus for document image processing | |
US20120041955A1 (en) | Enhanced identification of document types | |
JPH11250041A (ja) | 文書処理装置および文書処理方法 | |
Singh et al. | OCR++: a robust framework for information extraction from scholarly articles | |
CN110704570A (zh) | 一种连续页版式文档结构化信息提取方法 | |
Shatri et al. | Optical music recognition: State of the art and major challenges | |
Clausner et al. | ICDAR2019 competition on recognition of early Indian printed documents–REID2019 | |
JP2007122403A (ja) | 文書タイトルおよび関連情報の自動抽出装置、抽出方法および抽出プログラム | |
Naoum et al. | Article segmentation in digitised newspapers with a 2d markov model | |
CN112597267B (zh) | 一种基于模式识别的英文论文文档多粒度内容处理方法 | |
Boukhers et al. | Mexpub: Deep transfer learning for metadata extraction from german publications | |
Dölek et al. | A deep learning model for Ottoman OCR | |
Tateisi et al. | Using stochastic syntactic analysis for extracting a logical structure from a document image | |
CN100444194C (zh) | 文章标题及关联信息的自动抽取装置和抽取方法 | |
Kamola et al. | Image-based logical document structure recognition | |
Ghosh et al. | Text box proposals for handwritten word spotting from documents | |
Hartel et al. | An ocr pipeline and semantic text analysis for comics | |
CN111340029A (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 |