当前位置: 首页 > 知识库问答 >
问题:

使用Python在PDF中搜索文本?

公孙盛
2023-03-14

问题
我试图通过搜索文本来确定文档是什么类型(例如恳求、通信、传票等),最好使用python。所有的PDF都是可搜索的,但是我还没有找到用python解析它并应用脚本搜索它的解决方案(除了先将它转换为文本文件,但是对于n个文档来说,这可能是资源密集型的)。

到目前为止,我所做的
我已经研究了pypdf、pdfminer、adobe pdf文档,以及我能在这里找到的任何问题(尽管似乎没有一个能直接解决这个问题)。PDFminer似乎最有潜力,但在阅读了文档之后,我甚至不知道从哪里开始。

有没有一种简单、有效的方法来阅读PDF文本,无论是按页面、行还是整个文档?或者其他变通办法?

共有3个答案

强烨
2023-03-14

我为我工作的公司编写了大量的系统,将PDF转换为数据进行处理(发票、结算、扫描票据等),而@Paulo Scardine是正确的——没有完全可靠且简单的方法来做到这一点。也就是说,最快、最可靠、强度最低的方法是使用xpdf工具集的一部分pdftotext。此工具将快速将可搜索的PDF转换为文本文件,您可以使用Python读取和解析该文件。提示:使用-layout参数。顺便说一句,并不是所有的PDF都是可搜索的,只有那些包含文本的。有些PDF只包含完全没有文本的图像。

长孙嘉容
2023-03-14

我完全是个新手,但这个脚本适合我:

# import packages
import PyPDF2
import re

# open the pdf file
object = PyPDF2.PdfFileReader("test.pdf")

# get number of pages
NumPages = object.getNumPages()

# define keyterms
String = "Social"

# extract text and do the search
for i in range(0, NumPages):
    PageObj = object.getPage(i)
    print("this is page " + str(i)) 
    Text = PageObj.extractText() 
    # print(Text)
    ResSearch = re.search(String, Text)
    print(ResSearch)
姬心思
2023-03-14

这就是所谓的PDF挖掘,是非常困难的,因为:

  • PDF是一种设计用于打印而非解析的文档格式。在PDF文档中,文本没有特定的顺序(除非顺序对打印很重要),大多数时候原始文本结构都会丢失(字母可能不会按单词分组,单词可能不会按句子分组,它们在纸张中的顺序通常是随机的)

PDFminer等工具使用启发式方法,根据字母和单词在页面中的位置再次对它们进行分组。我同意,界面的层次相当低,但当你知道他们试图解决什么问题时,它就更有意义了(最后,重要的是选择一个字母/单词/行必须离邻居有多近才能被视为段落的一部分)。

一个昂贵的替代方案(就时间/计算机能力而言)是为每页生成图像并将其提供给OCR,如果你有一个非常好的OCR,可能值得一试。

所以我的答案是否定的,没有一种简单有效的方法可以从PDF文件中提取文本——如果你的文档有一个已知的结构,你可以微调规则并获得好的结果,但这永远是一场赌博。

我真的很想被证明是错的。

[更新]

答案没有改变,但最近我参与了两个项目:其中一个是利用计算机视觉从扫描的医院表格中提取数据。另一种是从法庭记录中提取数据。我学到的是:

>

如果你正在分析的PDF是“可搜索的”,那么你可以使用pdftotext和贝叶斯过滤器(与垃圾邮件分类算法相同)等软件来提取所有文本。

因此,没有可靠有效的方法从PDF文件中提取文本,但您可能不需要一种方法来解决手头的问题(文档类型分类)。

 类似资料:
  • 拉平文本 删除文本信息(不删除文本本身) 向文档添加覆盖。 目前,我不知道如何实现这一点。有没有人知道怎么解决这个问题?

  • 问题内容: 我想使用python脚本在Google中搜索文本,然后返回每个结果的名称,描述和URL。我目前正在使用此代码: 这仅返回URL。如何返回每个URL的名称和描述? 问题答案: 并不是我一直在寻找的东西,但是我发现自己现在是一个不错的解决方案(如果我可以做得更好的话,我可以对其进行编辑)。我像在Google中一样搜索(仅返回URL)和Beautiful Soup软件包结合在一起来解析HTM

  • 需要一个解决方案来转换PDF文件,其中每个页面都是图像,页面可以包含文本,表格或两者的组合到可搜索的pdf。 我使用了ABBY FineReader Online,这项工作做得非常好,但我正在寻找一个可以通过Windows Python实现的解决方案 我已经做了详细的分析,下面的链接接近我想要的,但并不准确: 扫描图像/PDF到可搜索图像/PDF 它告诉我们首先要使用Ghost脚本将其转换为图像,

  • 我可以使用哪些python包来找出特定的“搜索字符串”位于哪个页面上? 我研究了几个python pdf包,但不知道我应该使用哪一个。PyPDF似乎没有这个功能和PDFMiner似乎是一个过度杀这样简单的任务。有什么建议吗? 更准确地说:我有几个PDF文档,我想提取介于字符串“Begin”和字符串“End”之间的页面。

  • 我的mongoDB中有这种数据 这里假设我做一个查询 这给了我她的结果,但我有名字“nna”或名字“Ana”或名字“anna”或任何其他组合。那么,如何使用Mongoose获取MongoDB中字符串的最接近值呢

  • 我们有一个客户正在使用谷歌搜索设备(GSA)搜索数千个PDF文件。PDF文件位于子文件夹中组织的文件共享上。它定期发现新文件并将其添加到数据库中。 GSA还不够好,所以现在他们需要替代品。例如,他们的GSA无法在PDF中正确搜索垂直文本。我们已经研究了Apache Lucene和Solr以及Tika和ExtractingRequestHandler。 我已经启动并运行了Solr示例,并添加了一个使