当前位置: 首页 > news >正文

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

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

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

依赖工具

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

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

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

pip install requests python-pptx langchain_community

代码分解

以下是我们的核心代码:

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 os

class 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, images

        except 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 None

            if not file_path:
                print(f"⏭️ 跳过无效源: {source}")
                continue

            text, 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文件中,可以自己进一步扩展函数功能。然后在文件末尾通过一个简单的示例进行测试:

if __name__ == "__main__":
    analyzer = BatchAnalyzer()

    # 输入源配置(支持混合来源)
    input_sources = [
        "te_page_001.pdf",
    ]

    # 执行分析
    result = analyzer.analyze(
        sources=input_sources,
        prompt="内容如下:"
    )

    print("\n✅ 分析结果:")
    print(result)

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

总结

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

相关文章:

  • 广度优先搜索(BFS) vs 深度优先搜索(DFS):算法对比与 C++ 实现
  • 嵌入式硬件篇---WIFI模块
  • 架构思维:通用系统设计方法论_从复杂度分析到技术实现指南
  • 区跨链密码学
  • Vala编程语言教程-控制结构
  • L2TP实验
  • Vue.js 的计算属性和侦听器:提升数据处理与交互的关键工具
  • SpringBoot | 解决 Feign 客户端方法参数过多的问题:Method has too many Body parameters
  • 能“嘎嘎提升”提升用户居住体验的智能家居物联网框架推荐!
  • 响应式数据 和 Pinia 状态
  • 星型拓扑网络原理、图传模块架构与路由NAT需求探讨
  • C语言的setjmp和longjmp:可以作异常处理
  • 《算法笔记》9.3小节——数据结构专题(2)->树的遍历 问题 B: 树的高度
  • VSCode创建VUE项目(四)增加用户Session管理
  • 常⻅CMS漏洞之一:WordPress
  • 【C++】priority_queue的使用及模拟实现(含仿函数介绍)
  • v-form标签里的:rules有什么作用。如何定义。
  • Microsoft Edge浏览器的取证分析(基于Chromium)
  • CSGHub开源版本v1.5.0更新
  • Vulnhub靶场matrix-breakout-2-morpheus攻略
  • 建设机械网站机构/百度网盘免费下载
  • 美观网站建设价格/南京seo按天计费
  • 深圳响应样式网站建设费用/获客渠道找精准客户
  • 大连 网站建设 有限公司/优化seo
  • 邢台做网站优化价格/中国知名网站排行榜
  • 做网站维护前景/现在做推广的新渠道有哪些