文字内容自动生成PPT

第一次需求:

  1. 输入一段文字;
  2. 识别文字标题;
  3. 根据文字内容自动将文字分成段落;
  4. 生成PPT文件;
  5. 将文字标题放入PPT文件的第一页;
  6. 将文字内容按段落内容放置在PPT 文件的不同页面上 ;
  7. 将文字标题作为PPT文件名;
  8. 根据每页PPT内容 进行配图;
  9. 将PPT文件保存下来;
import nltk
from pptx import Presentation

# 获取用户输入的文本内容
text = input("请输入文本内容:")

# 使用NLTK库将文章内容分成段落。

import nltk

nltk.download('punkt')

def segment_paragraphs(text):
    tokenizer = nltk.data.load('tokenizers/punkt/english.pickle')
    paragraphs = tokenizer.tokenize(text)
    return paragraphs

# 使用PyPPTX库创建一个新的PPT文件,并添加页面和文本框。
from pptx import Presentation
from pptx.util import Inches

def create_ppt_file(title, paragraphs):
    prs = Presentation()
    
    # 添加标题页
    title_slide_layout = prs.slide_layouts[0]
    slide = prs.slides.add_slide(title_slide_layout)
    title_textbox = slide.shapes.title
    title_textbox.text = title
    
    # 添加段落页
    bullet_slide_layout = prs.slide_layouts[1]
    for paragraph in paragraphs:
        slide = prs.slides.add_slide(bullet_slide_layout)
        textbox = slide.shapes.placeholders[1].text_frame
        textbox.text = paragraph
        
    return prs

# 使用Google Cloud Natural Language API识别文章标题。
import os
from google.cloud import language_v1

os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = 'path/to/credentials.json'

def get_document_title(text):
    client = language_v1.LanguageServiceClient()
    document = language_v1.Document(content=text, type_=language_v1.Document.Type.PLAIN_TEXT)
    response = client.classify_text(request={'document': document})
    categories = response.categories
    if len(categories) > 0:
        return categories[0].name
    else:
        return 'Untitled'

# 使用Unsplash API搜索关键词并下载图像。
import requests
import json
import os

UNSPLASH_ACCESS_KEY = 'your_access_key'

def download_image(query, filename):
    url = 'https://api.unsplash.com/photos/random?query={}&client_id={}'.format(query, UNSPLASH_ACCESS_KEY)
    response = requests.get(url)
    data = json.loads(response.content.decode('utf-8'))
    image_url = data['urls']['regular']
    response = requests.get(image_url)
    with open(filename, 'wb') as f:
        f.write(response.content)

#  整合以上所有功能,编写主函数。
def auto_generate_ppt(text):
    # 分段落
    paragraphs = segment_paragraphs(text)
    
    # 识别标题
    title = get_document_title(text)
    
    # 创建PPT文件并添加页面和文本框
    prs = create_ppt_file(title, paragraphs)
    
    # 下载配图
    for i, paragraph in enumerate(paragraphs):
        filename = '{}_{}.jpg'.format(title, i+1)
        download_image(paragraph, filename)
        slide = prs.slides[i+1]
        slide.shapes.add_picture(filename, Inches(0.5), Inches(1), width=Inches(9), height=Inches(5))
    
    # 保存PPT文件
    prs.save('{}.pptx'.format(title))

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百态老人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值