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

第一次运行 Python 项目,使用 python-pptx 提取 ppt 中的文字和图片

人工智能时代,最需要学习的编程语言是:python 。笔者是个 python 小白,昨天花了两个小时,第一次成功运行起来 python 项目 。

项目是 powerpoint-extractor ,可以将 ppt 文件中的图片提取出来,并输出到固定的目录。

1 安装 python 环境

首先打开终端,打开后输入 python3 。确定电脑上是否已安装 python3,如果输入 python 是查看 mac 上的自带版本。

命令:python3【直接回车】

出现下面是页面,表示已经安装python3 【退出时可输入:exit()然后点回车】

若没有安装,安装 python3 如下两种方式:

  1. 第一种方法 brew 安装 python3 :brew install python3
  2. 第二种方法 官网 Python Releases for macOS ,根据自己的需求下载自己需要的版本下载 。

2 项目 powerpoint-extractor

通过 git 命令 clone 该项目 :

git clone git@github.com:2TallTyler/powerpoint-extractor.git

因为项目依赖 python-pptx 组件,通过清华的镜像执行如下的命令:

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple python-pptx

执行完成之后,可以通过 pip3 list 命令查看已安装包列表 :

3 PyCharm 配置

通过 PyCharm 打开该项目 :

上图,我们发现 python 解释器并没有配置好 ,py 脚本显示 import 包失败

点击添加 python 解释器按钮,勾选继承全局包,并确认好 python3 的执行目录是否正确,点击 OK 即可完成配置。

点开 extract.py ,核心代码非常容易理解:

for eachfile in glob.glob(self.input_dir + os.sep + "*.pptx"):ppt = Presentation(eachfile)print("* " + eachfile)presentation_count += 1self.cur_image_index = 1
​name = self.generate_image_name_part(eachfile)
​# 遍历每张幻灯片for page, slide in enumerate(ppt.slides):# 将幻灯片上的所有文本收集到一个字符串中,以换行符分隔text = ''for shape in slide.shapes:if shape.has_text_frame and shape.text.strip():text += os.lineseptext += shape.text
​# 收集每张幻灯片中的图像self.cur_slide_images = []
​# 保存幻灯片中的图像for shape in slide.shapes:self.drill_for_images(shape, page + 1, name)
​# 将页码、收集到的文本和演讲者备注作为新行写入CSV文件image_list = ''if len(self.cur_slide_images) > 0:image_list = ','.join(self.cur_slide_images)  # 将图像列表转换为逗号分隔的字符串
​# 将信息写入CSV文件writer.writerow([eachfile, page + 1, text, slide.notes_slide.notes_text_frame.text, image_list])

这段代码执行了以下操作:

  • 对于每个 PowerPoint 文件,它加载演示文稿并逐一遍历每张幻灯片。
  • 对于每张幻灯片,它收集文本和图像信息,并将其格式化为 CSV 文件的一行。
  • CSV 文件的每一行包括文件名、页码、幻灯片文本、幻灯片的演讲者备注以及图像列表。

4 运行项目

将测试 ppt 拷贝到 input 目录,点击 run 。

当执行完成后,ppt 中有的图片拷贝到 images 目录,同时生成了一个 text.csv 。


当然,我们也可以通过如下的命令直接执行:


关于Python学习指南

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!

👉Python所有方向的学习路线👈

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)

在这里插入图片描述

👉Python学习视频600合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

👉Python70个实战练手案例&源码👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉Python大厂面试资料👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

👉Python副业兼职路线&方法👈

学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。

在这里插入图片描述

👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方CSDN官方认证二维码免费领取保证100%免费

相关文章:

  • 前端理论总结(css3)——页面布局方法
  • 野心、梦想与科幻——浅谈外星殖民与软件工程
  • canal: 连接kafka (docker)
  • 北京小蓝蜂科技有限公司 基本情况
  • SAP Fiori开发中的JavaScript基础知识9 - 代码注释,严格模式,JSON
  • Adobe Illustrator 2023 for Mac/Win:创意无限,设计无界
  • 【Qt】:坐标
  • 使用Docker Compose一键部署前后端分离项目(图文保姆级教程)
  • 基于Spring Boot的在线学习系统的设计与实现
  • 虚幻引擎资源加密方案解析
  • vue3+threejs新手从零开发卡牌游戏(十四):调整卡组位置,添加玩家生命值HP和法力值Mana信息
  • 在项目中缓存如何优化?SpringCache接口返回值的缓存【CachePut、CacheEvict、Cacheable】
  • 【Java八股面试系列】中间件-Redis
  • android 13 相册和拍照问题
  • css简单动画实现
  • JS 中的深拷贝与浅拷贝
  • 《剑指offer》分解让复杂问题更简单
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • Angular 响应式表单 基础例子
  • js ES6 求数组的交集,并集,还有差集
  • Laravel核心解读--Facades
  • Linux各目录及每个目录的详细介绍
  • mockjs让前端开发独立于后端
  • React系列之 Redux 架构模式
  • Vue.js-Day01
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 编写高质量JavaScript代码之并发
  • 第十八天-企业应用架构模式-基本模式
  • 对JS继承的一点思考
  • 简单数学运算程序(不定期更新)
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 判断客户端类型,Android,iOS,PC
  • 写给高年级小学生看的《Bash 指南》
  • $NOIp2018$劝退记
  • ()、[]、{}、(())、[[]]命令替换
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (论文阅读30/100)Convolutional Pose Machines
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (数据结构)顺序表的定义
  • (四) 虚拟摄像头vivi体验
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (一) storm的集群安装与配置
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)Mysql的优化设置
  • *Django中的Ajax 纯js的书写样式1
  • .gitignore文件---让git自动忽略指定文件
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .Net面试题4
  • .NET微信公众号开发-2.0创建自定义菜单
  • .sh
  • @Transactional 详解