3. pdfplumber
Pdfplumber是⼀个可以处理pdf格式信息的库,可以很好地解析PDF的⽂本和表格内容。可以查关于每个⽂本字符、矩阵、和⾏的详细信息,也可以对表格进⾏提取并进⾏可视化调试,并且对中⽂有很好的⽀持,⼗分推荐使⽤该⽅法。
pdfplumber.pdf中包含了.metadata和.pages两个属性:
.metadata是⼀个包含pdf信息的字典。
.pages是⼀个包含页⾯信息的列表。
每个pdfplumber.page的类中包含了⼏个主要的属性:
.page_number 页码
.width 页⾯宽度
.height 页⾯⾼度
.objects/.chars/.lines/.rects 这些属性中每⼀个都是⼀个列表,每个列表都包含⼀个字典,每个字典⽤
于说明页⾯中的对象信息, 包括直线,字符, ⽅格等位置信息。
⼀些常⽤的⽅法:
.extract_text() ⽤来提页⾯中的⽂本,将页⾯的所有字符对象整理为的那个字符串
.extract_words() 返回的是所有的单词及其相关信息
.extract_tables() 提取页⾯的表格
.to_image() ⽤于可视化调试时,返回PageImage类的⼀个实例
1. 解析⽂本内容
pdfplumber中的extract_text()函数是可以直接识别PDF中的⽂本内容:
import pdfplumber
import pandas as pd
with pdfplumber.open(path) as pdf:
content = ''
for i in range(len(pdf.pages)):
# 读取PDF⽂档第i+1页
page = pdf.pages[i]
# act_text()函数即读取⽂本内容,下⾯这步是去掉⽂档最下⾯的页码
page_content = '\n'.act_text().split('\n')[:-1])
content = content + page_content
# 提取以上解析结果中,“地⽅法规”和“2.其他有关资料”之间的内容
result = content.split('地⽅法规列举如下:')[1].split('2.其他有关资料')[0]
2. 解析表格内容
pdfplumber中的extract_tables()函数是可以直接识别PDF中的表格的,使⽤extract_tables函数得到的是Table⼀个嵌套的List类型,转化成DataFrame会更⽅便查看和分析。
import pdfplumber
import pandas as pd
with pdfplumber.open(path) as pdf:
python怎么读取py文件first_page = pdf.pages[0]
tables = act_tables()
for table in tables
df = pd.DataFrame(table)
# 第⼀列当成表头:
df = pd.DataFrame(table[1:],columns=table[0])
4. Camelot
Camelot读取PDF⽂件中的表格数据很好⽤,并且能够很好的⽀持中⽂,但是Camelot有很多局限性:
⾸先,使⽤stream时,表格⽆法被⾃动侦测到,stream把整个页⾯当成⼀个table。
其次,camelot只⽤使⽤基于⽂本的PDF⽂件⽽不能使⽤扫描⽂档。import camelot
import pandas as pd
tables = ad_pdf(filepath=path,pages='1',flavor='stream')
df = pd.DataFrame(tables[0].data)
综上所述,建议使⽤pdfplumber扩展包来解析PDF⽂档的⽂本和表格,如果只解析⽂本内容,也可以使⽤pdfminer ,⽽解析英⽂⽂档内容,可以使⽤PyPDF2。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论