pdf文件是我们日常工作中经常会遇到的一种文件格式,对于这种文件的提取 pdfplumber 库可以非常出色的完成处理工作,它是一个纯 python 第三方库,适合 python 3.x 版本,通常用来查看pdf各类信息,能有效提取文本、表格,但不支持修改或生成pdf,也不支持对pdf扫描件的处理。下面就出表格、文本和图片的提取三方面进行说明。
1、表格提取:
下面是提取pdf文件内容中的表格,并保存到xlsx文件中,代码如下:
import pdfplumber from openpyxl import load_workbook import pandas as pd i=0 with pdfplumber.open("d:\\待提取的pdf文件.pdf") as pdf: print(len(pdf.pages)) for page in pdf.pages: tables=page.extract_tables() for table in tables: i=i+1 df = pd.dataframe(table) df.to_excel(f'd:\\output{i}.xlsx', index=false) def readexcels(excelname): alldata = pd.dataframe() wb = load_workbook(excelname) sheets = wb.sheetnames for i in sheets: #print(i) df = pd.read_excel(excelname,sheet_name=i,engine='openpyxl',header=1) alldata = alldata._append(df)
2、文本提取:
下面是提取pdf文件内容中的文字内容,并保存到txt文件中,代码如下:
import os from pathlib import path import pdfplumber def extract_text(pdf_path): with pdfplumber.open(pdf_path) as pdf: text = "" for page in pdf.pages: text += page.extract_text() + "\n" return text # 使用示例 pdf_path_name = "d:\\待提取pdf文件.pdf" pdf_dirname = os.path.dirname(pdf_path_name) extracted_text = extract_text(pdf_path_name) with open(f'{pdf_dirname}/{path(pdf_path_name).stem}.txt', 'w', encoding='utf-8') as f: f.write(extracted_text) f.close() print(f'执行完毕!输出路径:{pdf_dirname}')
3、提取图片:
下面是提取pdf文件内容中的图片,并创建目录保存,代码如下:
import pdfplumber import os # 定义函数用于提取pdf中的图片并保存 def extract_images_from_pdf(pdf_file, output_folder): # 创建输出文件夹,如果不存在的话 if not os.path.exists(output_folder): os.makedirs(output_folder) with pdfplumber.open(pdf_file) as pdf: # 遍历每一页 for page_number, page in enumerate(pdf.pages, start=1): print(f'页码:{page.page_number}') print(f'页面宽度:{page.width}') print(f'页面高度:{page.height}') # 获取该页的所有图片 images = page.images # 遍历该页的所有图片 for idx, image in enumerate(images, start=1): # 获取图片的二进制数据 image_data = image['stream'].get_data() # 构建图片文件名 image_filename = os.path.join(output_folder, f'image_{page_number}_{idx}.png') # 保存图片到文件 with open(image_filename, 'wb') as f: f.write(image_data) print(f'图片已保存至:{image_filename}') # 调用方法 pdf_file = 'd:\\待提取的pdf文件.pdf' output_folder = 'extracted_images' extract_images_from_pdf(pdf_file, output_folder)
拓展:python提取pdf文件文字(ocr)
一、引用的库
import pdfplumber
确保已安装以上的库,不然运行会报错
#安装库可以用清华的镜像网站(可能会更新,可以上官网查询地址)
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
二、提取文字
def pdf_to_text(pdf_path): """ 从 pdf 文件中提取文本内容。 args: pdf_path (str): pdf 文件的路径。 returns: str: 提取的文本内容。 """ text = '' # 打开pdf文件 with pdfplumber.open(pdf_path) as pdf: # 遍历每一页 for page in pdf.pages: # 提取文本,并添加到text变量中 text += page.extract_text() # 移除文本中的换行符(根据需求设置) text = text.replace('\n', '') return text
其中'yourfile'替换成你的文件的地址。
三、保存文字
def savewords(): """ 将 pdf 文件中提取的文本保存到文本文件中。 """ # 输入pdf文件路径 pdf_path = 'yourfile' # 调用pdf_to_text函数进行文字提取 extracted_text = pdf_to_text(pdf_path) # 将提取的文字写入到txt文件中 with open('extracted_text.txt', 'w', encoding='utf-8') as file: file.write(extracted_text) print("text extracted successfully!")
注意,保存文字和提取文字是不可分割的两个“方法”,在写代码时要一起复制粘贴。此处分开是为了容易理解
四、运行
if __name__ == "__main__": savewords()
总结
import pdfplumber def pdf_to_text(pdf_path): """ 从 pdf 文件中提取文本内容。 args: pdf_path (str): pdf 文件的路径。 returns: str: 提取的文本内容。 """ text = '' # 打开pdf文件 with pdfplumber.open(pdf_path) as pdf: # 遍历每一页 for page in pdf.pages: # 提取文本,并添加到text变量中 text += page.extract_text() # 移除文本中的换行符(根据需求设置) text = text.replace('\n', '') return text def savewords(): """ 将 pdf 文件中提取的文本保存到文本文件中。 """ # 输入pdf文件路径 pdf_path = 'yourfile' # 调用pdf_to_text函数进行文字提取 extracted_text = pdf_to_text(pdf_path) # 将提取的文字写入到txt文件中 with open('extracted_text.txt', 'w', encoding='utf-8') as file: file.write(extracted_text) print("text extracted successfully!") if __name__ == "__main__": savewords()
到此这篇关于python提取pdf文件内容的操作方法(表格、文本、图片)的文章就介绍到这了,更多相关python提取pdf内容内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论