网站型与商城型有什么区别吗,潍坊网站建设一站式服务,深圳建设银行宝安支行网站,免费行情的软件大全下载作者#xff1a;陈熹 来源#xff1a;早起Python大家好#xff0c;在之前的办公自动化系列文章中我们已经详细介绍了如何使用python批量处理PDF文件#xff0c;包括合并、拆分、水印、加密等操作。今天我们再次回到PDF#xff0c;详细讲解如何使用python从PDF提取指定的信…作者陈熹 来源早起Python大家好在之前的办公自动化系列文章中我们已经详细介绍了如何使用python批量处理PDF文件包括合并、拆分、水印、加密等操作。今天我们再次回到PDF详细讲解如何使用python从PDF提取指定的信息。我们将以一份年度报告PDF为例进行介绍内含大量文字、表格、图片具体如下模块安装首先需要安装两个模块第一个是pdfplumber在命令行使用pip安装即可pip install pdfplumber第二个是fitz, 它是pymupdf中的一个模块同样可以使用pip轻松安装pip install pymupdf文字信息提取使用python提取PDF中文字代码思路如下利用pdfplumber打开一个 PDF 文件获取指定的页或者遍历每一页利用.extract_text()方法提取当前页的文字现在让我们用上述代码尝试提取示例数据中第12页的文字import pdfplumberfile_path rC:xxxxpractice.PDFwith pdfplumber.open(file_path) as pdf: page pdf.pages[11] print(page.extract_text())结果如下图所示接着可以将内容通过导入python-docx并借助wordfile.add_paragraph()写入Word文件中而这个模块我们已经讲解很多次此处就不再赘述。表格信息提取使用Python提取单个表格和提取单页文字的代码非常类似用的是.extract_table()但需要注意的是.extract_table()默认提取指定页面的第一个表格如果当前页面有多个表格都需要提取则要直接使用.extract_tables()例如示例文件中第 13 页有 2 个表格我们分别利用.extract_table()和.extract_tables()观察输出结果import pdfplumberfile_path rC:xxxxpractice.PDFwith pdfplumber.open(file_path) as pdf: page pdf.pages[12] print(page.extract_table())结果如下可以看到是一个嵌套列表熟悉这种格式的人会理解想到可以pandas或者遍历该嵌套列表后借助openpyxl的sheet.append(list)写入Excel文件中import pdfplumberfile_path rC:xxxxpractice.PDFwith pdfplumber.open(file_path) as pdf: page pdf.pages[12] print(page.extract_tables())而.extract_tables()提取当前页所有表格会产生了一个三级嵌套列表第一层的列表就代表每一个表格之后也可以利用其他库写入Excel。图片提取对于图片提取现在没有任何一个模块可以做到百分之百的提取。本文只介绍基于fitz模块的代码基本思路是通过正则查找图片并将其输出例如提取示例文件中的图片代码可以这么写import fitzimport reimport osfile_path rC:xxxpractice.PDFdir_path rC:xxx # 存放图片的文件夹def pdf2pic(path, pic_path): checkXO r/Type(? */XObject) checkIM r/Subtype(? */Image) pdf fitz.open(path) lenXREF pdf._getXrefLength() imgcount 0 for i in range(1, lenXREF): text pdf._getXrefString(i) isXObject re.search(checkXO, text) isImage re.search(checkIM, text) if not isXObject or not isImage: continue imgcount 1 pix fitz.Pixmap(pdf, i) new_name fimg_{imgcount}.png if pix.n 结果如下可以看到成功提取了图片但PDF中的图片远不止这些如果你有其他思路或者方法可以在留言区与我交流。写在最后最后要说明的是在上一篇文章及本文中我们剖析了每一行代码。但针对PDF的模块较多且有些模块功能并不完善代码也没有类似OFFICE三件套操作那般简洁因此更多时候以理解为主不需要完全掌握写会用会改即可当然还是希望大家能够理解Python办公自动化的一个核心就是批量操作-解放双手并且能与日常办公结合让复杂的工作自动化