1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

なるべく自動でお金をかけずに英語PDFを翻訳しよう

Last updated at Posted at 2023-05-01

やり方

  1. 翻訳したい英語PDFを用意する。

  2. PDFを.txtに変換してくれるWebサービスを使って変換する。(ちょっと難あり)

  3. 以下のpythonプログラムをVScodeとかで作って、変換した.txtと一緒のフォルダに入れておく。
    (詳しく説明すると、デスクトップから右クリックで新しいテキストドキュメント.txtを作り、名前を拡張子までEnPDF2JaTxt.pyに直す。.pyにすれば勝手にpythonだと認識してくれるはず。 それを適当なフォルダを作って入れておく。)

  4. pythonソースコードの.txtファイルのパスを合わせて実行。

  5. 出力された3000文字未満の.txtを手作業でDeepLに突っ込む。

  6. 翻訳できた日本語を別のファイルにまとめる。

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に変更しておきました。
1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?