这篇文章教会我用 python 读取 pdf 文件【收藏即会】-4008云顶国际网站

梦想橡皮擦 发表于 2022/08/31 15:28:13 2022/08/31
【摘要】 ⛳️ 实战场景python 工程师在日常的工作中,经常会碰到解析和处理pdf文件的情况,实战中需求主要分为如下情况:提取 pdf 中的文字将 pdf 中每页转换为图片word 转换为pdfpdf生成,编辑,导入导出pdf在线渲染除了最后一项需要前端配合以外,其余内容都可以直接在 python 端进行实现。本次实战选择 pdfplumber 库进行学习,可以提前安装该库,不过有一点需要注意,...

⛳️ 实战场景

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

pdfplumber 库具备如下特点:

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

⛳️ python pdf 实战编码

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

import pdfplumber
with pdfplumber.open('./dddd.pdf') as pdf:
    for page in pdf.pages:
        print(page.extract_text())
        # 每页打印一分页分隔
        print('---------- 分页分隔 ----------')

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

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

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

其中各参数描述如下:

  • 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 篇原创博客

【4008云顶国际集团的版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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