PDF文本信息提取(二)
本文作者:王碧琪文字编辑:方 言技术总编:张 邯
Stata暑期线上课程火热招生中~
pdfplumber中的extract_text()函数就可以实现提取文本信息的功能。官方文档如下:
.extract_text(x_tolerance=0, y_tolerance=0)
Collates all of the page's character objects into a single string. Adds spaces where the difference between the x1 of one character and the x0 of the next is greater than xtolerance. Adds newline characters where the difference between the doctop of one character and the doctop of the next is greater than ytolerance.
另外,extract_words()函数也可以实现提取文本信息的功能,二者有些不同,官方描述如下:
.extract_words(x_tolerance=0, y_tolerance=0)
Returns a list of all word-looking things and their bounding boxes. Words are considered to be sequences of characters where the difference between the x1 of one character and the x0 of the next is less than or equal to xtolerance and where the doctop of one character and the doctop of the next is less than or equal to ytolerance.
二者皆是返回文本内容,但是具体的返回信息有所不同,下面用一个实际的例子具体讲解。
二、案例应用
(一)首先引入该库,并且导入待处理的PDF文档,生成pages对象
import pdfplumber
pdf=pdfplumber.open(r"E: \01.pdf")
pages=pdf.pages
import pdfplumber
with pdfplumber.open(r"E: \01.pdf") as pdf:
pages=pdf.pages
(二)对PDF的每一页进行处理
for p in pages:
print(p)
print(p.page_number)
print(p.width)
print(p.height)
print(p.objects) #lines chars rects
p是一个pdfplumber处理后得到的每一页文档的对象,它有一些属性,如page_number返回页码,width返回宽度,height返回高度,objects返回p中识别到的所有对象,包括lines、chars、rects等。extract_text()函数就是提取了这些 objects中的 text。
for p in pages:
text=p.extract_text()
print(text)
print(type(text))
结果是:
for p in pages:
word=p.extract_words()
print(word)
print(len(word))
print(type(word))
结果如下:
for p in pages:
word=p.extract_words()
for unitword in word:
print(unitword['text'])
结果是:
三、完整程序
import pdfplumber
with pdfplumber.open(r"E:\01.pdf") as pdf:
pages=pdf.pages
for p in pages:
print(p)
print(p.page_number)
print(p.width)
print(p.height)
print(p.objects) #lines chars rects
text=p.extract_text()
print(text)
print(type(text))
word=p.extract_words()
print(word)
print(len(word))
print(type(word))
for unitword in word:
print(unitword['text'])
取长补短、互通有无 ——集成学习介绍之Bagging &随机森林
关于我们
微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。