Python提取PDF⽂本数据
简介
很多⽂件为了安全都会存成pdf格式,如论⽂、技术⽂档、书籍等,⽽通过程序从pdf⽂档中提取对应的⽂本内容⽐较⿇烦。在Python中,⽤于解析pdf⽂件的扩展包有很多,常⽤的有pdfminer3k、PyPDF2、Camelot、pdfplumber等。本⽂主要介绍如何使⽤pdfplumber库来解析pdf⽂件。
pdfplumber最适合提取电脑⽣成的pdf,⽽不是扫描出来的pdf。它是在pdfminer和pdfminer.six的基础上设计的。
安装
pip3 install pdfplumber
或
python3 -m pip install pdfplumber
运⾏
有如下pep8.pdf⽂件
我们可以通过pdfplumber来提取以上pdf⽂件的⽂本信息。
import pdfplumber
with pdfplumber.open("pep8.pdf") as pdf:
print(pdf.pages) # Page对象列表
结果如下
[<Page:1>, <Page:2>, <Page:3>, <Page:4>, <Page:5>, <Page:6>, <Page:7>, <Page:8>, <Page:9>, <Page:10>, <Page:11>, <Page:12>, <Page:13>, <Page:14>, <Page:15>, <Page:16>, <Page:17>]上⾯的pdf.pages代表pdf⽂件中每页(共17页)的对象列表。
我们来提取第⼀页的⽂本信息
import pdfplumber
with pdfplumber.open("pep8.pdf") as pdf:
page = pdf.pages[0]
act_text()) # 提取⽂本
结果如下
Python PEP8 编码规范中⽂版
原⽂链接:/dev/peps/pep-0008/
PEP 8
Title Style Guide for Python Code
Version c451868df657
Last-Modified 2016-06-08 10:43:53 -0400 (Wed, 08 Jun 2016)
Author Guido van Rossum <guido >, Barry Warsaw
<barry >, Nick Coghlan <ncoghlan
m>
Status Active
Type Process
Content-Type: text/x-rst
Created 05-Jul-2001
Post-History 05-Jul-2001, 01-Aug-2013
Introduction 介绍
本⽂提供的Python代码编码规范基于Python主要发⾏版本的标准库。Python的C语⾔实现的C代码规范请查看相应的PEP指南[1]。
这篇⽂档以及PEP 257(⽂档字符串的规范)改编⾃Guido原始的《Python Style Guide》⼀⽂,同时添加了⼀些来⾃Barry的风格指南[2]。
这篇规范指南随着时间的推移⽽逐渐演变,随着语⾔本⾝的变化,过去的约定也被淘汰了。
许多项⽬有⾃⼰的编码规范,在出现规范冲突时,项⽬⾃⾝的规范优先。
A Foolish Consistency is the Hobgoblin of Little
Minds 尽信书,则不如⽆书
Guido的⼀条重要的见解是代码阅读⽐写更加频繁。这⾥提供的指导原则主要⽤于提升代码的可读性,使得在⼤量的Python代码中保持⼀致。
就像PEP 20提到的,“Readability counts”。
这是⼀份关于⼀致性的风格指南。这份风格指南的风格⼀致性是⾮常重要的。更重要的是项⽬的风格⼀致性。在⼀个模块或函数的风格⼀致性
是最重要的。
然⽽,应该知道什么时候应该不⼀致,有时候编码规范的建议并不适⽤。当存在模棱两可的情况时,使⽤⾃⼰的判断。看看其他的⽰例再决定
哪⼀种是最好的,不要羞于发问。
特别是不要为了遵守PEP约定⽽破坏兼容性!
⼏个很好的理由去忽略特定的规则:
1. 当遵循这份指南之后代码的可读性变差,甚⾄是遵循PEP规范的⼈也觉得可读性差。
2. 与周围的代码保持⼀致(也可能出于历史原因),尽管这也是清理他⼈混乱(真正的Xtreme Programming风格)的⼀个机会。
3. 有问题的代码出现在发现编码规范之前,⽽且也没有充⾜的理由去修改他们。
4. 当代码需要兼容不⽀持编码规范建议的⽼版本Python。
Code lay-out 代码布局
Indentation 缩进
每⼀级缩进使⽤4个空格。
续⾏应该与其包裹元素对齐,要么使⽤圆括号、⽅括号和花括号内的隐式⾏连接来垂直对齐,要么使⽤挂⾏缩进对齐[7]。当使⽤挂⾏缩进时,
应该考虑到第⼀⾏不应该有参数,以及使⽤缩进以区分⾃⼰是续⾏。
如果只想提取第⼀页中的表格信息,则可以⽤以下⽅法
import pdfplumber
with pdfplumber.open("pep8.pdf") as pdf:
page = pdf.pages[0]
for row act_table():
print(row)
结果如下
['PEP', '8']
['Title', 'Style Guide for Python Code']
['Version', 'c451868df657']
['Last-Modified', '2016-06-08 10:43:53 -0400 (Wed, 08 Jun 2016)']
['Author', 'Guido van Rossum <guido >, Barry Warsaw\n<barry >, Nick Coghlan <ncoghlan \nm>']
['Status', 'Active']
['Type', 'Process']
['Content-Type:', 'text/x-rst']
['Created', '05-Jul-2001']python中文文档
['Post-History', '05-Jul-2001, 01-Aug-2013']
extract_table()会返回⼀个包含表格数据的嵌套列表。
其他常⽤的提取⽅法
.extract_text() ⽤来提页⾯中的⽂本,将页⾯的所有字符对象整理为的那个字符串
.extract_words() 返回的是所有的单词及其相关信息
.extract_tables() 提取页⾯的所有表格
.to_image() ⽤于可视化调试时,返回PageImage类的⼀个实例(使⽤此⽅法需要安装可视化调试⼯具)
总结
pdfplumber是⼀个很强⼤的pdf解析⼯具包,上⾯也只是简单的介绍了其中⼀部分功能,如果想了解更多关于pdfplumber的使⽤⽅法,可以去相关的中查看。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论