仕事をしているとワード資料の翻訳作業を行うことがあります。
この記事では大量のワードファイルを機械翻訳するツールをPythonで実行する方法について紹介していきます。
・所定のフォルダに保管したすべてのワードファイルを翻訳
・ワードファイルをパラグラフごとに機械翻訳
目次
このプログラムの概要
実務で大量の資料を翻訳するとき、2つの課題があります。
たとえば「10以上のワードファイル」を「日本語から英語に翻訳」する必要があるとします。
このとき、Google翻訳を使うとすると、以下の作業を繰り返す必要があります
ステップ2|一文ずつGoogle翻訳のサイトに日本語をコピペ
ステップ3|Google翻訳された英文をコピペ
ステップ4|ワードファイルに貼り付け
ステップ5|ステップ1からステップ4を繰り返す
しかし、大量のワードファイルを翻訳するとなると、上記の作業はやってられません。
では「外注すればどうか?」となりますが、外注費用は高額です。専門英語となると、1ページ5000円することもあります。
また、外注業者の選定や見積もりに多くの時間がかかります。
そこで、これらの課題を解決するために、本ツールを作成しました。
以下でこのプログラムの実行後の結果について紹介します。
プログラム実行前
プログラム実行前に、翻訳したいワードファイルを所定のフォルダに保管しておきます。
今回の事例では、3つのワードファイルを以下のようにフォルダに保管しておきます。
なお、3つのワードファイルの中身は以下のように日本語で情報が記載されています。
3つのワードは上記の内容が記載されており、3つとも文量は1ページです。
この状態でPythonプログラムを実行すると、以下のような結果を得ることができます。
プログラム実行後
プログラム実行後は以下のように、翻訳後されたワードファイルを新しいファイルとして保存します。
翻訳後のワードファイルは、翻訳前のワードファイルの先頭に「translated_」を付与するようにしています。
翻訳されたワードファイルの中身を見てみると、以下のようになっています。
上記のように、もともとあった日本文の下に英文を付与するようにしています。
このようにフォルダ内の3つのワードファイルを翻訳することに成功しました。
なお、この3つのワードファイルを翻訳するのに要した時間は1ファイルあたり12秒でした。
1つのファイルには1ページ分の情報が入っていたので、およそ1ページ12秒で翻訳できたことになります。
プログラムを上手く書けば、もう少し短縮は可能です。
それでは、本プログラムを以下に公開します。
Python|フォルダ内のワード(Word)を日本語から英語に機械翻訳するプログラム
以下にプログラムを公開しますので、参考にしてみてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
import win32com.client import os import pathlib import sys from googletrans import Translator def main(): Application = win32com.client.Dispatch("Word.Application") Application.Visible = True path = os.getcwd() folder = path + "\\Translate" WordFolder = pathlib.Path(folder) Filepath=[ str(p) for p in WordFolder.iterdir()] Filename=[p.name for p in WordFolder.iterdir() if p.is_file()] for k in range(1, len(Filepath)+1): GetTranslation(Application, Filepath[k-1] , Filename[k-1],folder) def GetTranslation(Application, Filepath, Filename, folder): doc = Application.Documents.Open(Filepath) cmax= doc.paragraphs.count array=[] translator = Translator() for i in reversed(range(1, cmax+1)): rtext=doc.paragraphs(i).Range.Text rtext=rtext.replace("\r","") ori_text=rtext.replace("\x07","") print(i) if str(ori_text)=="": z=1 else: z=0 translation = translator.translate(ori_text, dest='en') array.extend([ori_text, translation.text]) if z==0: try: doc.Paragraphs(i).Range.InsertAfter ("\n" + translation.text) except: print(i, "エラー") newFilePath=folder + "\\translated_" + Filename print(Filename) doc.SaveAs2(newFilePath) doc.Close() if __name__ == "__main__": main() |
必要であれば、上記のプログラムをコピペしてご利用ください。
Pythonプログラムの解説
紹介したプログラムを以下の6つのステップに分けて簡単に説明していきます。
ステップ1|ライブラリの設定
ステップ2|フォルダ内のワードファイルを取得
ステップ3|ワードファイルごとに翻訳プロシージャを起動
ステップ4|ワードファイルを翻訳
ステップ5|新しいワードファイルとして保管
ステップ6|スクリプト開始のおまじない
以下で詳しく解説していきます
ステップ0|事前準備
本プログラムをそのまま使用する場合、事前準備として以下の2つがあります。
1つは以下のように本プログラム(以下の画像の”GoogleTranslate_ver1.0.py”)と同じ階層に「Translate」フォルダを作成する
2つ目は作成した「Translate」フォルダに翻訳したいワードファイルを保管しておく。
ステップ1|ライブラリの設定
1 2 3 4 5 |
import win32com.client import os import pathlib import sys from googletrans import Translator |
今回のプログラムでは上記の5つのライブラリを使用します。
これらのライブラリは事前にインストールしておく必要があります。
ステップ2|フォルダ内のワードファイルを取得
1 2 3 4 5 6 7 8 9 |
def main(): Application = win32com.client.Dispatch("Word.Application") Application.Visible = True path = os.getcwd() folder = path + "\\Translate" WordFolder = pathlib.Path(folder) Filepath=[ str(p) for p in WordFolder.iterdir()] Filename=[p.name for p in WordFolder.iterdir() if p.is_file()] |
まず、ワードファイルを操作するApplicationを起動します。
そして、ステップ0で「Translate」フォルダに保管しておいたワードファイルを読み込み、ファイルパスとファイル名を取得します。
ステップ3|ワードファイルごとに翻訳プロシージャを起動
1 2 |
for k in range(1, len(Filepath)+1): GetTranslation(Application, Filepath[k-1] , Filename[k-1],folder) |
ワードファイルごとにステップ4の翻訳プロシージャを呼び出します。
ステップ4|ワードファイルを翻訳
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
def GetTranslation(Application, Filepath, Filename, folder): doc = Application.Documents.Open(Filepath) cmax= doc.paragraphs.count array=[] translator = Translator() for i in reversed(range(1, cmax+1)): rtext=doc.paragraphs(i).Range.Text rtext=rtext.replace("\r","") ori_text=rtext.replace("\x07","") print(i) if str(ori_text)=="": z=1 else: z=0 translation = translator.translate(ori_text, dest='en') print(translation.text) array.extend([ori_text, translation.text]) if z==0: try: doc.Paragraphs(i).Range.InsertAfter ("\n" + translation.text) except: print(i, "エラー") |
このプログラムでワドファイルの日本語を英語に翻訳し、各パラグラフのすぐ下に翻訳した英文を挿し込んでいきます。
ステップ5|新しいワードファイルとして保管
1 2 3 4 |
newFilePath=folder + "\\translated_" + Filename print(Filename) doc.SaveAs2(newFilePath) doc.Close() |
翻訳が完了したワードを新しいワードファイルとして、ファイル名の先頭に「translate_」を付けて保存します。
ステップ6|スクリプト開始のおまじない
1 2 |
if __name__ == "__main__": main() |
詳しくは説明しませんが、スクリプト開始のおまじないのようなものです。
ここで紹介しているプログラムを使えば、フォルダ内のワードを一気に自動翻訳できます。
そのため、外注費用をゼロにすることをできるだけでなく、外注業者選定にかかる時間もゼロにできます。
ただし機械翻訳の精度は100%信用できるとは限りません。翻訳後のチェックは必要になるので注意が必要です。
Pythonを勉強してみよう
ここまでPythonを使って、フォルダ内のワードファイルを機械翻訳するプログラムについて紹介してきました。
このPythonを使えば、ワードファイルを「日本語から英語に」自動翻訳させることができます。
プログラムを編集すれば「英語から日本語に」自動翻訳することも可能です。
勉強しだいでは普段の業務を大きく改善することが可能です。
ぜひPythonを勉強してみてください。