python搜索pdf内容所在页码_利用Python在pdf文档中寻找某些词出现的页码

要研究pdf文件的页码,首先要考虑这个文件的种类。pdf可能是一本书的电子版,可能是一份简历、可能是由Word、PPT或其他文档导出的……如果不是一本书,通常页面内容里是没有页码的;如果是一本书,虽然有页码,但是封面、前言、目录、章节的封面很可能不会标上页码,而正文的页码和该pdf文件本身的页码对不上,如页面里的第1页会是pdf的第5页,页面的第2页是pdf的第6页……为了统一,我将页码“定义”为pdf的文件的页码。

下面来试试如何通过Python找到词汇出现过的页码,首先我使用的是PyPDF2这个库,这个库使用起来非常简单,但是只能提取pdf中的文本信息,是可以用来寻找词汇的。我首先利用一篇英文文献试了一下:

1 importPyPDF22

3 pdf_File=open('C:\\Users\\user\\Desktop\\2016.pdf','rb')4 pdf_Obj=PyPDF2.PdfFileReader(pdf_File)5 pages=pdf_Obj.getNumPages()6

7 word_list=['predictedvalues','warfarin','NONMEM','atrialfibrillation','results']8

9 for w inword_list:10 page_list=[]11 for p inrange(0,pages):12 text=pdf_Obj.getPage(p).extractText()13 if w intext:14 page_list.append(p+1)15

16 print(w,page_list)

我要寻找的词汇是:predictive values, warfarin, NONMEM, atrial fibrillation, results,由于PyPDF2处理文本时,所有的空格都会消失,所以“predictive values”和“atrial fibrillation”写成了“predictivevalues”和“atrialfibrillation”。输出的结果如下:

可以发现,已经打印出了这些词汇出的页码。然而当我在一份中文pdf上再次应用时,却失败了。我首先想到是编码的问题,于是在第一行加上:

encoding=utf-8

你可能感兴趣的:(python搜索pdf内容所在页码_利用Python在pdf文档中寻找某些词出现的页码)