这篇文章教会我用 Python 读取 PDF 文件【收藏即会】

举报
梦想橡皮擦 发表于 2022/08/31 23:19:15 2022/08/31
【摘要】 文章目录 ⛳️ 实战场景⛳️ Python PDF 实战编码 ⛳️ 实战场景 Python 工程师在日常的工作中,经常会碰到解析和处理PDF文件的情况,实战中需求主要分为如下情况: ...

⛳️ 实战场景

Python 工程师在日常的工作中,经常会碰到解析和处理PDF文件的情况,实战中需求主要分为如下情况:

  1. 提取 PDF 中的文字
  2. 将 PDF 中每页转换为图片
  3. word 转换为PDF
  4. PDF生成,编辑,导入导出
  5. PDF在线渲染

除了最后一项需要前端配合以外,其余内容都可以直接在 python 端进行实现。

本次实战选择 pdfplumber 库进行学习,可以提前安装该库,不过有一点需要注意,该库主要用于读取 PDF 进行操作,写入和编辑无法实现,即本文学习一款专注于 PDF 内容提取的库。

> pip install pdfplumber -i https://pypi.tuna.tsinghua.edu.cn/simple

  
 
  • 1

pdfplumber 库具备如下特点:

  • 可以访问PDF对象中的任意元素详细信息;
  • 可以提取文本和表格,而且用法简单;
  • 集成了可视化调试。

⛳️ Python PDF 实战编码

下面可以编写 PDF 操作的基础代码。

import pdfplumber

with pdfplumber.open('./dddd.pdf') as pdf:
    for page in pdf.pages:
        print(page.extract_text())

        # 每页打印一分页分隔
        print('---------- 分页分隔 ----------')

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

导入 pdfplumber 模块之后,使用 pdfplumber.open('./dddd.pdf') 打开本地 pdf 文件,然后通过 pdf.pages 遍历所有页,在通过页对象.extract_text() 方法,提取文本信息。

pdfplumber.open() 方法的签名如下所示:

pdfplumber.open("文件名", password = "密码", laparams = { "line_overlap": 0.7 })

  
 
  • 1

其中各参数描述如下:

  • file_name:文件名,必选参数;
  • password:PDF的密码;
  • laparams:布局参数。

除此之外,如果希望读取 PDF,还可以使用 load() 方法,该方法也会返回 pdfplumber.PDF 类的实例。

pdfplumber.PDF 对象实例,主要有两个重要属性:

  • .metadata:从PDF的Info中获取元数据键 /值对字典。 通常包括“ CreationDate”,“ ModDate”,“ Producer”等;
  • .pages:包含 pdfplumber.Page 实例的列表,每一个实例代表PDF每一页的信息。

上文提及的 pdfplumber.Page 实例是 pdfplumber 的核心,后续对 PDF 的操作大量围绕该类的属性和方法实施,其重要属性如下所示:

  • page_number:页码顺序,第一页的序号是 1;
  • witdh:宽度;
  • height:高度;
  • .objects/.chars/.lines/.rects/.curves/.figures/.images:获取PDF页中的重要数据。

核心方法如下所示:

  • extract_text():提取页中的文本;
  • extract_words():提取所有单词及其相关信息;
  • extract_tables(): 提取页面的表格。

extract_text() 呈现结果

在这里插入图片描述

extract_words() 呈现结果

在这里插入图片描述

extract_tables() 呈现效果,由于 PDF 中无表格,所有每页得到的都是空!

在这里插入图片描述

📢📢📢📢📢📢
💗 你正在阅读 【梦想橡皮擦】 的博客
👍 阅读完毕,可以点点小手赞一下
🌻 发现错误,直接评论区中指正吧
📆 橡皮擦的第 716 篇原创博客

从订购之日起,案例5年内保证更新

文章来源: dream.blog.csdn.net,作者:梦想橡皮擦,版权归原作者所有,如需转载,请联系作者。

原文链接:dream.blog.csdn.net/article/details/126226301

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。