python实现整篇word文档翻译

您所在的位置:网站首页 谷歌翻译整篇文档 python实现整篇word文档翻译

python实现整篇word文档翻译

2024-06-10 14:54| 来源: 网络整理| 查看: 265

最近看论文的需求比较大,但无奈基本都是英文的,且没有免费好用的文档翻译软件,就想着自己用python写一个。

每个python项目都要明确思路和目的,这次我们要读取整篇word文档,将其翻译后保存,所以第一次分化任务为三项,一是读取文档,二是翻译文档,三是保存文档。

接下来就只需一项一项完成即可。

首先是读取文档,python里面读取word文档要用docx库,安装方法如下

pip install python-docx

安装好后我们进行调用,读取word文档所在路径:

# 创建一个新的Word文档 output_doc = docx.Document() # 获取要翻译的Word文档 path = input('请输入文件路径:')

这样我们完成了文档的读取,接下来就是文档的翻译。我们先想一想,我们一般用什么实现翻译,是的,无非是各种翻译软件,因此我们在这里要做的就是调用这些翻译软件的接口,将文本输入,获取翻译输出,我们这里先选择最简单的translate接口,有时间了再去爬网易或者其他的。为此我们需要安装translate库,安装方法:

pip install translate

安装好后我们只需将文档内容喂给库中函数即可,注意这里是调用的接口,最好不要一次性喂整篇文章,不然人家容易噎住,因此理想的情况是我们一段一段的喂给它,让他慢慢消化。为此我们需要将文档进行分割,则可以运用nltk库,安装方法:

pip install nltk

安装好后我们开始对文档进行段落分割,具体操作:

doc = docx.Document(path) #初始化段落列表 worddata =[] # 定义句子分割器 sent_detector = nltk.data.load('tokenizers/punkt/english.pickle') # 遍历文档中的每个段落 for para in doc.paragraphs: # 使用句子分割器将段落分割成句子 sentences = sent_detector.tokenize(para.text.strip()) # 输出每个句子 for sentence in sentences: worddata.append(sentence)

这样我们得到了段落列表worddata,先定义翻译函数,之后循环调用消化worddata内容即可。

def translate(text): # 创建Translator对象 translator = Translator(to_lang='zh') # 翻译文本 result = translator.translate(text) # 返回翻译结果 return result

如此一来我们就完成了第二项翻译的任务,最后只需将翻译的内容保存到word即可。

for sentence in worddata: # 将英文句子翻译成中文 translated_sentence = ComTra.translate(sentence) # print(translated_sentence) # 将中文句子添加到输出文档中 output_doc.add_paragraph(translated_sentence) # 保存输出文档 output_doc.save('result.docx')

至此,我们已完成了全部的任务,大功告成,先来看看翻译结果:

爱是一种复杂而多方面的情感,它激发了艺术家、作家和哲学家的灵感。 这种感觉难以界定,但却被普遍认为是世界上最强大的力量之一。 无论是两个人之间的浪漫爱情,父母对孩子的爱,还是对朋友和社区的爱,爱都有能力改变个人和整个社会。 爱情的核心是联系和亲密。 这是一种被另一个人深深理解、接受和欣赏的感觉。

基本无误,测试成功,最后,主函数如下:

from functions import sentenceSplit as SenSp from functions import CommonTranslate as ComTra import docx # 创建一个新的Word文档 output_doc = docx.Document() # 获取要翻译的Word文档 # path = input('请输入文件路径:') path = 'Love.docx' #将文档中的段落分割并保存成列表 worddata = SenSp.SentenceSplit(path) for sentence in worddata: # 将英文句子翻译成中文 translated_sentence = ComTra.translate(sentence) print(translated_sentence) # 将中文句子添加到输出文档中 # output_doc.add_paragraph(translated_sentence) # 保存输出文档 # output_doc.save('result.docx') if __name__ == '__main__': pass

码字完成,(打个哈欠,哈~)好了,如果你觉得这篇文章有用或者想要原始原件和代码及相关指导的,可以点击下方链接给鄙人打赏一手,我看到了都会回复的,嘻嘻,最后大家一起加油,在变强的路上一去不复返!

https://i.postimg.cc/nVRsQvvh/2-1.jpg



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3