Python实现查询一个文件中的pdf文件中的关键字

news2024/11/24 1:40:12

要求,查询一个文件中的pdf文件中的关键字,输出关键字所在PDF文件的文件名及对应的页数。

import os
import PyPDF2

def search_pdf_files(folder_path, keywords):
    # 初始化结果字典,以关键字为键,值为包含关键字的页面和文件名列表
    results = {keyword: [] for keyword in keywords}

    # 遍历指定文件夹下的所有文件
    for root, dirs, files in os.walk(folder_path):
        for filename in files:
            if filename.endswith(".pdf"):
                # 构建PDF文件的完整路径
                pdf_path = os.path.join(root, filename)

                # 打开PDF文件
                with open(pdf_path, "rb") as pdf_file:
                    pdf_reader = PyPDF2.PdfReader(pdf_file)

                    # 获取PDF的总页数
                    total_pages = len(pdf_reader.pages)

                    # 遍历PDF的每一页
                    for page_num in range(total_pages):
                        # 读取页面内容
                        page = pdf_reader.pages[page_num]
                        page_text = page.extract_text()

                        # 检查所有关键字
                        for keyword in keywords:
                            if keyword in page_text:
                                results[keyword].append({
                                    "file_name": filename,
                                    "page_number": page_num + 1  # PDF页码从1开始
                                })

    return results

# 示例用法
folder_to_search = r"C:\Users\Administrator\Desktop\2"
search_keywords = ["SVD", "线性回归", "XGBoost", "不存在的关键字"]  # 添加多个关键字,包括不存在的关键字
results = search_pdf_files(folder_to_search, search_keywords)

# 打印结果
for keyword, keyword_results in results.items():
    if keyword_results:
        print(f"关键字 '{keyword}' 所在的文件及页数:")
        for result in keyword_results:
            print(f"文件 '{result['file_name']}' 的第 {result['page_number']} 页")
    else:
        print(f"没有找到关键字 '{keyword}'。")
    print()  # 输出换行以区分不同关键字的结果

 为了方便且高效看论文。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1022983.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据分析三剑客之一:Pandas详解

目录 1 Pandas介绍 2 Pandas的安装与导入 2.1 Pandas模块安装 2.2 Pandas模块导入 3 pandas数据结构及函数 3.1 Series结构 3.1.1 ndarray创建Series对象 3.1.2 dict创建Series对象 3.1.3 标量创建Series对象 3.1.4 位置索引访问Series数据 3.1.5 标签索引访问Series…

华为云HECS安装docker

1、运行安装指令 yum install docker都选择y,直到安装成功 2、查看是否安装成功 运行版本查看指令,显示docker版本,证明安装成功 docker --version 或者 docker -v 3、启用并运行docker 3.1启用docker 指令 systemctl enable docker …

【Linux基础】第七章:搜索查找-find查找文件或者目录

find命令是根据文件属性进行查找的,如文件名,文件大小,所有者,所有组,是否为空,访问时间,修改时间等。 基本格式: find path [options] 先定位到etc 目录下 cd /etc1.按照文件名查找…

成集云 | 金蝶EAS集成聚水潭ERP(金蝶EAS主管库存)| 解决方案

源系统成集云目标系统 方案介绍 金蝶EAS是一款全球首款融合TOGAF标准SOA架构的企业管理软件,专门为大中型企业设计,以“创造无边界信息流”为产品设计理念,支持云计算、SOA和动态流程管理的整合技术平台。 聚水潭是一款以SaaS ER…

IP地址定位的基本原理

IP地址定位是一种用于确定互联网上设备地理位置的技术,它是网络管理、安全监控和市场定位等领域的重要工具。本文将深入探讨IP地址定位的基本原理,以及它是如何工作的。 1. IP地址的结构 IP地址是互联网上的设备的唯一标识符,它由一系列数字…

深入理解算法的时间复杂度

文章目录 时间复杂度的定义时间复杂度的分类时间复杂度分析常见数据结构和算法的时间复杂度常见数据结构常见算法 常见排序算法说明冒泡排序(Bubble Sort)快速排序(Quick Sort)归并排序(Merge Sort)堆排序(Heap Sort) 时间复杂度的定义 时间复杂度就是一种用来描述算法在输入规…

centos搭建activemq5.16

下载jdk、activemq(我这里都放在在/usr/local)之后。。。 在/usr/local/activemq/bin/目录下有一个env文件添加JAVA_HOME 注意activemq.xml里面不能出现中文,注释也不行 接下来在/usr/lib/systemd/system/创建activemq.service文件 # 单元节…

天选之子C++是如何发展起来的?如何学习C++呢?

天选之子C是如何发展起来的?如何学习C呢? 一、什么是C二、C发展史三、C的重要性3.1 语言的使用广泛度3.2 在工作领域 四、如何学习C4.1 大佬怎么学?4.2 自己怎么学 一、什么是C C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复…

【LeetCode-中等题】107. 二叉树的层序遍历 II

文章目录 题目方法一:队列层序迭代 题目 方法一:队列层序迭代 解题详情:【LeetCode-中等题】102. 二叉树的层序遍历 res.add(0,zres); //效果是将 zres 列表作为 res 的第一个子列表,并将其它原本在第一位置及之后的子列表向后移…

1979-2021年地级市空气流通系数数据

1979-2021年地级市空气流通系数数据 1、时间:1979-2021年 2、来源:整理自era-interim 3、范围:367个地级市 4、指标:10米风速、边界层高度、空气流通系数 5、指标解释: 空气流动系数是空气污染的常用工具变量&am…

音视频转换器 Permute 3 for mac中文

Permute 3是一款界面简洁且易于使用的媒体文件格式转换器。它具有强大的转换功能,无需复杂的配置,只需将文件拖放到界面窗口,就能进行媒体转换,非常方便。 Permute 3支持视频、音乐和图像的格式转换,可以通过拖拽支持…

Jetpack Compose基础组件 - Image

Image的源码参数预览 Composable fun Image(painter: Painter,contentDescription: String?,modifier: Modifier Modifier,alignment: Alignment Alignment.Center,contentScale: ContentScale ContentScale.Fit,alpha: Float DefaultAlpha,colorFilter: ColorFilter? …

个人记录--跟着同门学c#

前提:已安装Visual Studio ArcEngine&DotSpatial C#二次开发(一)之DotSpatial使用心得记录_dotspatial 开发文档_只想敲代码的研究僧的博客-CSDN博客 ArcEngine是一种用于二次开发的软件开发工具包,可以用来创建基于ArcGIS…

深入分析ASEMI代理的瑞萨R5F5210BBDFB#10芯片

编辑-Z 随着科技发展的不断升级,电子技术正变得越来越复杂。不过,在这个繁复的电子世界中,有一样东西在不断地帮助着我们简化各种复杂的任务,那就是微型集成电路,也叫做“芯片”。今天我们将会对R5F5210BBDFB#10芯片这…

改变世界的物理学方程

1.牛顿万有引力定律 艾萨克牛顿爵士的万有引力定律,通常简称为牛顿万有引力定律,是物理学的基本原理。牛顿于 1687 年在其开创性著作《Philosophi Naturalis Principia Mathematica》(自然哲学的数学原理)中发表了这一定律。 该定…

6个免费视频素材网站,高清无水印,赶紧收藏起来~

6个免费视频素材网站,高清无水印,赶紧收藏起来~ 1、菜鸟图库 https://www.sucai999.com/video.html?vNTYxMjky 菜鸟图库网素材非常丰富,网站主要还是以设计类素材为主,高清视频素材也很多,像风景、植物、动物、人物、…

使用 PyTorch 的计算机视觉简介 (1/6)

一、说明 Computer Vision(CV)是一个研究计算机如何从数字图像和/或视频中获得一定程度的理解的领域。理解这个定义具有相当广泛的含义 - 它可以从能够区分图片上的猫和狗,到更复杂的任务,例如用自然语言描述图像。 二、CV常见的问…

提升网站效率与SEO优化:ZBlog插件集成解决方案

在创建和管理网站的过程中,使用合适的工具和插件可以大幅提升效率,并改善搜索引擎优化(SEO)结果。ZBlog插件是为ZBlogCMS设计的一组工具,它们帮助网站管理员轻松地满足各种需求,从采集内容到发布、推送和SE…

基于dq0变换的三相并联有源电力滤波器模拟模型(Simulink)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

CSS——grid网格布局的基本使用

网格布局在实现页面自适应,大屏可视化中常常使用,在这篇博客里,记录一下网格布局的基本使用。 参考文档:网格布局_菜鸟教程 文章目录 1. 体会grid的自适应性2. grid-template-arr配置网格行列3. 网格单位fr与repeat()简写属性值4…