掌桥专利:专业的专利平台
掌桥专利
首页

一种基于pdfplumber的PDF商务文件文本关键词提取方法及设备

文献发布时间:2024-04-18 20:00:50


一种基于pdfplumber的PDF商务文件文本关键词提取方法及设备

技术领域

本发明涉及文本处理技术领域,尤其涉及一种基于pdfplumber的PDF商务文件文本关键词提取方法、装置、设备及存储介质。

背景技术

商务文件通常包括以下内容:企业简介及资质、法人代表委托书、法人及代理人身份证明、企业业绩等。其中最先关注的是企业简介及资质,包括名称、招标编号、营业执照等基本信息。

PDF(Portable Document Format,便携式文档格式)是由Adobe Systems公司在21世纪末发展出来的用于文件交换的一种文件格式,因为其出色的跨平台性和能保留文件原有格式以及兼容多种开放标准,使得它成为在互联网上进行电子文档发行和数字化信息传播的理想文档格式。本技术要处理的就是PDF商务文件。

pdfplumber是一个可以处理pdf格式信息的库。可以查找关于每个文本字符、矩阵、和行的详细信息,也可以对表格进行提取并进行可视化调试。在机器生成而不是扫描的PDF上效果最好。基于pdfminer.six构建。本库最重要的应用是提取页面上的文本和表格。

关键文本信息提取是指从一段文本(通常较长)中自动提取文本中关键信息的过程,通常来说关键信息是指该文本涉及的主要对象和对象的独特属性等信息。

由于PDF文件内部没有包含其显示版面上的物理结构和内容的逻辑结构,因此采用程序解析PDF文档提取信息的方式比较困难。目前,与本发明相接近的现有技术通常直接使用pdfplumber的识别结果作为提取结果,优化较少;且没有针对商务投标文件做专门的关键信息模式匹配。因此,存在以下几种缺点:

效率低:除非PDF中的文字排布非常规整,pdfplumber的提取结果才能直接使用。而商务文件中每页的文字排布往往无规律性,导致使用pdfplumber的同类技术提取出的文字格式混乱,夹杂了许多空格、换行。我们对这些混乱做了优化,使得结果规整,能够更有效地用到之后模式对比的步骤中。

误差大:即使去除了格式混乱,直接用pdfplumber作为提取器提取,结果中的部分文字会识别错误。我们对提取结果做了后处理,精简检索某一项信息时的关键字,提高最终识别结果的鲁棒性。

功能少:由于PDF文件内部没有包含其显示版面上的物理结构和内容的逻辑结构,因此采用程序解析PDF文档提取信息的方式比较困难。目前,市面上暂无专门提取PDF商务投标文件中关键信息的软件;关键文本信息的提取依然通常采用人工提取的方式,显然有时间、人力成本高昂的缺点。

发明内容

本发明提供一种基于pdfplumber的PDF商务文件文本关键词提取方法、装置、设备及存储介质,旨在克服现有的提取商务文件中项目基本信息关键词以及表格关键词方法的不足,需要结合多页pdf的提取结果整合出完整信息,并且对pdfplumber的提取结果进行优化,提高准确率及提取效率。

为此,本发明的目的在于提出一种基于pdfplumber的PDF商务文件文本关键词提取方法,包括:

选定PDF商务文件,以页为单位,通过pdfplumber提取PDF商务文件每一页中的所有文本;

对通过pdfplumber的提取的PDF商务文件每一页中的所有文本进行优化;

根据项目基本信息关键词提取功能或表格关键词提取功能,在优化后的PDF商务文件每一页中的所有文本中提取信息关键词或表格关键词。

其中,选定PDF商务文件,以页为单位,通过pdfplumber提取PDF商务文件每一页中的所有文本,包括:

以手动或pdfplumber程序自动选择,选定PDF商务文件;

通过pdfplumber程序打开并读取PDF商务文件,得到PDF商务文件的PDF类(class);处理得到PDF商务文件的所有文本。

其中,pdfplumber程序包括pdfplumber库,其顶级pdfplogur.PDF类,表示单个PDF,并具有两个属性:

.metadata属性,表示元数据键/值对的字典,取自PDF的“info”值,包括“CreationDate”、“ModDate”和“Producer”;

.pages属性,表示一个列表,包含每个加载页面的一个pdfplumber.Page实例。

其中,对通过pdfplumber的提取的PDF商务文件每一页中的所有文本进行优化,包括:

使用python中的str.replace()函数,去除PDF商务文件每一页中的所有文本中多余的换行和空格;

处理PDF商务文件每一页中的所有文本中中None的情况,得到连贯的字符串content。

