やり方
-
翻訳したい英語PDFを用意する。
-
PDFを.txtに変換してくれるWebサービスを使って変換する。(ちょっと難あり)
-
以下のpythonプログラムをVScodeとかで作って、変換した.txtと一緒のフォルダに入れておく。
(詳しく説明すると、デスクトップから右クリックで新しいテキストドキュメント.txt
を作り、名前を拡張子までEnPDF2JaTxt.pyに直す。.pyにすれば勝手にpythonだと認識してくれるはず。 それを適当なフォルダを作って入れておく。) -
pythonソースコードの.txtファイルのパスを合わせて実行。
-
出力された3000文字未満の.txtを手作業でDeepLに突っ込む。
-
翻訳できた日本語を別のファイルにまとめる。
python
EnPDF2JaTxt.py
#このプログラムは英語の.txtをDeepLで翻訳しやすいように1500文字未満の.txtに整形して出力する自称便利プログラムです。
with open("C:/ここに翻訳したいテキストファイルのパスを合わせる.txt", encoding="UTF-8") as f:
text = f.read()
#テキストのアルファベット数をカウント
print('テキストのアルファベット数は'+str(len(text))+'文字です。')
#テキストの単語数をカウントする。
wordlist = text.split()
print('テキストの単語数は'+str(len(wordlist))+'単語です。')
#DeepL翻訳は一度にアルファベット(と記号・空白)で1500文字までの翻訳が可能なので、3000文字未満のセットにテキストを分ける。
#一文字ずつ数えていってキリの良いところまででテキストを作る方式
buffer_text =''
out_text =''
b_count = 0
o_count = 0
output = 1
for n in range(0,len(text)):
if text[n] != ".":
buffer_text += text[n]
b_count += 1
else:
buffer_text += text[n]
b_count += 1
if b_count > 1500:
out = open(f.name+'_output'+ str(output) +'.txt','x',encoding="UTF-8")
out.write(out_text)
out.close
output += 1
buffer_text = buffer_text[len(out_text)+1:]
out_text =''
#print(out_text)
#print(buffer_text)
out_text += buffer_text
b_count = b_count - o_count
o_count = 0
else:
out_text = buffer_text
o_count = b_count
if n == len(text)-1:
out = open(f.name+'_output'+ str(output) +'.txt','x',encoding="UTF-8")
out.write(out_text)
out.close
print('出力されるテキストファイル数は'+str(output)+'個になります。')
注意
- デスクトップに.pyを置いて実行すると.txtファイルがデスクトップに生成されてしまいデスクトップが汚くなってしまうので注意。
- 元の論文がめちゃくちゃ長いものだと.txtが大量に生成されるので注意。
- PDFを.txtに変換する際に、PDF文書レイアウトによっては上手く読み取られず改行や同じ文が繰返し出てきてしまう。必要に応じて適宜手直ししてください。
追記(23/9/26)
- DeepLのアカウント無し利用の場合の翻訳文字数制限が、3000から1500に変わったみたいです。上記コードの文字数カウントのところを1500に変更しておきました。