当前位置: 首页 > news >正文

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)

相关文章:

  • P10904 [蓝桥杯 2024 省 C] 挖矿
  • Vivado常用的时序约束方法
  • H20半精度推理报错:Floating point exception (core dumped)
  • 基于Flask的造价信息可视化分析系统
  • 2025年03月04日Github流行趋势
  • Opencv 直方图与模板匹配
  • *算法中的数据结构(3)
  • *搜索算法(2)
  • Ollama进行DeepSeek本地部署存在安全风险解决方案,nginx反向代理配置
  • 2025 电商新航道:AI 多模态交互领航,元宇宙商品展示赋能
  • 【第一章、北海渔村】AI写作效果预览 【AI小说+AI人物图】评论区点赞留言 告知工具
  • 微软发布Dragon Copilot,打造医疗行业首款AI语音助手
  • 19.5-STM32接收数据-根据状态控制电机
  • 利用Git和wget批量下载网页数据
  • 【LangChain】对话历史管理
  • Celia智能助手2.0架构演进与性能突破
  • 网络安全中分区分域
  • 18.1 大模型时代的开源与数据协议:合规之路与技术突
  • 【网络安全】SSL重协商原理、过程、防范详解(含案例)
  • 如何将ConfigMap中的内容挂载为容器内的文件
  • 云南建设网站/免费代理上网网站
  • 百事可乐网站建设优缺点/百度推广一般要多少钱
  • 长沙seo推广外包/seo技术培训东莞
  • 做的网站 显示乱码/企业推广策划书
  • 南京酒店网站制作/alexa排名查询
  • 网站建设招标公示/谷歌优化工具