PDFPlumber使用入门

PDFPlumber是一个用于解析PDF的Python库,适用于提取文本、表格等信息。本文介绍了PDFPlumber的安装、命令行使用、Python包的API,特别强调了如何进行表格抽取和可视化调试,适合对PDF解析感兴趣的Python开发者。

背景

最近需要一个工具来解析PDF文件,获取其文本内容、标题、表格等,在GitHub上发现了这个神仙工具,发现用起来还挺方便的。在这里做一个简单的介绍,帮助一些想入门的英文不好的 同学。

环境

macOS 10.14
PDFPlubmer v0.5.21
python>=3.5

教程开始

首先附上GitHub链接:https://github.com/jsvine/pdfplumber

应用场景

获取PDF中的每个文本字符、矩形和行的详细信息,以及可以进行表格提取和可视化调试。主要应用于机器生成的PDF上,而非扫描的pdf文档。

安装

可以直接使用pip进行python包的安装,执行指令:

pip install pdfplumber

之后运行python,若能成功导入该包即安装成功。

$ python3
Python 3.6.5 (default, Jun 17 2018, 12:13:06)
[GCC 4.2.1 Compatible Apple LLVM 9.1.0 (clang-902.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pdfplumber
>>> # 安装成功

命令行使用

这里提供一个官方的简单的使用样例

$ curl "https://cdn.rawgit.com/jsvine/pdfplumber/master/examples/pdfs/background-checks.pdf" > background-checks.pdf
$ pdfplumber < background-checks.pdf > background-checks.csv

执行完成后即可将一个pdf中的各种详细信息,包含每一个字符、线、表格等,导出到一个csv文件中。

可选参数

参数 描述
--format [format] csv or jsonjson格式返回更多信息; 它包含PDF级别的元数据(metadata)和每个页面的高度/宽度信息。
--pages [list of pages] 一个以空格分隔,以1索引开头的页面或带连字符的页面范围的列表。
例如1,11-15,它将返回第1、11、12、13、14和15页的数据。
--types [list of object types to extract] 选择为charannolinecurverectrect_edge
默认为charannolinecurverect

Python包

简单样例

import pdfplumber

with pdfplumber.open("path/to/file.pdf") as pdf:
    first_page = pdf.pages[0]
    print(first_page.chars[0])

读取PDF

pdfplumber提供了两种读取pdf的方式:

  • pdfplumber.open("path/to/file.pdf")
  • pdfplumber.load(file_like_object)

这两种方法都返回pdfplumber.PDF类的实例(instance)。
加载带密码的pdf需要传入参数password,例如:pdfplumber.open("file.pdf", password = "test")

pdfplumber.PDF类

处于最上层的pdfplumber.PDF类表示单个PDF,并且具有两个主要属性:

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

pdfplumber.Page类

pdfplumber.Page类是pdfplumber整个的核心,大多数操作都围绕这个类进行操作,它具有以下几个属性:

属性 描述
.page_number 页码顺序,从第一页的1开始,第二页为2,依此类推。
.width 页面宽度
.height 页面高度
.objects/.chars/.lines/.rects/
.curves/.figures/.images
这些属性中的每一个都是一个列表,并且每个列表针对嵌入面上的每个此类对象包含一个字典。 有关更多详细信息,
<think>嗯,用户想了解Python入门的学习路径和推荐教程。结合之前提供的站内引用内容,我需要整合出一个系统的入门学习方法。用户明确提到“学习路径”和“推荐教程”两个重点,根据引用[2],毫无基础的用户可以从Python官方中文教程开始,这是个可靠的切入点。引用[1]和[3]都强调了学习路线图的重要性,这提示我应该提供分阶段的路径设计。引用[4]提到的实践项目很关键,特别是那个2048游戏的例子很适合初学者。考虑设计一个四阶段学习路径:先安装环境打基础,再系统学习基础语法,然后用实践项目巩固学习,最后进阶到特定方向。每个阶段都要标注推荐工具和练习时长,用户都是自学党需要明确的时间参考。在教程推荐上,应该包含三个层次:官方资源(如引用[2]建议的)、经典图书(引用[4]提到的《集体智慧编程》)和免费课程(引用[3]提到的CSDN资料)。特别要注意引用中反复出现的“标准库”和“语法练习”这两个点,所以准备专门设计基础语法的练习重点,包括文件操作和网络请求这些实用技能。针对用户最可能遇到的编程环境配置问题(引用[1]提到过),要强调Anaconda+VSCode的组合优势。最后主动提出三个进阶问题:持续学习资源方案、目标导向学习方法和Python方向选择建议,这样能引导用户深入思考。准备在回复时注意所有行内变量都用$...$标记,如$Python$安装路径。</think> 以下是针对零基础学习者的Python高效入门路径,结合主流教程和实践经验整理: --- ### **一、学习路径设计(分阶段递进)** #### **阶段1:环境搭建与基础语法(1-2周)** - **核心工具**: - 安装Python:推荐使用[Anaconda](https://www.anaconda.com/)(集成开发环境) - 编辑器:VS Code(轻量级)或PyCharm社区版(功能全) - **学习重点**: - 变量与数据类型(字符串/列表/字典) - 条件语句(`if-elif-else`) - 循环结构(`for`/`while`) - 函数定义与调用 - **练习建议**:每天完成10个小练习(如:计算器、简易通讯录) #### **阶段2:项目驱动实战(2-3周)** | **项目类型** | **推荐库** | **案例** | |---------------------|------------------|--------------------------| | 数据处理 | pandas/numpy | 分析CSV文件中的销售数据 | | 网络爬虫 | requests/BeautifulSoup | 爬取天气预报数据 | | 自动化办公 | openpyxl/PDFplumber | Excel报表处理 | #### **阶段3:方向专项提升(4周+)** ```mermaid graph LR A[基础语法] --> B{方向选择} B --> C[Web开发] B --> D[数据分析] B --> E[自动化运维] C --> F(Flask/Django) D --> G(Pandas/Matplotlib) E --> H(Ansible/Docker) ``` --- ### **二、权威教程推荐** #### **免费资源** 1. **官方文档**([Python中文文档](https://docs.python.org/zh-cn/3/tutorial/index.html)) - 语法最权威的解释,含交互式示例[^2] 2. **实战平台**: - [Codecademy](https://www.codecademy.com/):交互式学习环境 - [夜曲编程](https://npython.com/):中文场景化教学 3. **经典图书**: - 《Python编程:从入门到实践》(项目驱动型) - 《集体智慧编程》(算法+实践结合)[^4] #### **体系化课程** - **微软Python入门课**(edX平台) - **北理工《Python语言程序设计》**(中国大学MOOC) --- ### **三、避坑指南** 1. **语法学习误区**: - 避免死记硬背,重点理解`迭代器`、`生成器`等核心概念 - 函数参数传递机制(可变/不可变对象)需实操验证 2. **项目实践要点**: - 先模仿再创新:GitHub搜索`python beginner projects` - 版本控制:早期即学习`Git`基础命令 3. **调试能力培养**: - 掌握`pdb`调试器基础命令: ```python import pdb; pdb.set_trace() # 设置断点 ``` --- ### **四、持续学习建议** - **社区资源**: - Stack Overflow:搜索`[python]`标签 - 中文论坛:Python.cn(原蟒社区) - **进阶路径**: $$ \text{基础语法} \rightarrow \text{标准库精研} \rightarrow \text{框架专精} \rightarrow \text{源码阅读} $$ - 保持周更:至少贡献1个开源项目issue或写技术博客 > 附:学习成效自测表 > | 能力项 | 达标要求 | > |----------------|----------------------------| > | 基础语法 | 能独立编写贪吃蛇游戏 | > | 数据处理 | 可完成数据清洗+可视化分析 | > | 工程化能力 | 用virtualenv管理项目环境 |
评论 23
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值