百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python数据采集-多PDF文档进行关键字数据检索

off999 2024-09-21 20:59 28 浏览 0 评论

昨日,笨女朋友在一堆50多篇文献中,为了找出具有一句话那份文档,花了一个下午。很少傻,但是想想我们平时很多朋友、同事工作生活中都有这种“笨”行为,或是在一堆文件中找出某个文档,要买在一堆Excel中找出一份数据,等等。#真相来了#,如果你学会编程,会Python,你讲把效率大大提高。有人说,我找份文档还写个程序?写完程序我都找到了。可当下一次还要找的时候,你会发现,你有个程序就是坐着喝茶等结果。效率可想而知。显然,21世纪最贵的是数据,但是懂得获取数据是必要技能。

世界的好东西都是懒惰的人发明的

今天我们目标是一步一步来实现在一堆PDF文档中,寻找具有某个关键字/句的文档。

一 PDF文档读取

我们要实现的第一步显然是读取一个PDF文档,读取PDF文档的方法有很多。在Python我们习惯性用第三方库提高效率,这里我们介绍几个关于PDF的文档工具:

  • PDFMiner – 一个用于从PDF文档中抽取信息的工具。
  • PyPDF2 – 一个可以分割,合并和转换 PDF 页面的库。
  • ReportLab – 快速创建富文本 PDF 文档。

你肯定好奇,为什么我知道这些工具呢?显然我也不是无所不能,直接百度下Python PDF的库,平时无聊多积累即可。我们选用PDFMiner,方便快速读取PDF文档内容,下面我们简单介绍下PDFminer的安装过程:

如果有不知道Python怎么利用pip安装工具的,哪后面我们将补充些Python基础课程。

读取一个PDF文档:

参考pdfminer库的官方文档:https://media.readthedocs.org/pdf/pdfminer-docs/latest/pdfminer-docs.pdf

完全安装开发文档进行编写的代码如下

一个PDF页面的结构(详情参考官方在线文档):

运行结果:

这个过程类似你在打开一个个PDF并看到里面的内容。下面我们就要实现第二步,看到内容后,进行查找匹配。

二 检索匹配

我们第一步讲PDF文档的内容读取出来了,逻辑上,第二步就是将读取到的内容与我们需要查找的关键字/句,匹配起来,找出第几页第几行。我们使用正则表达式进行查询匹配,具体知识点,可以参考Python教材文档http://www.runoob.com/python/python-reg-expressions.html。逻辑简单为,正则表达式re查询匹配,然后返回匹配结构,如果不为None,就输出所在页和行。然后退出

具体实现代码如下:

完整代码如下:

运行效果如下:(30秒不到479页的PDF文档所有匹配结果)

· 一般我们看的资料文献都是,50页以内,检索起来还是比较快的,但我们要在一本书的PDF中找出一两句话或者关键词,这种检索方式就比较慢了,我们就可以采取相关性的方式来进行运算,运算两个文本的相识度。不过这个知识点是大数据开发的,后面我们会学习到。

三 实现文件夹下面所有文档自动匹配

根据上面的文本检索原理,我们下一步就是实现一个文件夹下面的所有文档进行自动检索,这才是我们想要的。

第一步:文件夹下所有PDF文件读取(含子目录)

实现效果如下:

第二步 逐本PDF文档进行匹配检索

封装代码如下:

运行结果如下(截图为两本书的检索情况):

到了这里,基本上我们已经实现了,在一堆PDF文档中进行检索出对应关键字的文本和页码行数并且输出。显然我们要向能将他使用起来,就要对路径和关键字这两个变量,在运行时输入。那么我们下一步就实现,运行时提示输入文件夹路径和需要检索的关键字,并且封装成EXE程序,方便在Windows平台下运行。

四 输入流及程序封装EXE

提示输入文件夹路径,提示输入需要检索的字句,提示确认开始:

代码如下

运行结果如下:

基本上到了这里我们程序已经完成,但是现在还是py文件,还不是正常人用的EXE程序,下面我们将py文件转换成EXE程序。

第一步安装pyinstaller

cmd-pip install pyinstaller

第二步 进入文件目录 执行 pyinstaller -F xxx.py

第三步当前目录下dist文件夹EXE文件

双击运行.发现报错:

查询文档,发现pyinstaller不支持Python3.6版本,换成python3.3打包或者

  • 电脑系统为win10 安装的是Python3.6(32位)
  • 安装pyinstaller 因为我Python3.6安装在D盘,所以在CMD中定位到D:\Python\Scripts,然后执行命令pip install pyinstaller,等待安装成功之后到https://github.com/pyinstaller/pyinstaller下载ZIP安装包,解压之后将PyInstaller文件夹复制到D:\Python36\Lib\site-packages目录下。因为pyinstall暂时不支Python3.6

