本来打算推一篇如何使用 Python 从 PDF 中提取文本内容的文章,但是因为审核原因,公众号上发不出来。尝试排查了一个小时,还是没有搞定,索性就放弃挣扎了。我在这里放出来文章的第一部分,如果有兴趣,可以前往我的 Github 或者码云上查看全文。
Github 访问:https://github.com/GangLi-0814/PyStaData/blob/master/Python_for_Research/Exporting_Data_from_PDFs/Exporting_Data_from_PDFs.md
码云访问:https://gitee.com/mudaozzz/PyStaData/blob/master/Python_for_Research/Exporting_Data_from_PDFs/Exporting_Data_from_PDFs.md
PDF(Portable Document Format),译作便携式文档格式,是一种用独立于应用程序、硬件、操作系统的方式呈现文档的文件格式。PDF 文件通常混合了矢量图形、文本和位图,其基本内容包括:文本存储为内容字符串、由图形和线条组成的用于说明和设计的矢量图形、由照片和其他类型的图片组成的位图。这是 百科-PDF 的解释。
结合自己的经验,我觉得常见的 PDF 文件可以分为两类:一种是文本转化而成(Text-Based),这种文件通常可以直接复制和粘贴;另一种是扫描文件而成(Scanned),比如影印书籍、插入图片制成的文件。依据这个划分,将 Python 中处理 PDF 文件的第三方库可以简单归类:
PyPDF2
,pdfminer
,textract
,slate
等库可用于提取文本;pdfplumber
,camelot
等库可用来提取表格。pytesseract
库;或者采用 OpenCV
进行图像处理。上述大部分是第三方库,所以需要先进行安装:
$pip install PyPDF2
$pip install pdfminer
$pip install pdfminer.six
$pip install textract
$pip install slate
$pip install pdfplumber
$pip install camelot
$pip install pdf2image
$pip install pillow
$pip install pytesseract
接下来,我们就分别使用上面提到的方法,分别看看对两类文档的处理。