[Python]將Word文件整個翻譯,繁體中文轉換越南文

更新於 2024/11/21閱讀時間約 7 分鐘

最近來越南出差,遇到要將自己學習心得轉換成越南文給越南同事看。就研究了一下如何用Python來翻譯整個Word的文件,具越南同事說他有比對中文跟越南文意思差不多。

本文將教您如何使用 Python 的 python-docx googletrans 套件,快速完成 Word 文件的自動翻譯。

本教學以繁體中文翻譯為越南語為範例,並提供程式碼的逐步解說。

我測試版本為

python 3.11.3
python-docx version: 1.1.2
googletrans version: 4.0.0-rc.1

繁體中文範本

raw-image

轉換成越南文

raw-image

開始準備

在開始之前,請確保您已安裝以下必要的 Python 套件:

  1. python-docx:用於處理 Word 文件(.docx 格式)。
  2. googletrans:Google 翻譯 API 的非官方實現,用於進行多語言翻譯。
pip install python-docx
pip install googletrans==4.0.0-rc1


程式碼解析

以下是完整的程式碼,功能是將 Word 文件中的段落逐一翻譯並儲存為新文件。

主程式碼

from docx import Document
from googletrans import Translator

def translate_word_document(input_file, output_file, source_lang='zh-cn', target_lang='vi'):
# 加載翻譯器
translator = Translator()

# 打開 Word 文件
doc = Document(input_file)

# 遍歷每個段落
for paragraph in doc.paragraphs:
if paragraph.text.strip(): # 確保段落非空
try:
# 翻譯文字
translated_text = translator.translate(paragraph.text, src=source_lang, dest=target_lang).text
# 替換原段落的文字
paragraph.text = translated_text
except Exception as e:
print(f"翻譯失敗: {paragraph.text}, 錯誤信息: {e}")

# 保存翻譯後的文件
doc.save(output_file)
print(f"翻譯完成,已保存至 {output_file}")

# 使用範例
input_file = r"原始文件路徑.docx" # 替換為您的原始 Word 文件路徑
output_file = r"翻譯後文件路徑.docx" # 替換為您希望儲存的路徑
translate_word_document(input_file, output_file)

詳細解析

1. 載入所需的模組

from docx import Document
from googletrans import Translator
  • Documentpython-docx 提供的主要類,用於讀取和編輯 Word 文件。
  • Translatorgoogletrans 提供的翻譯器類,支援多種語言的翻譯。

2. 定義函式 translate_word_document

這個函式接收四個參數:

  • input_file:原始 Word 文件的路徑。
  • output_file:翻譯後文件的儲存路徑。
  • source_lang:源語言(預設為簡體中文 zh-cn)。
  • target_lang:目標語言(預設為越南語 vi)。

3. 初始化翻譯器

translator = Translator()
  • 建立一個翻譯器實例,稍後會用於翻譯文字。

4. 讀取 Word 文件

doc = Document(input_file)
  • 使用 Document 類開啟指定的 Word 文件。

5. 遍歷段落並翻譯

for paragraph in doc.paragraphs:
if paragraph.text.strip(): # 確保段落非空
try:
translated_text = translator.translate(paragraph.text, src=source_lang, dest=target_lang).text
paragraph.text = translated_text
except Exception as e:
print(f"翻譯失敗: {paragraph.text}, 錯誤信息: {e}")
  • 段落過濾:僅翻譯非空段落(跳過空白段落)。
  • 翻譯文字:透過 translator.translate 翻譯段落文字,指定源語言與目標語言。
  • 錯誤處理:若翻譯失敗,程式會列印錯誤訊息並繼續處理其他段落。

6. 儲存翻譯後的文件

doc.save(output_file)
  • 翻譯完成後,將結果存為新 Word 文件。

如何使用

  1. 準備原始文件
    將您要翻譯的 Word 文件放置在指定目錄,記下其路徑(例如:原始文件路徑.docx)。
  2. 執行程式碼
    input_fileoutput_file 替換為實際的文件路徑後執行程式碼。

注意事項

  1. 翻譯品質
    googletrans 使用 Google Translate 進行翻譯,適用於一般情境,但專業文件可能需要進一步校對。
  2. API 限制
    googletrans 非官方 API,可能受限於 Google Translate 的反爬機制,若出現問題建議使用官方 API。
  3. 格式損失
    目前程式僅翻譯純文字,對於表格、圖片、超連結等複雜格式的支援有限。


