python读取pdf、doc、docx、ppt、pptx文件内容

使用python读取文件,其中pdf、docx、pptx可以直接读,.ppt和.doc文件不能直接读,需要转换成.pptx和.docx文件,并且需要区分系统

如果是linux系统,请先安装组件

bash 复制代码
#doc2docx
yum install -y libreoffice-headless
yum install -y libreoffice-writer

# ppt2pptx
yum install epel-release -y
yum install libgdiplus -y
pip3 install aspose.slides

python代码如下:

python 复制代码
import os


def read_pptx(fp):
    import pptx
    prs = pptx.Presentation(fp)
    for i, slide in enumerate(prs.slides):
        # if i == 1:  在这里可以指定提取ppt的具体页数
        for shape in slide.shapes:
            if shape.has_text_frame:
                text_frame = shape.text_frame
                print(str(i) + '页:' + text_frame.text)


def read_ppt(fp):
    import platform
    os_type = platform.system()
    if os_type == "Windows":
        import win32com.client as wc
        powerpoint = wc.Dispatch("PowerPoint.Application")
        wc.gencache.EnsureDispatch("PowerPoint.Application")
        powerpoint.Visible = 1
        ppt = powerpoint.Presentations.Open(fp)
        ppt.SaveAs(fp+"x")
        powerpoint.Quit()
    elif os_type == "Linux":
        import aspose.slides as slides
        with slides.Presentation(fp) as presentation:
            presentation.save(fp+"x", slides.export.SaveFormat.PPTX)
    read_pptx(fp+"x")

def read_docx(fp):
    import docx
    file = docx.Document(fp)
    print("段落数:" + str(len(file.paragraphs)))  # 段落数为13,每个回车隔离一段
    # 输出每一段的内容
    for para in file.paragraphs:
        print(para.text)

def read_doc(fp):
    import platform
    os_type = platform.system()
    if os_type == "Windows":
        import doc2docx
        doc2docx.convert(fp,fp+"x")
    elif os_type == "Linux":
        import subprocess
        subprocess.check_output(["soffice", "--headless", "---invisible", "--convert-to", "docx", fp, "--outdir", fp+"x"])
    read_docx(fp + "x")


def read_pdf(fp):
    import pdfplumber
    pdfFile = open(fp,"rb")
    pdf = pdfplumber.open(pdfFile)
    for page in pdf.pages:
        text = page.extract_text()
        print(text)


# file_path = "*.pptx"
file_path = "*.ppt"
# file_path = "*.docx"
# file_path = "*.doc"
# file_path = "*.pdf"
file_extension = os.path.splitext(file_path)[-1].lower()
print("文件后缀:" + file_extension)
if file_extension == '.pptx':
    print("读取pptx文件")
    read_pptx(file_path)
elif file_extension == '.ppt':
    print("读取ppt文件")
    read_ppt(file_path)
elif file_extension == ".docx":
    print("读取docx文件")
    read_docx(file_path)
elif file_extension == ".doc":
    print("读取doc文件")
    read_doc(file_path)
elif file_extension == ".pdf":
    print("读取pdf文件")
    read_pdf(file_path)
相关推荐
不坑老师1 小时前
怎么在PPT里面插入网页?
microsoft·powerpoint·wps·office
梦想画家3 小时前
基于PyTorch的时间序列异常检测管道构建指南
人工智能·pytorch·python
PythonFun5 小时前
OCR图片识别翻译工具功能及源码
python·ocr·机器翻译
虫师c5 小时前
Python浪漫弹窗程序:Tkinter实现动态祝福窗口教程
python·tkinter·动画效果·gui编程·弹窗效果
灯火不休时6 小时前
95%准确率!CNN交通标志识别系统开源
人工智能·python·深度学习·神经网络·cnn·tensorflow
deephub7 小时前
FastMCP 入门:用 Python 快速搭建 MCP 服务器接入 LLM
服务器·人工智能·python·大语言模型·mcp
南宫乘风7 小时前
基于 Flask + APScheduler + MySQL 的自动报表系统设计
python·mysql·flask
番石榴AI7 小时前
基于机器学习优化的主图选择方法(酒店,景点,餐厅等APP上的主图展示推荐)
图像处理·人工智能·python·机器学习
开开心心就好7 小时前
电子报纸离线保存:一键下载多报PDF工具
网络·笔记·macos·pdf·word·音视频·phpstorm
裴嘉靖7 小时前
Vue 生成 PDF 完整教程
前端·vue.js·pdf