其中,根据项目基本信息关键词提取功能或表格关键词提取功能,在优化后的PDF商务文件每一页中的所有文本中提取信息关键词或表格关键词,包括:

对于提取项目基本信息关键词,根据PDF商务文件中的信息文本的结构特点,编写正则表达式;

对于提取表格名称关键词,在得到规范化的整页文本提取结果,即连贯的字符串content,通过程序循环,在PDF商务文件中的每页比对文本content和可能存在的待提取表格名称并进行提取。

其中,正则表达式具有模糊匹配功能,即可以匹配不同写法、但表示同一意思的关键词,以增强整个提取程序的提取成功率;

在得到规范化的整页文本提取结果后,通过pdfplumber程序循环提取每页中的项目基本信息关键词,将关键词整合。

其中,根据PDF商务文件中的信息文本的结构特点,编写正则表达式,包括:

针对每一项需要的项目基本信息,解析对应的编写好的特定正则表达式;将整页文本内容,即优化过的连贯字符串content与之做匹配;

如果匹配成功,即此页文本内容中包含设定的关键词,对关键词进行提取记录;

通过pdfplumber程序将全部关键词进行整合,完成整个项目基本信息关键词的提取。

此外,本发明的目的还在于提出一种基于pdfplumber的PDF商务文件文本关键词提取装置,包括:

文本提取模块,用于选定PDF商务文件,以页为单位,通过pdfplumber提取PDF商务文件每一页中的所有文本;

文本优化模块,用于对通过pdfplumber的提取的PDF商务文件每一页中的所有文本进行优化;

关键词提取模块,用于根据项目基本信息关键词提取功能或表格关键词提取功能,在优化后的PDF商务文件每一页中的所有文本中提取信息关键词或表格关键词。

本发明的目的还在于提出一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时,实现如前述技术方案任一的方法。

本发明的目的还在于提出一种非临时性计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如前述技术方案的方法。

区别于现有技术,本发明提供的基于pdfplumber的PDF商务文件文本关键词提取方法,通过逐页扫描PDF商务文件,用pdfplumber做提取操作;对直接提取出的结果做处理,使得文字串规范化;根据项目基本信息关键词提取功能或表格关键词提取功能,做不同处理。前者的关键步骤是创建正则表达式,再用正则表达式与本页提取结果做模式匹配;后者的关键步骤是根据提取结果与欲提取表格的关键词做匹配,从而判断是否需要进行提取表格动作,或提取表格后检查表格合法性。通过本发明,能够克服现有的提取商务文件中项目基本信息关键词以及表格关键词方法的不足,需要结合多页pdf的提取结果整合出完整信息,并且对pdfplumber的提取结果进行优化,提高准确率及提取效率。

附图说明

本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1是本发明提供的一种基于pdfplumber的PDF商务文件文本关键词提取方法的流程示意图。

图2是本发明提供的一种基于pdfplumber的PDF商务文件文本关键词提取方法中基本项目信息文本关键词提取流程示意图。

图3是本发明提供的一种基于pdfplumber的PDF商务文件文本关键词提取方法中表格名称关键词提取流程示意图。

图4是本发明提供的一种基于pdfplumber的PDF商务文件文本关键词提取装置的结构示意图。

图5是本发明提供的一种存储有计算机指令的非瞬时计算机可读存储介质的结构示意图。

具体实施方式

下面详细描述本发明的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。

下面参考附图描述本发明实施例的一种基于pdfplumber的PDF商务文件文本关键词提取方法。

图1为本发明实施例所提供的一种基于pdfplumber的PDF商务文件文本关键词提取方法的流程示意图。该方法的实现步骤如下:

步骤110:选定PDF商务文件,以页为单位,通过pdfplumber提取PDF商务文件每一页中的所有文本。

以手动或pdfplumber程序自动选择,选定PDF商务文件;通过pdfplumber程序打开并读取PDF商务文件,得到PDF商务文件的PDF类(class);处理得到PDF商务文件的所有文本。

其中,pdfplumber程序包括pdfplumber库,其顶级pdfplogur.PDF类,表示单个PDF,并具有两个属性:

.metadata属性,表示元数据键/值对的字典,取自PDF的“info”值,包括“CreationDate”、“ModDate”和“Producer”;

.pages属性,表示一个列表,包含每个加载页面的一个pdfplumber.Page实例。如表1所示:

表1 pdfplogur.PDF类属性表

得到本页所有文本的操作函数如下:

page=pdfplumber.open(path).pages[i]

pageContent=page.extract_text()

步骤120:对通过pdfplumber的提取的PDF商务文件每一页中的所有文本进行优化。

