爱站内页反链 爱站首页反链 神马是否收录 360网站安全检测 搜狗是否收录 360是否收录 百度是否收录 百度年收录 网站年龄 百度安全 百度查询 导出链接 网站ip查询 网站ICP备案批量查询 搜狗快照 百度快照 百度反链批量查询 搜狗PR批量查询 谷歌PR批量查询 神马权重批量查询 360移动权重批量查询 站长移动权重批量查询 爱站移动权重批量查询 360权重查询 站长PC权重批量查询 爱站PC权重批量查询 搜狗总收录批量查询 360日收录批量查询 360总收录批量查询 百度月收录批量查询 百度周收录批量查询 百度日收录批量查询 百度网站收录批量查询 获取网站IP 获取网站描述 获取网站关键词 获取网站标题 HTTP状态码 搜狗权重 搜狗反链 神马总收录 百度预计流量 ALEXA排名 360反链

当前位置 博文首页 > 教你如何利用Python批量翻译英文Word文档并保留格式

最大化 缩小

    教你如何利用Python批量翻译英文Word文档并保留格式

    作者:程序员启航 时间:2021-06-05 17:46

    一、需求描述

    手上有大量外文文档(本案例以5份为例,分别命名为 test1.docx test2.docx 以此类推),其中一份如下:

    Image

    基本需求「批量将这些文档的内容全部翻译成中文,并转存到新的文件中」,效果如下:

    Image

    高级需求:基本需求满足的同时,要求 「保留原文档的格式」,效果如下:

    Image

    二、逻辑梳理

    2.1 翻译 API

    本需求的核心是翻译,策略是利用网络的翻译 API,这里推荐百度翻译开放平台,不考虑并发数的话可以用标准版,免费使用不限字符量

    百度翻译开放平台:http://api.fanyi.baidu.com/api/trans/product/index

    在使用百度的通用翻译 API 之前需要完成以下工作:

    1.使用百度账号登录百度翻译开放平台(http://api.fanyi.baidu.com);

    2.注册成为开发者,获得APPID;

    3.进行开发者认证(如仅需标准版可跳过);

    4.开通通用翻译API服务:开通链接

    5.参考技术文档和Demo编写代码

    Image

    完成后在个人页面在即可看到 ID 和密钥,这个很重要!下面给出整理好的通用翻译 API 的 demo,已经对输出做简单修改,代码拿走就能用!

    ImageImage

    可以看到,测试内容准确的被翻译出来,注意如果需要多次访问 API,免费版有并发数和时间限制,可以用 time 模块睡眠一秒

    2.2 格式修改

    高级需求的难点就是保留格式,简单来说原文档的页面格式和段落格式是什么,翻译后对应的部分就是什么。

    基于上述的逻辑关系,只需要获取原文档的对应内容再赋值给新翻译的文档即可。(暂时只能满足页面设置和段落设置的统一,针对一段中特定词语的格式修改,保证精确性需要基于自然语言处理NLP,本文暂不涉及)

    2.2.1 页面样式

    页面样式只要包括边距、方向、高度、宽度等等,从原文档中可以看到,采取的是窄边距。但我们无需知道窄边距四个方向应该如何设置,只需要在代码中呈现新旧文档的变量传递即可,具体如下

    Image

    2.2.2 段落样式

    段落样式包括对齐、缩进、间距等等,原文档中采取了段后缩进,标题是居中对齐。这些设置在变量传递中能够很好完成。如果原文档中没有设置的变量值为 None

    Image

    2.2.3 文字块样式修改

    对于字号、加粗、斜体、颜色等样式调整,采取的策略是建立空列表,遍历原文档每一段每一个文字块,获取相应属性并放到各自的列表中,对同一段而言,其包含的文字块属性最多的选项赋值给翻译后文档的对应段落(如同一段全部或大部分的文字是加粗,则翻译后对应段落所有文字块均设置为加粗) 对NLP感兴趣的读者可自行尝试如何高度还原英文文档中某些特定词语的样式修改,并在翻译后的文档中体现出来

    Image

    上面的代码不包含对字体的设置,因为没必要把英文的字体传递给中文文档。对中文字体的设置之前的文章有提到过,比较复杂,直接见代码:

    from docx.oxml.ns import qn
     
    run.font.name = '微软雅黑'
    r = run._element.rPr.rFonts
    r.set(qn('w:eastAsia'), '微软雅黑')

    2.3 整体实现步骤

    现在每个部分操作均以完成,考虑到本例中有多个文档均需要翻译,故全部逻辑如下:

    1.利用 glob 模块批处理框架可获取某个文件的绝对路径

    2.由 python-docx 完成 Word 文件实例化后对段落进行解析

    3.解析出的段落文本交给百度通用翻译 API,解析返回的 Json 格式结果(上面的修改 demo 中已经完成了这一步)并重新写入新的文件

    4.同个文件全部解析、翻译并写入新文件后保存文件

    三、代码实现

    导入需要的模块,除翻译 demo 中需要的库外还需要 glob 库批量获取文件、python-docx 读取文件、time 模块控制访问并发。为什么要 os 模块见下文:

    import requests
    import random
    import json
    from hashlib import md5
    import time
    from docx import Document
    import glob
    import os

    对原 demo 的部分内容进行保留,涉及到 query 参数的代码需要移动到后面的循环中。保留的部分:

    Image

    效果如下

    Image

    获取到段落文本后,可以将段落文本赋值给 query 参数,调用 API demo 的后续代码。输出结果的同时用 add_paragraph 将结果写入新文档

    Image

    最后保存成新文件,期望命名为 原文件名_translated 的形式,可用 os.path.basename 方法获取并经字符串拼接达到目的:

    wordfile_new.save(path + r'\\' + os.path.basename(file)[:-5] + '_translated.docx')

    Image

    单个文件操作完成后将读取和创建文件的代码块放到批处理框架内:

    Image

    完成了上面的内容后,基本需求就完成了。根据我们梳理的对样式的修改知识,再把样式调整的代码加进来就行了,最终完整代码如下:

    Image

    代码运行完毕后得到五个新的翻译后文件

    Image

    翻译效果如下,可以看到英文被翻译成中文,并且样式大部分保留!

    Image

    至此,所有文档都被成功翻译,当然这是机器翻译的,具体应用时还需要对关键部分进一步人工调整,不过整体来说还是一次成功的Python办公自动化尝试!

    js
    上一篇: python3 如何使用 goto 跳转执行到指定代码行
    下一篇:没有了
  • 立即下载 - IIS7 站长工具包
    最新 更多<<
  • 教你如何利用Python批量翻译英文Word文档并保留格式
  • python3 如何使用 goto 跳转执行到指定代码行
  • pycharm利用pyspark远程连接spark集群的实现
  • Python进阶之高级用法详细总结
  • keras修改backend的简单方法
  • 教你使用Python连接oracle
  • 解决安装pytorch因网速问题失败的情况
  • 解读python基于netconf协议获取网元的数据
  • Pandas爆炸函数的使用技巧
  • balmy的专栏:这些年一路相伴的书
  • Skycrab:向Python女神推荐这些年我追过的经典书籍
  • xiongqi215的专栏:那些支持我学习与工作的良师益友
  • IT旁观者:文章千古事、得失寸心知
  • lejuo的专栏:那些年,我们一起读过的《JAVA与模式》
  • yangshuolll的专栏:我程序人生的启蒙书
  • 我想跟代码谈谈:一个不喜欢读书的Javaer的读书单
  • u011620931的专栏:一本书,让我走上编程之路
  • McYeah的专栏:程序员读书的五重天
  • 青瑟只鸟的专栏:大学那会儿,我读过的技术经典图书
  • Yeah517716172的专栏:C语言高手进阶的三碟小菜和一盘大餐
  • 刘炫320的博客:AI,爱
  • mapbar_front的博客:AI?人工智能?我们真的不考虑后果吗?
  • code小生:为 AI 转型,你的决定的对吗?
  • yunxinan的专栏:你会为AI转型吗? 土豆的思考浅谈
  • BVL的博客:AI==喜茶??
  • 超越梦想,一起飞!!!:AI转型中的思考和洞见
  • 学习AI算法,请关注微信公众号:机器学习算法全栈工程师……:AI
  • 奥特曼超人的博客专栏:花非花,物非物,AI岂是池中物(人工智能
  • 麦好的AI乐园:程序员们,AI来了,机会来了,危机也来了
  • 偏爱和例外我都想要 - qq个性签名霸气简短女汉子
    推荐 更多<<
  • 奔跑的前端猿:uniapp 滑动切换
  • 楷哥:【Tomcat 源码系列】认识 Tomcat
  • mac及linux下搭建ruby+rails环境

玻璃钢生产厂家橙子玻璃钢雕塑苏州玻璃钢卡通雕塑上海玻璃钢雕塑像厂家厦门玻璃钢孔子雕塑四会人物玻璃钢雕塑图片玻璃钢人体雕塑报价五一家电商场美陈布置玻璃钢卡通门头雕塑设计方案油菜花商场美陈玻璃钢鹿雕塑单价内蒙古公园玻璃钢雕塑生产厂家泸州玻璃钢雕塑定做湛河玻璃钢雕塑费用嘉定优良玻璃钢雕塑武汉玻璃钢雕塑厂家电话海口加工玻璃钢雕塑哪家专业玻璃钢卡通雕塑生产玻璃钢人物雕塑会碎吗贵阳佛像玻璃钢雕塑价位材质好的玻璃钢卡通雕塑新乡玻璃钢浮雕室外雕塑厂家大型玻璃钢雕塑排行榜玻璃钢动物雕塑制作视频武汉玻璃钢人物雕塑娄底长沙玻璃钢雕塑定制制作云南玻璃钢商城广场美陈雕塑报价安庆五一商场美陈银川玻璃钢景观雕塑经验丰富南宁环保玻璃钢雕塑南平玻璃钢广场雕塑价格香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化