用Python从PDF文件中提取文本:全面指南

4adaf46c546847f420f11363fd5eddf9.jpeg

引言

在大语言模型(LLMs)的时代,它们的应用范围从简单的文本摘要和翻译到基于情感和财务报告主题预测股票表现,文本数据的重要性前所未有。

有许多类型的文档共享这种非结构化信息,从网页文章和博客帖子到手写信件和诗歌。然而,这些文本数据的大部分以PDF格式存储和传输。具体而言,每年在Outlook中打开的PDF文档超过20亿份,而每天在Google Drive和电子邮件中保存的新PDF文件达7300万份(2)。

因此,更系统地处理这些文档并从中提取信息将使我们能够拥有自动化的流程,并更好地理解和利用这庞大的文本数据。而在这项任务中,当然,我们最好的朋友莫过于Python。

然而,在我们开始处理之前,我们需要明确当前存在的不同类型的PDF文档,更具体地说,是三种最频繁出现的类型:

  1. 程序生成的PDF:这些PDF是使用计算机上的W3C技术(如HTML、CSS和Javascript)或其他软件(如Adobe Acrobat)创建的。这种类型的文件可以包含各种组件,如图像、文本和链接,这些组件都是可搜索且易于编辑的。

  2. 传统扫描文档:这些PDF是通过扫描仪或移动应用程序从非电子媒介创建的。这些文件实际上只是存储在PDF文件中的图像集合。换句话说,这些图像中出现的元素,如文本或链接,无法选择或搜索。实质上,PDF文件只是这些图像的容器。

  3. 带有OCR的扫描文档:在这种情况下,扫描文档后使用光学字符识别(OCR)软件来识别文件中每个图像中的文本,并将其转换为可搜索和可编辑的文本。然后,软件在图像上添加一个包含实际文本的层,这样当浏览文件时,您可以将其选择为单独的组件(3)。

尽管现在越来越多的机器都安装了OCR系统来识别扫描文档中的文本,但仍然存在一些包含整个页面的图像格式文档。您可能已经看到过,当您阅读一篇精彩的文章并尝试选择一句话时,却选择了整个页面。这可能是特定OCR机器的限制或其完全缺失的结果。为了不让这些信息在本文中被忽视,我试图创建一个考虑到这些情况并充分利用我们宝贵且信息丰富的PDF的过程。


理论方法

在考虑到所有这些不同类型的PDF文件和构成它们的各种元素的基础上,进行对PDF布局的初步分析以识别每个组件所需的适当工具非常重要。更具体地说,根据这一分析的结果,我们将应用适当的方法从PDF中提取文本,无论是呈现在语料库块中的文本及其元数据、图像中的文本还是表格中的结构化文本。在没有OCR的扫描文档中,识别并从图像中提取文本的方法将完成所有繁重的工作。该过程的输出将是一个Python字典,其中包含从PDF文件的每一页提取的信息。该字典中的每个键将呈现文档的页码,其对应的值将是包含以下5个嵌套列表的列表:

  1. 语料库块的每个文本块提取的文本

  2. 每个文本块中文本的字体系列和大小的格式

  3. 页面上提取的图像中的文本

  4. 以结构化格式提取的表格中的文本

  5. 页面的完整文本内容

892fbed02b1814bfbd1d9ac73ef4f050.png

通过这种方式,我们可以更合理地将从不同源组件中提取的文本分离开,有时可以帮助我们更容易地检索通常出现在特定组件中的信息(例如,标志图像中的公司名称)。此外,从文本中提取的元数据,如字体系列和大小,可以用于轻松识别文本标题或更重要的突出文本,从而帮助我们进一步将文本分成多个不同的块进行后处理。最后,在LLM能够理解的方式中保留结构化表格信息将显著增强对提取数据内关系的推断质量。然后,这些结果可以组合成一个输出,包含每一页上出现的所有文本信息。

您可以在下面的图像中看到这种方法的流程图。

0383d7b1af0b0e5acffb7939becc4bea.png

安装所有必要的库

在开始这个项目之前,我们应该安装所需的库。我们假设您的计算机上已经安装了Python 3.10或更高版本。否则,您可以从这里安装。然后让我们安装以下库:

PyPDF2:用于从存储库路径读取PDF文件。

pip install PyPDF2

Pdfminer:用于执行布局分析并从PDF中提取文本和格式(该库的.six版本是支持Python 3的版本)。

pip install pdfminer.six

Pdfplumber:用于识别PDF页面中的表格并从中提取信息。

pip install pdfplumber

Pdf2image:用于将裁剪后的PDF图像转换为PNG图像。

pip install pdf2image

PIL:用于读取PNG图像。

pip install Pillow

Pytesseract:使用OCR技术从图像中提取文本。

这个安装稍微复杂,因为首先您需要安装Google Tesseract OCR,这是一种基于LSTM模型的OCR机器,用于识别行和字符模式。

如果您是Mac用户,您可以通过终端使用Brew来安装,然后即可使用。

brew install tesseract

对于Windows用户,您可以按照这个链接中的步骤进行安装。然后,当您下载并安装软件时,您需要将其可执行路径添加到计算机的环境变量中。或者,您可以运行以下命令,直接在Python脚本中使用以下代码将其路径包含进去:

pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

然后您可以安装Python库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值