PDF(Portable Document Format,可携带文档格式)是一种以PostScript语言图像模型为基础,在不同电脑、打印机上都能够保持固定的格式。正是因为它这一特性,让PDF备受欢迎。
但是,PDF与很多文档之间的转换往往是不可逆的。
你可以轻松的把Word、PPT、Excel、图像转换成PDF。但是,想要再把PDF转换成图像、文本就变得非常复杂。
我曾经写过一篇利用Python语言处理PDF文档的方式,其中用到了一个第三方工具包PDFMiner。
其实,诸如此类的工具包并不在少数。
本文要介绍的Pdfminer.six是原始PDFMiner的社区维护的分支。
它同样能够同PDF文档中提出信息,并且,它更加侧重读取和解析文本数据。它能够直接从PDF源代码中提取页面中的文本,同时可以获取位置、字体、颜色等信息。
因此,相对于大多数PDF处理工具包,Pdfminer.six在PDF文档处理方面做的更加彻底,效果也更好。
本文,就来介绍一下这个Python工具包的使用。
Pdfminer.six
安装
Pdfminer.six的安装和其他Python工具包一样,非常简单,直接通过pip
命令就可以完成安装:
$
提取PDF信息
Pdfminer.six提供了2种提取PDF信息的方式:
- 命名行
- Python代码
首先,来看一下利用命令行提取PDF信息的方式。
Pdfminer.six的源代码中提供一些PDF处理工具,它们都被放置在源代码的tools
目录下。因此,你可以克隆代码,直接在命令行下调用这些工具脚本提取PDF信息,例如:
$
除此之外,还有其他的工具脚本。比如,PDF文本对比、提取PDF内部结构。
其次,再来看一下通过Python代码提取PDF信息。
通过PDF代码提取PDF信息也分2种方式:
- 高阶接口
- 自定义
Pdfminer.six目前提供了3个用于PDF处理的高阶接口,它们分别是:
- extract_text
- extract_text_to_fp
- extract_pages
如果,你想提取PDF中的页面或者其中的文本内容,可以直接调用这些高阶接口,没必要从头至尾实现一遍解析代码,例如:
from pdfminer.high_level
当然,PDF的处理场景远不止提取文本和页面这么简单。
有时候,还需要提取图像、字体等信息。
这时候命令行工具和高阶接口就无法胜任,就需要定制化的进行开发,需要用到Pdfminer.six的一些底层接口。
例如,从PDF文件中提取文本并将其保存到python变量中:
from io
此外,Pdfminer.six的强大之处在于,它还可以提取PDF文档中字体、大小等更加细节的信息,
from pdfminer.high_level
PDF中往往会有很多图像,通过Pdfminer.six内置的脚本,可以把PDF文档中的图像直接提取出来:
$
这样,example.pdf
文档中的所有图像都会被提取到cats-and-dogs
文件夹下。
结语
PDF作为一种常用的文档格式,目前在网络上很容易就可以找到PDF处理方面的在线或者桌面工具。其中,有很多工具的确很良心。
但是,绝大多数工具都会对处理页数、文档大小有限制。超出限制,就需要付出一定的费用。
如果你有一定的Python开发基础,通过编写代码的方式可以很轻松的完成那些付费才能完成的事情。
而且,它还能够保护自己的隐私数据,避免PDF文档上传到服务器,造成信息泄露。
往期精选
太酷了!一款强大的机器学习可视化IDE
太好用!教你几招Python魔法方法的妙用
GitHub万赞!这个神仙资源一定能够让你的Python技能更上一层楼
福利
最近我花费了半个月的时间,整理了1份理论+实践的计算机视觉入门教程,这或许是你见过最好的一份CV教程之一。独家打造、完全免费,需要的同学可以扫码添加我的个人微信,发送“CV”获取~