利用Python将PDF文件转换为文本文件

虽然PDF文件对文本布局非常好,容易打印并阅读,但软件要将它们解析为纯文本并不容易,Python目前解析PDF的扩展包有很多。

通过查询资料,建议使用pdfplumber扩展包来解析PDF文档的文本和表格。本文介绍如何通过pdfplumber获取PDF的文本。

图片

 一

准备工作

确保安装了以下库:

  • pdfplumber

若没安装,请在命令行使用以下语句进行安装:

pip install pdfplumber

图片

 二

pdfplumber

pdfplumber中有两个基础类,PDF和Page。PDF用来处理整个文档,Page用来处理整个页面。

1.1 pdfplumber.PDF类

  • .metadata: 获取pdf基础信息,返回字典

  • pages 一个包含pdfplumber.Page实例的列表,每一个实例代表pdf每一页的信息。

1.2 pdfplumber.Page类

pdfplumber核心功能,对PDF的大部分操作都是基于这个类,包括提取文本、表格、尺寸等。

 三

pdfplumber的使用指南

使用 pdfplumber 库解析 PDF 的分步指南。

步骤 1:安装 pdfplumber 库 首先,您需要安装 pdfplumber 库。这可以通过运行以下命令使用 pip 来完成:

pip install pdfplumber

步骤 2:导入库 安装库后,可以使用以下命令将其导入到 Python 脚本中:

import pdfplumber

步骤 3:打开 PDF 要打开 PDF,需要通过将 PDF 文件的路径传递给 open() 函数来创建 pdfplumber.PDF 对象。例如:

with pdfplumber.open("path/to/pdf") as pdf:

步骤 4:提取文本 pdfplumber 提供了多种从 PDF 中提取文本的方法。最简单的方法是 extract_text() 方法,它返回一个包含 PDF 中所有文本的字符串。例如:

text = pdf.extract_text()
print(text)

步骤 5:提取数据 pdfplumber 还提供了多种从 PDF 中提取数据的方法。其中一种方法是 extract_table() 方法,它返回包含 PDF 表格中数据的列表列表。例如:

tables = pdf.extract_table()
print(tables)

步骤 6:提取图像 pdfplumber 还允许您从 PDF 中提取图像。这可以使用 get_image() 方法来完成,该方法返回包含图像数据和元数据的对象。例如:

images = pdf.get_image()
print(images)

 四

完整代码

import pdfplumber

# 打开 PDF
with pdfplumber.open("path/to/pdf") as pdf:
  # 提取文本
  text = pdf.extract_text()
  print(text)

  # 提取表格
  tables = pdf.extract_table()
  for table in tables:
      print(table)

  # 提取图像
  images = pdf.get_images()
  for image in images:
      print(image["page_number"])
      with open(f"image_{image['page_number']}.jpg", "wb") as f:
          f.write(image["data"])

只提取全部文本的代码

按页进行文本提取。

import pdfplumber
def read_pdf(pdf_path):
   with pdfplumber.open(pdf_path) as pdf:
           content = ''
           for i in range(len(pdf.pages)):
               # 读取PDF文档第i+1页
               page = pdf.pages[i]

               # page.extract_text()函数即读取文本内容,下面这步是去掉文档最下面的页码
               page_content = '\n'.join(page.extract_text().split('\n')[:-1])
               content = content + page_content
   return content

if __name__ == '__main__':
   a = read_pdf(r'2011.pdf')
   print()
   

 五

小结

在本文中,我们介绍了使用 pdfplumber 库在 Python 中解析 PDF 的基础知识。使用 pdfplumber,可以轻松地从 PDF 中提取文本、数据和图像。

今天先到这里了。明天发一篇关于PDF文件转换为md文件的教程及代码分享。

(完)

图片

往期文章回顾

使用GDAL进行遥感影像植被真彩色增强 - 界面小工具源代码分享(四)

使用GDAL进行遥感影像植被真彩色增强 -  源码分享 (三)

使用GDAL进行遥感影像植被真彩色增强 -  界面小工具分享 (二)

使用GDAL进行遥感影像植被真彩色增强 (一)

关于sentinel-1 rgd格式雷达影像的一些探索

sentinel-2与其他遥感光学的不同的地方在于?

图片

python69

编程70

python · 目录

上一篇【代码】利用Python计算和可视化温度植被干旱指数(TVDI)下一篇我很后悔没有早点知道 Python 字典的 8 个功能

要将PDF文件转换为DOCX文件,您可以使用Python的“pdfminer”和“python-docx”库。您需要安装这些库,然后按照以下步骤进行操作: 1. 导入所需的库: ```python import io import os import docx from pdfminer.converter import TextConverter from pdfminer.pdfinterp import PDFPageInterpreter from pdfminer.pdfinterp import PDFResourceManager from pdfminer.pdfpage import PDFPage ``` 2. 创建一个函数来将PDF文件转换文本: ```python def pdf_to_text(pdf_file): resource_manager = PDFResourceManager() text_stream = io.StringIO() codec = 'utf-8' laparams = pdfminer.layout.LAParams() converter = TextConverter(resource_manager, text_stream, codec=codec, laparams=laparams) interpreter = PDFPageInterpreter(resource_manager, converter) password = "" maxpages = 0 caching = True page_nums = set() for page in PDFPage.get_pages(pdf_file, page_nums, maxpages=maxpages, password=password, caching=caching, check_extractable=True): interpreter.process_page(page) converter.close() text = text_stream.getvalue() text_stream.close() return text ``` 3. 创建一个函数来将文本转换为DOCX文件: ```python def text_to_docx(text, output): doc = docx.Document() doc.add_paragraph(text) doc.save(output) ``` 4. 最后,您可以将上面的两个函数组合在一起来实现转换: ```python pdf_file = open('example.pdf', 'rb') text = pdf_to_text(pdf_file) pdf_file.close() output = 'example.docx' text_to_docx(text, output) ``` 以上代码中,我们将PDF文件“example.pdf转换文本,然后将文本转换为DOCX文件“example.docx”。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值