其他
PyMuPDF提取文本信息
本文作者:王碧琪 文字编辑:方 言 技术总编:张 邯
Python云端培训课程火热招生中~
爬虫俱乐部将于2020年7月25日至28日在线上举行Python编程技术训练营,本次培训采用理论与案例相结合的方式,帮助大家在掌握Python基本思想的基础上,学习科学计算技术与网络数据抓取技术,详情可点击《Python云端培训课程开始报名~》,或点击文末阅读原文直接提交报名信息呦~
pip install pymupdf
import fitz
print(fitz._doc_)
ifile = r"e:\1.pdf"
ofile = r"e:\1.txt"
doc = fitz.open(ifile) #打开文档
#doc=fitz.Document(ifile) 与上一行语句作用相同
print(doc)
print(type(doc))
fitz.Document('E:\1.pdf')
<class 'fitz.fitz.Document'>
print(doc.name) #文档的名称
print(doc.metadata) #metadata (dict)文档的相关信息,以词典格式保存
print(doc.pages()) #doc的pages对象
print(doc.pageCount) #pages的数目(int)
print(len(doc)) #doc的长度,即pages的数目
print(doc.loadPage()) #读入一个Page
listpi=doc.getPageImageList(0) #得到page0中的image,生成一个列表
print(listpi)
E:\1.pdf
{'format': 'PDF 1.7', 'title': None, 'author': '王 碧琪', 'subject': None, 'keywords': None, 'creator': 'Microsoft® Word 2019', 'producer': 'Microsoft® Word 2019', 'creationDate': "D:20200306152024+08'00'", 'modDate': "D:20200306152024+08'00'", 'encryption': None}
<generator object Document.pages at 0x000001A5B43617C8>
1
1
page 0 of E: \1.pdf
[(21, 0, 500, 378, 8, 'DeviceRGB', '', 'Image21', 'DCTDecode')]
3.进行提取
(1)对于某一页进行提取
doc可以直接采用切片形式指定某一个page,本PDF文档中只有一个page,注意是0而非1 。getText()方法可以提取出page中的全部文本信息。
pa=doc[0]
text1=pa.getText()
print(text1)
也可以对doc对象使用getPageText(page),其中page为指定页码。
text2=doc.getPageText(0)
print(text2)
(2)对全部page进行提取
pages是一个generator,需要遍历得到每一页的信息。
for p in doc.pages():
text3 = p.getText()
print(text3)
4.导出到txt中
with open(ofile,"w") as f:
for page in doc:
text = page.getText()
f.write(text)
pip install pymupdf
import fitz
print(fitz.__doc__)
ifile = r"e: \1.pdf"
ofile =r"e: \1.txt"
doc = fitz.open(ifile) #打开文档
#doc=fitz.Document(ifile) 与上一行语句作用相同
print(doc)
print(type(doc))
print(doc.name) #文档的名称
print(doc.metadata) #metadata (dict)文档的相关信息,以词典格式保存
print(doc.pages()) #doc的pages对象
print(doc.pageCount) #pages的数目(int)
print(len(doc)) #doc的长度,即pages的数目
print(doc.loadPage()) #读入一个Page
listpi=doc.getPageImageList(0) #得到page0中的image,生成一个列表
print(listpi)
pa=doc[0]
text1=pa.getText()
print(text1)
text2=doc.getPageText(0)
print(text2)
for p in doc.pages():
# for p in doc:#与上一行语句作用相同
text3 = p.getText()
print(text3)
with open(ofile,"w") as f:
for page in doc:
text = page.getText()
f.write(text)
PDF文本信息提取(二)
关于我们
微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。