python怎么读取pdf为文本_如何用Python从PDF文件中提取文本词汇

在日常工作中,有时可能需要解析一些 PDF 文件,提取文件中的关键词,好让它们能够被我们搜索。解决这个问题的重要部分就是找到如何从 PDF 文件中提取文本数据的方法。从如果是几张或者几十张倒还好办,那要是几百几千张,可能就有点麻烦了。

幸好我们可以用 Python 完成这项工作。下面就分享一下如何用 Python 解析一个PDF文件,将其转为一列关键字。

设置:

本教程我们使用的是 Python 3.6.3,当然在实际工作中你可以使用任何你喜欢的 Python 版本,只要它支持用到的库就行。

需要安装以下 Python 库:

PyPDF2(用于将简单的基于文本的 PDF 文件转为 Python 可读的文本)

Textract(用于将 PDF 扫描文件转为 Python 可读的文本)

Nltk(用于清理短语、将短语转为关键字)

可以通过以下命令行安装这些库:

pip install PyPDF2

pip install textract

pip install nltk

这样我们就安装了解析 PDF 文件所需的库,一定要确保你的 PDF 文件放在你编写脚本所在的文件夹中。

启动编辑器,开始敲代码吧!

第一步:导入库

import PyPDF2

import textract

from nltk.tokenize import word_tokenize

from nltk.corpus import stopwords

第2步:读取 PDF 文件

#写个for循环来打开多个文件

filename = 'enter the name of the file here'

#open能让你读取文件

pdfFileObj = open(filename,'rb')

#变量pdfReader是即将被解析的可读对象

pdfReader = PyPDF2.PdfFileReader(pdfFileObj)

#分辨清楚页码数量能让我们解析所有页码的文件

num_pages = pdfReader.numPages

count = 0

text = ""

# while 循环会读取每一页

while count < num_pages:

pageObj = pdfReader.getPage(count)

count +=1

text += pageObj.extractText()

#这里的if语句用以检查上面的库是否返回了词汇,因为PyPDF2 无法读取扫描文本

if text != "":

text = text

# 如果上面返回False,就运行库textract 将PDF扫描文件转换为文本

else:

text = textract.process(fileurl, method='tesseract', language='eng')

# 现在我们获得了一个text变量,包含了从PDF文件中提取的文本。

# 输入print(text)查看包含的内容。可能会包含很多空格,可能还有’\n’等这样的字眼。

# 下面我们会清洗得到的text变量,将其返回为一列关键字。

第3步:将文本转换为关键字

# 函数word_tokenize() 会将文本句子解析为词汇

tokens = word_tokenize(text)

# 创建一个新列表,包含我们想要清理的标点符号

punctuations = ['(',')',';',':','[',']',',']

# 初始化stopwords变量

stop_words = stopwords.words('english')

# 创建一个列表推导式,它只会返回一列词汇

# 它们既不在stop_words中,也不在puctuations中

keywords = [word for word in tokens if not word in stop_words and not word in punctuations]

现在我们就将手中的 PDF 文件保存为了列表,可以按自己的需要使用了。如果想让 PDF 可搜索,或者解析大量文件进行聚类分析,还可以将得到的列表保存在电子表格中。

可能你还感兴趣:景略集智:用Python进行时序预测的7种方法​zhuanlan.zhihu.comv2-bb1962167a01d9848fe298319f9c7897_180x120.jpg景略集智:有轻功:用3行代码让Python数据处理脚本获得4倍提速​zhuanlan.zhihu.comv2-9e9d80388b0b12bbea1bf4c81e7010c8_180x120.jpg课程 | 景略集智​jizhi.ai

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值