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

发布于:2025-03-21 ⋅ 阅读:(35) ⋅ 点赞:(0)

批量文件分析器:从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)

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

总结

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