进行打包,运行exe如下:

后面我们继续学习,Python数据采集。在海量PDF数据提取自己想要的数据,就是提取到效率,与财富。想要源码请评论,关注谢谢!

相关推荐

Alist 玩家请进:一键部署全新分支 Openlist,看看香不香!

Openlist(其前身是鼎鼎大名的Alist)是一款功能强大的开源文件列表程序。它能像“万能钥匙”一样,解锁并聚合你散落在各处的云盘资源——无论是阿里云盘、百度网盘、GoogleDrive还是...

白嫖SSL证书还自动续签?这个开源工具让我告别手动部署

你还在手动部署SSL证书?你是不是也遇到过这些问题:每3个月续一次Let'sEncrypt证书,忘了就翻车;手动配置Nginx,重启服务,搞一次SSL得花一下午;付费证书太贵,...

Docker Compose:让多容器应用一键起飞

CDockerCompose:让多容器应用一键起飞"曾经我也是一个手动启动容器的少年,直到我的膝盖中了一箭。"——某位忘记--link参数的运维工程师引言:容器化的烦恼与...

申请免费的SSL证书,到期一键续签

大家好,我是小悟。最近帮朋友配置网站HTTPS时发现,还有人对宝塔面板的SSL证书功能还不太熟悉。其实宝塔早就内置了免费的Let'sEncrypt证书申请和一键续签功能,操作简单到连新手都能...

飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx

前面分享了两期TVGate:Q大的转发代理工具TVGate升级了,操作更便捷,增加了新的功能跨平台内网转发神器TVGate部署与使用初体验现在项目已经开源,并支持Docker部署,本文介绍如何通...

Docker Compose 编排实战:一键部署多容器应用!

当项目变得越来越复杂,一个服务已经无法满足需求时,你可能需要同时部署数据库、后端服务、前端网页、缓存组件……这时,如果还一个一个手动dockerrun,简直是灾难这就是DockerCompo...

深度测评:Vue、React 一键部署的神器 PinMe

不知道大家有没有这种崩溃瞬间:领导突然要看项目Demo,客户临时要体验新功能,自己写的小案例想发朋友圈;找运维?排期?还要走工单;自己买服务器?域名、SSL、Nginx、防火墙;本地起服务?断电、关...

超简单!一键启动多容器,解锁 Docker Compose 极速编排秘籍

想要用最简单的方式在本地复刻一套完整的微服务环境?只需一个docker-compose.yml文件,你就能一键拉起N个容器,自动组网、挂载存储、环境隔离,全程无痛!下面这份终极指南,教你如何用...

日志文件转运工具Filebeat笔记_日志转发工具

一、概述与简介Filebeat是一个日志文件转运工具,在服务器上以轻量级代理的形式安装客户端后,Filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读),并将来自...

K8s 日志高效查看神器,提升运维效率10倍!

通常情况下,在部署了K8S服务之后,为了更好地监控服务的运行情况,都会接入对应的日志系统来进行检测和分析,比如常见的Filebeat+ElasticSearch+Kibana这一套组合...

如何给网站添加 https_如何给网站添加证书

一、简介相信大家都知道https是更加安全的,特别是一些网站,有https的网站更能够让用户信任访问接下来以我的个人网站五岁小孩为例子,带大家一起从0到1配置网站https本次配置的...

10个Linux文件内容查看命令的实用示例

Linux文件内容查看命令30个实用示例详细介绍了10个Linux文件内容查看命令的30个实用示例,涵盖了从基本文本查看、分页浏览到二进制文件分析的各个方面。掌握这些命令帮助您:高效查看各种文本文件内...

第13章 工程化实践_第13章 工程化实践课

13.1ESLint+Prettier代码规范统一代码风格配置//.eslintrc.jsmodule.exports={root:true,env:{node...

龙建股份:工程项目中标_龙建股份有限公司招聘网

404NotFoundnginx/1.6.1【公告简述】2016年9月8日公告,公司于2016年9月6日收到苏丹共和国(简称“北苏丹”)喀土穆州基础设施与运输部公路、桥梁和排水公司出具的中标通知书...

福田汽车:获得政府补助_福田 补贴

404NotFoundnginx/1.6.1【公告简述】2016年9月1日公告,自2016年8月17日至今,公司共收到产业发展补助、支持资金等与收益相关的政府补助4笔,共计5429.08万元(不含...

取消回复欢迎 发表评论: