批量文件分析器:使用Python从PPT和PDF中提取文本

news/2025/3/22 1:07:19/

批量文件分析器:从PPT和PDF中提取文本 📰🔍

你好,小伙伴们!今天我们来聊聊如何批量处理和分析PDF与PPT文件内容。我们会使用一个Python脚本,帮你提取文件的文本内容。此工具特别适合需要处理大量文档的朋友,例如学生、研究人员,甚至是职场达人。让我们开始吧!💡

依赖工具

在这个项目中,我们使用了几个重要的Python库:

  • requests: 用于下载在线文件。
  • Pathlib: 简单优雅地处理路径。
  • python-pptx: 从PPT文件中提取文本。
  • PyPDFLoader: 用于解析PDF文件内容。

先确保在你的环境中安装了这些库:

pip install requests python-pptx langchain_community

代码分解

以下是我们的核心代码:

python">import requests
from pathlib import Path
from typing import List, Tuple
from urllib.parse import urlparse
from pptx import Presentation
from langchain_community.document_loaders import PyPDFLoader
import osclass BatchAnalyzer:def _extract_content(self, file_path: str) -> Tuple[str, List[str]]:"""统一内容提取方法"""ext = Path(file_path).suffix.lower()text = ""images = []try:# 处理PPT文件if ext == '.pptx':prs = Presentation(file_path)text_contents = []for slide in prs.slides:for shape in slide.shapes:if hasattr(shape, "text"):text_contents.append(shape.text)text = "\n".join(text_contents)# 处理PDF文件elif ext == '.pdf':text = "\n".join([p.page_content for p in PyPDFLoader(file_path).load()])return text, imagesexcept Exception as e:print(f"❌ 内容提取失败 {file_path}: {str(e)}")return "", []def analyze(self, sources: List[str], prompt: str) -> dict:"""批量分析入口"""combined_text = []all_images = []for source in sources:print(f"🔍 处理输入源: {source}")if urlparse(source).scheme in ('http', 'https'):file_path = self._download_file(source)else:file_path = source if os.path.exists(source) else Noneif not file_path:print(f"⏭️ 跳过无效源: {source}")continuetext, images = self._extract_content(file_path)if text:combined_text.append(text)all_images.extend(images)content = [{"type": "text", "text": f"{prompt}\n\n{' '.join(combined_text)}"}]return content

核心组件

  1. 内容提取:

    • PDFPPTX文件的文本内容提取分别由 PyPDFLoaderpython-pptx处理。我们在_extract_content方法中对文件类型进行判断,并调用相应函数。
  2. 处理输入源:

    • 支持本地文件和在线资源的处理。对于在线文件,我们下载文件后再进行解析。
  3. 分析方法:

    • analyze方法接收文件路径列表和提示词并返回提取的文本信息。最终的输出格式是字典形式。

使用说明

将代码复制到一个Python文件中,可以自己进一步扩展函数功能。然后在文件末尾通过一个简单的示例进行测试:

python">if __name__ == "__main__":analyzer = BatchAnalyzer()# 输入源配置(支持混合来源)input_sources = ["te_page_001.pdf",]# 执行分析result = analyzer.analyze(sources=input_sources,prompt="内容如下:")print("\n✅ 分析结果:")print(result)

确保你的工作目录中有正确的文件路径,然后运行脚本,即可获得分析结果。是不是很简单方便?😊

总结

这个批量分析器为需要快速批量提取文档内容的用户提供了极大的便利。无论是项目材料,还是分析报告,这个工具都能派上用场。如果你对此有任何想法或问题,欢迎在评论区留言讨论!欢迎尝试并与我们分享你的经验与成果!🚀


http://www.ppmy.cn/news/1581022.html

相关文章

HW华为流程管理体系精髓提炼华为流程运营体系(124页PPT)(文末有下载方式)

资料解读:HW华为流程管理体系精髓提炼华为流程运营体系(124页PPT) 详细资料请看本解读文章的最后内容。 华为作为全球领先的科技公司,其流程管理体系的构建与运营是其成功的关键之一。本文将从华为流程管理体系的核心理念、构建…

信号处理等相关知识点

TDNN(时延神经网络)--CNN神经网络的基础 普通神经网络: 只包含一帧的特征向量 MFCC :用于语音特征提取的算法,提取出音色(很能区分不同人的说话声音)。 TDNN 滤波器:重要特征提取。 迁移学习 小波散射变换 (WST) 小波变换--傅里叶时间无限-》时间局域 点乘:求向…

汽车一键启动系统使用方便,舒适出行,轻松匹配

汽车一键启动系统 系统定义 移动管家汽车一键启动系统是装置在智能汽车上的一部分,是实现简约打火和熄火过程的一个按钮装置。它可以在原车钥匙锁头的位置改装,也能独立面板改装,现在很多高低配置的车辆都可安装。 功能特点 基本功能 启…

数组模拟邻接表 #图论

文章目录 为什么要用数组来模拟邻接表存储思路遍历思路 树是特殊的图,因此邻接表可以存储图和树两种数据结构。 为什么要用数组来模拟邻接表 在算法设计当中,利用数组来代替结构体模拟各种数据结构会更加简单。 存储思路 给定如下数据,我们可以构造如…

基于微信小程序的充电桩管理系统

一、开发背景 在开发充电汽车管理系统之前,深入的需求分析至关重要。我们要充分了解不同用户群体的需求,比如私家车主希望充电过程便捷、高效、安全,能够实时查看充电状态和费用明细;出租车、网约车司机则更注重充电速度和充电桩…

设计模式,如单例模式、观察者模式在什么场景下使用

以下是单例模式和观察者模式的介绍及应用场景: 单例模式 - 定义:保证一个类仅有一个实例,并提供一个全局访问点。 - 实现方式:私有化构造函数,防止外部实例化;提供一个静态成员函数来获取唯一实例。 - 应用…

前端解决跨域的几种方案

以下是前端解决跨域问题的 7 种主流方案,根据应用场景和实现难度排序,附详细实现示例: 一、开发环境解决方案 1. Webpack DevServer 代理(推荐) // vue.config.js / webpack.config.js module.exports {devServer: …

Qt-QChart实现折线图

一、介绍场景 动态查看数据变化,或者了解数据发展趋势,让数据可以形象直观展现出来,这里推荐使用折线图的方式展现,本文抛砖引玉,简单实现一个实例,效果图如下: 二、实现步骤 1、charts组件 …