PDF 是共享文本的常见方式。PDF代表便携式文档格式并使用.pdf文件扩展名。它是由 Adobe Systems 于 20 世纪 90 年代初创建的。
使用 python 阅读 PDF 文档可以帮助您自动执行各种任务。
在本教程中,我们将学习如何使用Python 从 PDF 文件中提取文本。
让我们开始吧。
使用 Python 从 PDF 文件中读取和提取文本
出于本教程的目的,我们将创建一个包含 2 页的示例 PDF。您可以使用任何文字处理器(例如 Microsoft Word 或 Google Docs)执行此操作,并将文件另存为 PDF。
第 1 页的文字:
Hello World. This is a sample PDF with 2 pages. This is the first page. |
第 2 页的文字:
This is the text on Page 2. |
使用 PyPDF2 提取 PDF 文本
您可以使用PyPDF2从 PDF 中提取文本。让我们看看它是如何工作的。
1.安装包
要在系统上安装 PyPDF2,请在终端上输入以下命令。您可以阅读有关pip 包管理器的更多信息。
pip install pypdf2 |
2.导入PyPDF2
打开一个新的 python 笔记本并开始导入 PyPDF2。
import PyPDF2 |
3. 以读取二进制模式打开 PDF
首先使用以下代码行以读取二进制模式打开 PDF :
pdf = open ( 'sample_pdf.pdf' , 'rb' ) |
这将为我们的 PDF 创建一个PdfFileReader 对象并将其存储到变量“ pdf”中。
4.使用PyPDF2.PdfFileReader()读取文本
现在您可以使用PyPDF2 中的PdfFileReader () 方法来读取文件。
pdfReader = PyPDF2.PdfFileReader(pdf) |
要从 PDF 第一页获取文本,请使用以下代码行:
page_one = pdfReader.getPage( 0 ) print (page_one.extractText()) |
我们得到的输出为:
Hello World. !This is a sample PDF with 2 pages. !This is the first page. ! Process finished with exit code 0 |
这里我们使用 getPage 方法将页面存储为对象。然后我们使用 extractText() 方法从页面对象中获取文本。
我们得到的文本是String 类型。
类似地,要从 PDF 中获取第二页,请使用:
page_one = pdfReader.getPage( 1 ) print (page_one.extractText()) |
我们得到的输出为:
This is the text on Page 2. |
使用 PyPDF2 读取 PDF 文本的完整代码
本节的完整代码如下:
import PyPDF2 pdf = open ( 'sample_pdf.pdf' , 'rb' ) pdfReader = PyPDF2.PdfFileReader(pdf) page_one = pdfReader.getPage( 0 ) print (page_one.extractText()) |
如果您注意到,上面的输出中第一页的格式有点偏差。这是因为 PyPDF2 读取 PDF 的效率不是很高。
幸运的是,Python 有一个比 PyPDF2 更好的替代品。接下来我们将讨论这一点。
使用 PDFplumber 提取文本
PDFplumber是另一个可以从 PDF 中提取文本的工具。与 PyPDF2 相比,它更强大。
1.安装包
让我们开始安装 PDFplumber。
pip install pdfplumber |
2.导入pdfplumber
首先使用以下代码行导入 PDFplumber:
import pdfplumber |
3.使用PDFplumber阅读pdf
您可以通过以下代码开始使用 PDFplumber 阅读 PDF:
with pdfplumber. open ( "sample_pdf.pdf" ) as pdf: first_page = pdf.pages[ 0 ] print (first_page.extract_text()) |
这将从我们的 PDF 第一页获取文本。输出如下:
Hello World. This is a sample PDF with 2 pages. This is the first page. Process finished with exit code 0 |
您可以将其与 PyPDF2 的输出进行比较,看看 PDFplumber 在格式化方面如何更好。
PDFplumber 还提供了从 PDF 获取其他信息的选项。
例如,您可以使用.page_number来获取页码。
print (first_page.page_number) |
输出 :
1 |
要了解有关 PDFPlumber 下方法的更多信息,请参阅其官方文档。
结论
本教程是关于从 PDF 中读取文本的。我们研究了两种不同的工具,发现其中一种比另一种更好。
现在您已经知道如何从 PDF 中读取文本,您应该阅读我们的标记化教程以开始自然语言处理!