Python 2.7 如何从pdf中提取特定标题下的文本?

Python 2.7 如何从pdf中提取特定标题下的文本?,python-2.7,pdf,document,text-extraction,pdf-extraction,Python 2.7,Pdf,Document,Text Extraction,Pdf Extraction,我想使用python从pdf中提取特定标题下的文本 例如,我有一个pdf,标题有介绍、摘要和内容。我只需要提取“摘要”标题下的文本 我该怎么做 这个场景正是我在当前公司所做的。我们需要提取标题下的文本。我个人使用的是一个基于规则的系统,也就是说,在逐行阅读整个文档之后,使用正则表达式识别所有编号的标题。一旦我有了标题,我就输入我想找到相应段落的标题的名称。此输入与预先存在的标题列表匹配,并使用通用句子编码器查找最接近的匹配项。之后,我只显示从该标题到下一个标题的所有内容。Pdf是非结构化文本,因

我想使用python从pdf中提取特定标题下的文本

例如,我有一个pdf,标题有介绍、摘要和内容。我只需要提取“摘要”标题下的文本

我该怎么做


这个场景正是我在当前公司所做的。我们需要提取标题下的文本。我个人使用的是一个基于规则的系统,也就是说,在逐行阅读整个文档之后,使用正则表达式识别所有编号的标题。一旦我有了标题,我就输入我想找到相应段落的标题的名称。此输入与预先存在的标题列表匹配,并使用通用句子编码器查找最接近的匹配项。之后,我只显示从该标题到下一个标题的所有内容。

Pdf是非结构化文本,因此没有直接提取数据的标记。因此,我们使用正则表达式从文本语料库中找到所需的信息。 使用以下代码提取原始页面文本

import fitz
page = pdf_file.loadPage(0) # 0 represents the page number... upto n-1 pages...
dl = page.getDisplayList()
tp = dl.getTextPage()
tp_text=tp.extractText()
re.split('\n\d+.+[ \t][a-zA-Z].+\n',tp_text)
然后根据需要应用正则表达式。。。(这对我来说很有用,但您可能需要也可能不需要更改它)

我给出了一个详细的例子,说明这将如何工作

re.findall('\n\d+.+[\t][a-zA-Z].+\n',“一些文本\n1.标题1\n标题1\n1.2.3标题2\n标题2”)

输出:['\n1.标题1\n','\n1.2.3标题2\n']

您可以使用
re.split
按标题拆分文本并检索所需的标题文本

re.split('\n\d+.+[\t][a-zA-Z].+\n',“一些文本\n1.标题1\n标题1\n1.2.3标题2\n标题2”)

输出:['一些文本','第1段','图表2']


简单的第i个标题将包含(i+1)标题文本。

我发现使用正则表达式的最佳方法

regex = r"^\d+(?:\.\d+)* .*(?:\r?\n(?!\d+(?:\.\d+)* ).*)*"
print(re.findall(regex,samplestring, re.M))


因为我不喜欢用python处理PDF,所以我无法给出答案;不过,了解一下PDF,让我来提示一些困难:您的示例文件有两个文本列。不过,这并不一定反映在内部PDF内容中。根据文档本身,很可能存在任务的解决方案;不过,为了提供匹配的解决方案,最好提供有问题的PDF。否则,人们可能会提出适用于类似文档的解决方案,而不是您的解决方案。或者不提供解决方案,因为他们无法测试它是否匹配。@Midhun开始悬赏可能是个好主意,但即使这样,OP也需要合作,Alfiya没有回复usr2564301在Ankit的回答中的评论,在该评论中使用提示是否解决了问题。你能得到解决方案吗?@user2999110嘿,我能理解,regex是唯一的解决方案。但我找不到任何解决方案来处理标题格式不可预测的pdf。在这种情况下,regex无法工作。请添加代码片段并解释其步骤,以便更好地理解?