一、前言

本翻译小程序功能为将ppt中的中文翻译称为英文。项目文件结构如下:

1、newppt:转换成英文之后所存的ppt;
2、oldppt:需要转换的ppt;
3、chromedriver:需要自行下载,和电脑当中所使用的Google浏览器版本对应;
4、main.py:主程序;
5、translating.py:翻译的代码。

二、main.py内容:

#coding = utf-8
from translating import get_words
if __name__=='__main__':
    read_path = './oldppt/xiaochen.pptm'  #待翻译ppt的路径
    save_path = './newppt/xiaochen.pptx'  #存放路径
    get_words(read_path, save_path)
    '''
    #----下面一部分是批量翻译ppt当中的内容-----
    path_in = './oldppt' #需要翻译的ppt所在的路径
    path_out = './newppt' #翻译后的ppt需要保存的路径
    for i in os.listdir(path_in):
        read_path = path_in +'/'+i
        save_path = path_out +'/' +i
        get_words(read_path, save_path)
    '''


三、translating.py内容:

from selenium import webdriver
import time
import re
from pptx import Presentation
def Translate(words):
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument('--headless')
    browser = webdriver.Chrome('./chromedriver',options=chrome_options)
    browser.get("https://fanyi.baidu.com/?aldtype=16047#auto/zh")
    browser.find_element_by_css_selector('#baidu_translate_input').send_keys(words)
    time.sleep(3)   #网页跳变时给网页点时间,跳转完成后再提取网页,若直接提取网页则不需要等待
    data = browser.page_source
    dat = re.findall('<div style="display:none;" id="original-output"><p>(.*?)</p></div>',data)
    Eng = dat[0].replace("</p><p>", "\n")
    Eng = Eng.replace("&gt;",">>")
    Eng = Eng.replace("&gt;&gt;", ">>")
    Eng = Eng.replace("&lt;", "<")
    Eng = Eng.replace(">>>>", ">>")
    browser.quit()
    time.sleep(1)
    return Eng
def get_words(read_path,save_path):
    prs = Presentation(read_path)
    ctotal = len(prs.slides)
    num = 1
    for slide in prs.slides:
        # 获取形状shape
        print("总共%d页,正在翻译第%d页..." % (ctotal, num))
        #print(slide.shapes)
        for shape in slide.shapes:
            if shape.has_text_frame:  # 判断是否有文字
                text_frame = shape.text_frame  # 获取文字框
                text_frame.text.strip()
                if text_frame.text != '':
                    try:
                        Eng = Translate(text_frame.text)
                        text_frame.text = Eng
                    except:
                        print('error')
        num +=1
    prs.save(save_path)

四、写在后面

1、本小程序只能翻译ppt中插入的文本框当中的文字,不能翻译图片;
2、翻译完后,格式需要做相应的调整,有特殊字符的也需要做相应的修改。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