avatar-img
128會員
209內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
螃蟹_crab的沙龍 的其他內容
通過 memory_profiler 來測試優化前後的程式。 上一篇memory_profiler工具的說明介紹 以下是一個記憶體使用量較高的原始程式碼,接著對程式進行優化後,再次使用 memory_profiler 來比較優化前後的記憶體使用情況。
memory_profiler 是一個用來測量 Python 程式記憶體使用情況的工具,它可以幫助開發者了解程式的記憶體消耗,特別是在執行長時間運行或處理大量數據的程式時非常有用。 有別於tracemalloc模組,memory_profiler能在每一行程式碼上顯示記憶體變化,但相對的就不適合埋
有別於先前利用time模組做成裝飾器計算程式執行的時間,Python 標準庫中的timeit 模組是專門用來測量小段程式碼的執行時間。 [Python][裝飾器]計算函式(CT)處理時間 這篇文章將介紹如何使用 timeit.timeit() 函數,並提供一些範例來展示它的應用。
re 模組基本介紹 re 模組是 Python 用來處理正則表達式的標準模組。 正則表達式是一種用於描述字串模式的語法,可以用來匹配、搜尋、分割和替換字串中的特定模式。
對於程式卡頓的問題,如何分析程式碼占用多少記憶體,如何釋放或改寫,可以先用python內建的tracemalloc模組來追蹤 Python 分配的記憶體區塊。 本文將介紹最簡單的用法,來分析一段程式碼占用了多少記憶體。 結果呈現 印出當前使用的記憶體,與峰值記憶體使用量。 程式範例 i
在實務上,若Python報錯時,若引入的套件越多伴隨的異常訊息會變得越來越複雜,看到一推密密麻麻的內容時,很多時候都想直接跳過。 本文將利用Traceback來讓異常訊息變得更好理解。
通過 memory_profiler 來測試優化前後的程式。 上一篇memory_profiler工具的說明介紹 以下是一個記憶體使用量較高的原始程式碼,接著對程式進行優化後,再次使用 memory_profiler 來比較優化前後的記憶體使用情況。
memory_profiler 是一個用來測量 Python 程式記憶體使用情況的工具,它可以幫助開發者了解程式的記憶體消耗,特別是在執行長時間運行或處理大量數據的程式時非常有用。 有別於tracemalloc模組,memory_profiler能在每一行程式碼上顯示記憶體變化,但相對的就不適合埋
有別於先前利用time模組做成裝飾器計算程式執行的時間,Python 標準庫中的timeit 模組是專門用來測量小段程式碼的執行時間。 [Python][裝飾器]計算函式(CT)處理時間 這篇文章將介紹如何使用 timeit.timeit() 函數,並提供一些範例來展示它的應用。
re 模組基本介紹 re 模組是 Python 用來處理正則表達式的標準模組。 正則表達式是一種用於描述字串模式的語法,可以用來匹配、搜尋、分割和替換字串中的特定模式。
對於程式卡頓的問題,如何分析程式碼占用多少記憶體,如何釋放或改寫,可以先用python內建的tracemalloc模組來追蹤 Python 分配的記憶體區塊。 本文將介紹最簡單的用法,來分析一段程式碼占用了多少記憶體。 結果呈現 印出當前使用的記憶體,與峰值記憶體使用量。 程式範例 i
在實務上,若Python報錯時,若引入的套件越多伴隨的異常訊息會變得越來越複雜,看到一推密密麻麻的內容時,很多時候都想直接跳過。 本文將利用Traceback來讓異常訊息變得更好理解。
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
這篇文章介紹了越南的第一高樓Landmark 81,包括它的特色和吸引遊客的觀景臺。
Thumbnail
自從大學認識了越南朋友後,我就瘋狂愛上了越南料理,也愛上了東南亞的悠閒步調,因此決定開始學習越南語,並在學習一年後,考到了越南語檢定高級證照,這篇文章將簡單介紹越南語檢定及我的考試心得。
Thumbnail
在閱讀文言文時,很多同學會遇到困難,除了詞彙難懂外,文字順序也怪怪的,讓你無法順利翻成白話文,這是因為文言文「語序」與白話文有些不同,你知道是那些不同嗎?這次的文章要介紹文言文的倒裝現象,說明文言文與白話文語序不同的原因,這樣各位同學之後就能夠還原成白話文語序,有利解讀了!
Thumbnail
台灣啟航:跨領域的解讀與對話;關於語言學的一些思考
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
這篇文章介紹了越南的第一高樓Landmark 81,包括它的特色和吸引遊客的觀景臺。
Thumbnail
自從大學認識了越南朋友後,我就瘋狂愛上了越南料理,也愛上了東南亞的悠閒步調,因此決定開始學習越南語,並在學習一年後,考到了越南語檢定高級證照,這篇文章將簡單介紹越南語檢定及我的考試心得。
Thumbnail
在閱讀文言文時,很多同學會遇到困難,除了詞彙難懂外,文字順序也怪怪的,讓你無法順利翻成白話文,這是因為文言文「語序」與白話文有些不同,你知道是那些不同嗎?這次的文章要介紹文言文的倒裝現象,說明文言文與白話文語序不同的原因,這樣各位同學之後就能夠還原成白話文語序,有利解讀了!
Thumbnail
台灣啟航:跨領域的解讀與對話;關於語言學的一些思考