文章目录
背景
最近需要一个工具来解析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 json 。json 格式返回更多信息; 它包含PDF级别的元数据(metadata)和每个页面的高度/宽度信息。 |
--pages [list of pages] |
一个以空格分隔,以1 索引开头的页面或带连字符的页面范围的列表。例如 1,11-15 ,它将返回第1、11、12、13、14和15页的数据。 |
--types [list of object types to extract] |
选择为char 、anno 、line 、curve 、rect 、rect_edge 。 默认为 char ,anno ,line ,curve ,rect 。 |
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 /
|