Python提取Pdf文件内容的操作方法(表格、文本、图片)

 更新时间:2025年03月25日 09:27:57   作者:老胖闲聊  
本文主要介绍了Python提取PDF内容的方法(文本、图像、表格),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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内容内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python如何实现动态数组

    Python如何实现动态数组

    这篇文章主要介绍了Python如何实现动态数组,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Python竟然能剪辑视频

    Python竟然能剪辑视频

    平时我们在刷短视频或者看到一些视频的时候,希望可以把视频里面的音频提取出来当背景音乐究竟是怎么操作的呢,下面小编教大家python如何去提取一个视频里面的音频,感兴趣的朋友一起看看吧
    2021-05-05
  • Python教程之基本运算符的使用(上)

    Python教程之基本运算符的使用(上)

    Python 运算符通常用于对值和变量执行操作。这些是用于逻辑和算术运算的标准符号。在本文中,我们将研究不同类型的 Python 运算符,感兴趣的可以了解一下
    2022-09-09
  • Flask框架中request、请求钩子、上下文用法分析

    Flask框架中request、请求钩子、上下文用法分析

    这篇文章主要介绍了Flask框架中request、请求钩子、上下文用法,结合实例形式分析了flask框架中request、请求钩子及上下文的功能、用法及相关操作注意事项,需要的朋友可以参考下
    2019-07-07
  • Python轻松读写TOML文件实现示例

    Python轻松读写TOML文件实现示例

    这篇文章主要介绍了Python轻松读写TOML文件实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • Python FastAPI入门安装使用

    Python FastAPI入门安装使用

    FastAPI是一个现代、快速的Python Web框架,用于构建API,它基于Python 3.6+的类型提示特性,使得代码更加简洁且易于绶护,这篇文章主要介绍了Python FastAPI入门安装使用,需要的朋友可以参考下
    2025-03-03
  • Python使用matplotlib绘制图形大全(曲线图、条形图、饼图等)

    Python使用matplotlib绘制图形大全(曲线图、条形图、饼图等)

    matplotlib 是一个用于创建静态、动态和交互式可视化图形的 Python 库,它被广泛用于数据可视化,并且可以与多种操作系统和图形后端一起工作,本文给大家介绍了Python使用matplotlib绘制图形大全,需要的朋友可以参考下
    2024-06-06
  • Django nginx配置实现过程详解

    Django nginx配置实现过程详解

    这篇文章主要介绍了Django nginx配置实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • python的xpath获取div标签内html内容,实现innerhtml功能的方法

    python的xpath获取div标签内html内容,实现innerhtml功能的方法

    今天小编就为大家分享一篇python的xpath获取div标签内html内容,实现innerhtml功能的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • python3使用libpcap库进行抓包及数据处理的操作方法

    python3使用libpcap库进行抓包及数据处理的操作方法

    这篇文章主要介绍了python3使用libpcap库进行抓包及数据处理,需要的朋友可以参考下
    2022-10-10

最新评论