由于pdfplumber本身固有的缺陷,其对于商务文件这种文字排布复杂的PDF文件的直接提取结果不佳,往往伴随着过多混乱的换行、空格,对后续进一步提取关键词不利,因此这步对pdfplumber直接提取结果做了优化,使用python中的str.replace()函数去除了多余的换行和空格,并处理了提取结果中None的情况,得到一个连贯的字符串content。

步骤130:根据项目基本信息关键词提取功能或表格关键词提取功能,在优化后的PDF商务文件每一页中的所有文本中提取信息关键词或表格关键词。

根据提取关键词功能的不同采用了不同技术方法。如图2所示,对于提取项目基本信息关键词,首先根据商务文件中项目编号、项目名称、投标人名称、日期和营业执照号、统一社会信用代码等信息文本的结构特点,编写特定的正则表达式。编写的正则表达式具有模糊匹配功能,即可以匹配不同写法、但表示同一意思的关键词,以增强整个提取程序的提取成功率。

包含投标人名称关键词的文本编码为正则表达式如下:

bid_name:"[u4e00-u9fa5()()]+公司|[u4e00-u9fa5()()]+[事务研究院所]{3}"

包含日期关键词的文本编码为正则表达式如下:

date1:"[0-9]{4}[]*[年][]*[01]?[0-9][]*[月][]*[0123]?[0-9][]*[日]"

date2:"(?:[一二三四五六七八九十零〇O0]{1,4}年[零一二三四五六七八九十]{1,2}月

[零一二三四五六七八九十]{1,3}日)"

在得到规范化的整页文本提取结果后,通过程序循环提取每页中的项目基本信息关键词,之后将这些关键词整合在一起。其中,对于提取每页的项目基本信息,使用的操作函数如下:

getProjectInfo(pdfplumber.open(path).pages[i],res_datas)

它包含了读取上一步提取的整页文本功能,以及关键功能:模式匹配。模式匹配中,针对每一项需要的项目基本信息,解析对应的编写好的特定正则表达式;再将整页文本内容,即优化过的连贯字符串content与之做匹配。例如,文本与投标人名称的正则表达式模式匹配函数如下:

pattern=self.tablePattern["bid_name"]

names=re.compile(pattern).findall(content)

如果匹配成功,即此页文本内容中有想要的关键词,则记录下来。在最后一步中,通过程序将这些关键词整合在一起,完成整个项目基本信息关键词的提取。

如图3所示,对于提取表格名称关键词,在得到规范化的整页文本提取结果,即字符串content后,通过程序循环,在商务文件中的每页比对文本content和可能存在的待提取表格名称,以判断这页是否包含“财务状况表”、“资产负债表”、“损益表”、“现金流量表”和“业绩表”中的一个或多个。如果包含,则从这页的文本中提取出来。操作函数如下:

getTableTitle(keywords,content)

其中,keywords是一个字典,包含了表示各个表格名称的关键词。由于商务文件中表示同一种表格的名称可能有不同的写法,以及pdfplumber会有概率将文字识别错误,我们针对一种表格名称编写了多个对应的关键词,以增强整个提取程序的提取成功率。例如,“财务状况表”对应的关键词有以下两个:

["财务状况表","财务报表"]

提取出的表格名称关键字为整个程序之后的步骤提供了依据。当本页文本中含有表格名称关键词时,程序将这页交给提取表格的专用程序处理;若本页不含任何表格名称的关键词,则继续循环处理下一页。

如图4所示,本发明还提供了一种基于pdfplumber的PDF商务文件文本关键词提取装置,包括:

文本提取模块310,用于选定PDF商务文件,以页为单位,通过pdfplumber提取PDF商务文件每一页中的所有文本;

文本优化模块320,用于对通过pdfplumber的提取的PDF商务文件每一页中的所有文本进行优化;

关键词提取模块330,用于根据项目基本信息关键词提取功能或表格关键词提取功能,在优化后的PDF商务文件每一页中的所有文本中提取信息关键词或表格关键词。

为了实现实施例,本发明还提出一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行前述技术方案的基于pdfplumber的PDF商务文件文本关键词提取方法中的各步骤。

如图5所示,非临时性计算机可读存储介质包括指令的存储器810,接口830,指令可由根据基于pdfplumber的PDF商务文件文本关键词提取处理器820执行以完成方法。可选地,存储介质可以是非临时性计算机可读存储介质,例如,非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。

为了实现实施例,本发明还提出一种非临时性计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如本发明实施例的基于pdfplumber的PDF商务文件文本关键词提取。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

相关技术
  • 一种智能吊钩式抛丸清理机
  • 一种锚链抛丸清理机及使用方法
  • 铸钢锚链抛丸清理机
技术分类

06120116540396