成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用 Python 寫的文檔批量翻譯工具,效果竟然超越付費軟件?

開發(fā) 后端
本文將給大家分享一個實用的Python辦公自動化腳本 「利用Python批量翻譯英文Word文檔并保留格式」,最終效果甚至比部分收費的軟件還要好!先來看看具體的工作內容。

 一、需求描述

[[399543]]

手上有大量外文文檔(本案例以5份為例,分別命名為 test1.docx test2.docx 以此類推),其中一份如下:

基本需求:「批量將這些文檔的內容全部翻譯成中文,并轉存到新的文件中」,效果如下:

高級需求:基本需求滿足的同時,要求 「保留原文檔的格式」,效果如下:

二、邏輯梳理

1. 翻譯 API

本需求的核心是翻譯,策略是利用網(wǎng)絡的翻譯 API,這里推薦百度翻譯開放平臺,不考慮并發(fā)數(shù)的話可以用標準版,免費使用不限字符量!

百度翻譯開放平臺:http://api.fanyi.baidu.com/api/trans/product/index

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

  1. 使用百度賬號登錄百度翻譯開放平臺(http://api.fanyi.baidu.com);
  2. 注冊成為開發(fā)者,獲得APPID;
  3. 進行開發(fā)者認證(如僅需標準版可跳過);
  4. 開通通用翻譯API服務:開通鏈接
  5. 參考技術文檔和Demo編寫代碼 

 

完成后在個人頁面在即可看到 ID 和密鑰,這個很重要!下面給出整理好的通用翻譯 API 的 demo,已經(jīng)對輸出做簡單修改,代碼拿走就能用!

可以看到,測試內容準確的被翻譯出來,注意如果需要多次訪問 API,免費版有并發(fā)數(shù)和時間限制,可以用 time 模塊睡眠一秒。

2. 格式修改

高級需求的難點就是保留格式,簡單來說原文檔的頁面格式和段落格式是什么,翻譯后對應的部分就是什么。

基于上述的邏輯關系,只需要獲取原文檔的對應內容再賦值給新翻譯的文檔即可。(暫時只能滿足頁面設置和段落設置的統(tǒng)一,針對一段中特定詞語的格式修改,保證精確性需要基于自然語言處理NLP,本文暫不涉及)

2.1 頁面樣式

頁面樣式只要包括邊距、方向、高度、寬度等等,從原文檔中可以看到,采取的是窄邊距。但我們無需知道窄邊距四個方向應該如何設置,只需要在代碼中呈現(xiàn)新舊文檔的變量傳遞即可,具體如下: 

 

2.2 段落樣式

段落樣式包括對齊、縮進、間距等等,原文檔中采取了段后縮進,標題是居中對齊。這些設置在變量傳遞中能夠很好完成。如果原文檔中沒有設置的變量值為 None。 

 

2.3 文字塊樣式修改

對于字號、加粗、斜體、顏色等樣式調整,采取的策略是建立空列表,遍歷原文檔每一段每一個文字塊,獲取相應屬性并放到各自的列表中,對同一段而言,其包含的文字塊屬性最多的選項賦值給翻譯后文檔的對應段落(如同一段全部或大部分的文字是加粗,則翻譯后對應段落所有文字塊均設置為加粗) 對NLP感興趣的讀者可自行嘗試如何高度還原英文文檔中某些特定詞語的樣式修改,并在翻譯后的文檔中體現(xiàn)出來。 

 

上面的代碼不包含對字體的設置,因為沒必要把英文的字體傳遞給中文文檔。對中文字體的設置之前的文章有提到過,比較復雜,直接見代碼: 

  1. from docx.oxml.ns import qn 
  2.  
  3. run.font.name = '微軟雅黑' 
  4. r = run._element.rPr.rFonts 
  5. r.set(qn('w:eastAsia'), '微軟雅黑'

3. 整體實現(xiàn)步驟

現(xiàn)在每個部分操作均以完成,考慮到本例中有多個文檔均需要翻譯,故全部邏輯如下:

  1. 利用 glob 模塊批處理框架可獲取某個文件的絕對路徑
  2. 由 python-docx 完成 Word 文件實例化后對段落進行解析
  3. 解析出的段落文本交給百度通用翻譯 API,解析返回的 Json 格式結果(上面的修改 demo 中已經(jīng)完成了這一步)并重新寫入新的文件
  4. 同個文件全部解析、翻譯并寫入新文件后保存文件

三、代碼實現(xiàn)

導入需要的模塊,除翻譯 demo 中需要的庫外還需要 glob 庫批量獲取文件、python-docx 讀取文件、time 模塊控制訪問并發(fā)。為什么要 os 模塊見下文: 

  1. import requests 
  2. import random 
  3. import json 
  4. from hashlib import md5 
  5. import time 
  6. from docx import Document 
  7. import glob 
  8. import os 

對原 demo 的部分內容進行保留,涉及到 query 參數(shù)的代碼需要移動到后面的循環(huán)中。保留的部分: 

 

效果如下: 

 

獲取到段落文本后,可以將段落文本賦值給 query 參數(shù),調用 API demo 的后續(xù)代碼。輸出結果的同時用 add_paragraph 將結果寫入新文檔: 

 

最后保存成新文件,期望命名為 原文件名_translated 的形式,可用 os.path.basename 方法獲取并經(jīng)字符串拼接達到目的: 

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

 

單個文件操作完成后將讀取和創(chuàng)建文件的代碼塊放到批處理框架內: 

 

完成了上面的內容后,基本需求就完成了。根據(jù)我們梳理的對樣式的修改知識,再把樣式調整的代碼加進來就行了,最終完整代碼如下: 

 

代碼運行完畢后得到五個新的翻譯后文件:  

 

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

 

至此,所有文檔都被成功翻譯,當然這是機器翻譯的,具體應用時還需要對關鍵部分進一步人工調整,不過整體來說還是一次成功的Python辦公自動化嘗試!

 

責任編輯:華軒 來源: 早起Python
相關推薦

2022-07-27 10:39:27

Python打包工具

2020-07-20 10:00:52

Python翻譯工具命令行

2020-04-03 10:57:09

文檔分支項目

2024-11-04 08:47:00

2018-10-31 10:11:24

Python編程語言語音播放

2010-03-19 16:52:16

Python代碼

2013-09-09 17:23:29

iOS應用內置付費IAP

2021-08-04 11:55:45

Python天氣查詢PySide2

2018-01-29 20:12:11

python翻譯命令行

2020-04-14 13:10:36

天網(wǎng)終結者代碼

2013-03-25 10:23:24

路徑掃描web路徑掃描工具掃描

2011-05-25 17:17:54

前端開發(fā)

2012-08-15 14:11:21

2020-09-16 06:09:43

開源工具PulpLinux

2021-04-16 07:31:50

工具Postman接口

2020-08-28 13:20:53

谷歌Android開發(fā)者

2020-07-30 12:33:36

惡意軟件Emotet網(wǎng)絡攻擊

2023-01-13 14:34:00

AI神經(jīng)網(wǎng)絡

2015-07-02 16:10:11

UIStackViewiOS 9

2025-06-09 01:20:00

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人av激情| 国产精品免费一区二区三区四区 | 欧美三级三级三级爽爽爽 | 亚洲电影免费 | 波多野结衣精品在线 | 99精品在线观看 | 亚洲最新在线 | 日韩在线中文 | 天天久久 | 国产一区二区三区免费观看在线 | 亚洲精品无 | 欧美在线一区二区视频 | 中文无吗 | 国产精品久久久久久久久久久新郎 | 日韩视频在线免费观看 | 亚洲一区二区久久久 | 欧美高清视频一区 | www.婷婷亚洲基地 | 综合久久亚洲 | 欧美日韩精品 | 97国产超碰 | 亚洲精品天堂 | 色婷婷精品久久二区二区蜜臂av | 亚洲午夜视频 | 日本三级日产三级国产三级 | 精精精精xxxx免费视频 | 日韩在线 | 国产福利小视频 | 免费黄色片在线观看 | www国产成人免费观看视频,深夜成人网 | 亚洲97| 精品国产一级 | 欧美综合一区二区三区 | 一区二区免费看 | 国产成人精品免费视频大全最热 | 91精品国产日韩91久久久久久 | 亚洲综合色丁香婷婷六月图片 | 丁香婷婷久久久综合精品国产 | 国产精品亚洲精品日韩已方 | 国产亚洲高清视频 | 性色网站 |