pdfplumber简介
(1)可以方便地获取pdf的各种信息,包括文本、表格、图表、尺寸等,它不支持修改或生成pdf,也不支持对pdf扫描件的处理
(2)pdfplumber中有两个基础类,PDF和Page。前者用来处理整个文档,后者用来处理整个页面
实操步骤:
(1) 使用pdfplumber提取表格文本
①使用 pdfplumber.open("path/to/file.pdf") 读取pdf,返回一个pdfplumber.PDF类实例
PS.加载带密码的pdf需要传入参数password,例如:pdfplumber.open("file.pdf", password = "test")
②pdfplumber.PDF类介绍
Ⅰ.metadata属性:从PDF的Info中获取元数据键 /值对字典。 通常包括“ CreationDate”,“ ModDate”,“ Producer”等。
Ⅱ.pages属性:一个包含多个pdfplumber.Page实例的列表,每一个实例代表PDF每一页的信息。
Ⅲ.len(pdf.pages)——读取页数;first_page=pdf.pages[0]——选取页码
③pdfplumber.Page类介绍
Ⅰ.page_number属性:页码顺序,从第一页的1开始,第二页为2,依此类推
Ⅱ.width属性/.height属性:页面宽度/宽度
Ⅲ.extract_text(x_tolerance=0, y_tolerance=0)方法:将页面的所有字符对象整理到一个字符串中。
- 若其中一个字符的x1与下一个字符的x0之差大于x_tolerance,则添加空格。
- 若其中一个字符的doctop与下一个字符的doctop之差大于y_tolerance,则添加换行符。
Ⅳ.extract_tables(table_settings) 方法:从页面中提取表格数据
- .find_tables(table_settings={}):返回Table对象的列表。Table对象提供对.cells,.rows和.bbox属性以及.extract(x_tolerance = 3, y_tolerance = 3)方法的访问。
- .extract_tables(table_settings={}):返回从页面上找到的所有表中提取的文本,并以结构table -> row -> cell的形式表示为列表列表的列表。
- .extract_table(table_settings={}):返回从页面上最大的表中提取的文本,以列表列表的形式显示,结构为row -> cell。 (如果多个表具有相同的大小——以单元格的数量来衡量——此方法将返回最接近页面顶部的表
- .debug_tablefinder(table_settings={}):返回TableFinder类的实例,可以访问.edges,.intersections,.cells和.tables属性
输出:
(2)整理成dataframe格式,保存为excel
输出: