什么是pdfplumber
pdfplumber
是一个用Python编写的库,主要用于解析PDF文件并提取其中的内容,如文本、图像、表格等。该库专注于从PDF文档中抽取结构化信息,并且能够保留原始布局和格式的细节,如字体样式、颜色和位置等。通过使用
pdfplumber
,开发者可以轻松地读取PDF文档中的每一页,并以编程方式访问其内容。例如,可以获取指定页码上的所有文本、精确测量文本块的位置、或者将PDF中的表格转换为数据结构(如pandas DataFrame),以便进一步的数据处理或分析。
pdfplumber
的一些主要功能包括:打开并读取PDF文件:通过
pdfplumber.open()
函数打开PDF文件并返回一个可迭代的对象。访问页面内容:遍历PDF文件的各个页面,每个页面都是一个
pdfplumber.Page
对象,包含页面的所有内容元素。文本提取:按照原始布局提取文本内容,包括字符级别的信息。
表格提取:识别并提取PDF中的表格结构,转化为类似二维列表的数据结构,方便进一步转换成pandas DataFrame等格式。
图形元素:支持对线条、矩形、曲线等图形元素进行提取和分析
如何安装pdfplumber
pip install pdfplumber
具体的代码实现
import pdfplumber
import os
def clearHistoryFile(pathDir, prefix, suffix):
"""
清空pathDir目录中,以prefix为前缀,以suffix为后缀的文件
:param pathDir:目录地址,例如:D:\code\python\AutoForFreedom\data
:param prefix:文件前缀
:param suffix:文件后缀,例如 .png
:return: None
"""
# 遍历目录
for filename in os.listdir(pathDir):
# 检查是否满足删除的文件条件
if filename.startswith(prefix) and filename.endswith(suffix):
# 构建完整路径
filePath = os.path.join(pathDir, filename)
# 确保是文件而非目录
if os.path.isfile(filePath):
# 删除文件
os.remove(filePath)
print(f"已删除文件: {filePath}")
return None
def convertPDFToImage(filePath, targetDir):
"""
将PDF文件转化成image图片
:param filePath: 示例 D:\code\python\AutoForFreedom\data\zoomlion\Python办公自动化之PDF篇笔记.pdf
:param targetDir: 示例 D:\code\python\AutoForFreedom\logs
:return: None
"""
# 获取原始的去除后缀的文件名称
fileName = os.path.splitext(os.path.basename(filePath))[0]
# 清空目标目录中之前生成的关于该文件的图片
clearHistoryFile(targetDir, fileName, '.png')
# 将文件转成图片并存储到目标目录中
with pdfplumber.open(filePath) as pdfFile:
# 遍历pdf文件页
for index, page in enumerate(pdfFile.pages):
# 生成图片并保存
pageImage = page.to_image()
targetFile = os.path.join(targetDir, f'{fileName}_p{index + 1}.png')
pageImage.save(targetFile)
print(f"已生成文件{targetFile}")
return None
if __name__ == '__main__':
# pdf文件含路径
fileName = 'D:\code\python\AutoForFreedom\data\zoomlion\Python办公自动化之PDF篇笔记.pdf'
# 图片存放目录
targetDir = 'D:\code\python\AutoForFreedom\logs'
convertPDFToImage(fileName, targetDir)