昨日,笨女朋友在一堆50多篇文献中,为了找出具有一句话那份文档,花了一个下午。很少傻,但是想想我们平时很多朋友、同事工作生活中都有这种“笨”行为,或是在一堆文件中找出某个文档,要买在一堆Excel中找出一份数据,等等。#真相来了#,如果你学会编程,会Python,你讲把效率大大提高。有人说,我找份文档还写个程序?写完程序我都找到了。可当下一次还要找的时候,你会发现,你有个程序就是坐着喝茶等结果。
我的笨女人今天我们目标是一步一步来实现在一堆PDF文档中,寻找具有某个关键字/句的文档。一PDF文档读取我们要实现的第一步显然是读取一个PDF文档,读取PDF文档的方法有很多。在Python我们习惯性用第三方库提高效率,这里我们介绍几个关于PDF的文档工具:PDFMiner–一个用于从PDF文档中抽取信息的工具。PyPDF2–一个可以分割,合并和转换PDF页面的库。
cmd-pipinstallpdfminer.six如果有不知道Python怎么利用pip安装工具的,哪后面我们将补充些Python基础课程。读取一个PDF文档:参考pdfminer库的官方文档:https://media.readthedocs.org/pdf/pdfminer-docs/latest/pdfminer-docs.pdf完全安装开发文档进行编写的代码如下
参考官方文档实现代码一个PDF页面的结构(详情参考官方在线文档):
一页PDF的文档结构运行结果:
运行结果这个过程类似你在打开一个个PDF并看到里面的内容。下面我们就要实现第二步,看到内容后,进行查找匹配。二检索匹配我们第一步讲PDF文档的内容读取出来了,逻辑上,第二步就是将读取到的内容与我们需要查找的关键字/句,匹配起来,找出第几页第几行。
完整代码如下:
根据关键字匹配一个PDF文档运行效果如下:(30秒不到479页的PDF文档所有匹配结果)
·一般我们看的资料文献都是,50页以内,检索起来还是比较快的,但我们要在一本书的PDF中找出一两句话或者关键词,这种检索方式就比较慢了,我们就可以采取相关性的方式来进行运算,运算两个文本的相识度。不过这个知识点是大数据开发的,后面我们会学习到。三实现文件夹下面所有文档自动匹配根据上面的文本检索原理,我们下一步就是实现一个文件夹下面的所有文档进行自动检索,这才是我们想要的。
获取一个文件目录下的所有PDF路径实现效果如下:
第二步逐本PDF文档进行匹配检索封装代码如下:
运行结果如下(截图为两本书的检索情况):
到了这里,基本上我们已经实现了,在一堆PDF文档中进行检索出对应关键字的文本和页码行数并且输出。显然我们要向能将他使用起来,就要对路径和关键字这两个变量,在运行时输入。那么我们下一步就实现,运行时提示输入文件夹路径和需要检索的关键字,并且封装成EXE程序,方便在Windows平台下运行。四输入流及程序封装EXE提示输入文件夹路径,提示输入需要检索的字句,提示确认开始:代码如下
运行结果如下:
基本上到了这里我们程序已经完成,但是现在还是py文件,还不是正常人用的EXE程序,下面我们将py文件转换成EXE程序。第一步安装pyinstallercmd-pipinstallpyinstaller
第二步进入文件目录执行pyinstaller-Fxxx.py
第三步当前目录下dist文件夹EXE文件
双击运行.发现报错:
领取专属 10元无门槛券
私享最新 技术干货