1. トップ
  2. 新着ニュース
  3. IT
  4. IT総合

たった数秒で結果が表示される!英語のPDFファイルを日本語に翻訳するGUIツールを作ってみた 

ASCII.jp / 2022年12月31日 17時0分

GUIツールを作成する

 前述した機能を埋め込むGUIツールを作成します。まず、ざっくりとしたGUIツールの完成イメージは以下のような感じでした。

 このイメージをもとに実装していくのですが、まずはPySimpleGUIの使い方を取得します。公式ドキュメントでは、PySimpleGUIプログラムには5つのセクションがあると説明されており、以下のコードでウィンドウが生成されます。

画像出典:公式ドキュメント - Educational Resource

 これを参考にPart2とPart4の部分を実装していきます。(Part1、3、5はほぼそのまま)

 まず、Part2はサンプルに加えて、デザインテーマとフレームを使用しました。デザインテーマは150種類以上のカラーテーマから設定でき、今回はテキストの読みやすさなども考慮し、シンプルな「Black」を設定しました。

 フレームは原文(英語テキスト)と翻訳結果(日本語テキスト)の表示に使用し、以下のように実装しました。また、入力値がある要素はキー(key)を設定し、出力値の表示先を指定(target)しています。

# guitool.py - Part2:The Layout sg.theme('Black') #デザインテーマの設定 frame_output1 = [[sg.Output(size=(100,50), key='-OUTPUT1-')]] #原文(英語)を表示するフレーム frame_output2 = [[sg.Output(size=(100,50), key='-OUTPUT2-')]] #翻訳結果(日本語)を表示するフレーム layout = [ [sg.Text('翻訳したいPDFファイルを選択してください')], #テキストの表示 [sg.InputText(key='-INPUT-'), sg.FileBrowse(key='-FILEPATH-',target='-INPUT-')], #PDFファイルのパス指定 [sg.Button('日本語にする')] , #翻訳の実行ボタン [sg.Frame('原文',frame_output1),sg.Frame('日本語訳',frame_output2)], #実行結果の表示 [sg.Button('終了する')] #終了ボタン ]

  次にPart4ではイベントループの中で、各イベントが発生した際の処理を実行します。今回のイベントは(1)終了ボタンが押下される、(2)翻訳の実行ボタンが押下されているの2つで、それぞれ次のような処理を実施します。

(1)終了ボタンが押下される →イベントループを抜ける(Part5へ)

(2)翻訳の実行ボタンが押下される →指定したPDFファイルから原文のテキストを抽出  →フレーム(key:-OUTPUT1-)に原文を表示する →抽出したテキストを日本語に翻訳する  →フレーム(key:-OUTPUT2-)に翻訳結果を表示する

 これを実装すると以下のようになります。

# guitool.py - Part4:The Layout while True: event, values = window.read() pdf_path = values.get('-FILEPATH-') if event in (sg.WIN_CLOSED, '終了する'): #イベント① break #イベントループを抜ける if event == '日本語にする': #イベント② en_docs = pdf_to_text(pdf_path) #指定したPDFファイルから原文のテキストを抽出 window['-OUTPUT1-'].update(en_docs) #フレームにに原文を表示する jp_dosc = translate(en_docs) #抽出したテキストを日本語に翻訳する window['-OUTPUT2-'].update(jp_dosc) #フレームに翻訳結果を表示する

数秒待つと、翻訳結果が表示される

 実際に作成したGUIツールを使ってみます。日本語に翻訳するのは、無料のオンライン電子書籍ライブラリ「Project Gutenberg」で公開されているパブリック・ドメインの『美女と野獣(Beauty and the Beast)』です。

画像出典:Amazon.co.jp

 実装したプログラムを実行すると、以下のようなGUIツールが表示されました。

 BrowseボタンからPDFファイルを指定すると、パス名が表示されます。

 日本語にするボタンを押した後、数秒待つと、翻訳結果が表示されました。

 純粋に自分が必要としていたものだったこともあり、かなり満足度の高いツールが作れたと思います。そして、PySimpleGUIの使い勝手が非常に良かったので、今後もいろんな場面で利用していきたいと思いました。

高桑蘭佳(たかくわらんか)

 1994年生まれ。石川県出身。東京工業大学大学院環境社会理工学院研究生。2018年8月にメンヘラテクノロジーを設立。彼氏を束縛したくて起業した大学院生として「アウト×デラックス」(フジテレビ系列)や、「指原莉乃&ブラマヨの恋するサイテー男総選挙」(AbemaTV)などに出演。

この記事に関連するニュース

トピックスRSS

ランキング

記事ミッション中・・・

10秒滞在

記事にリアクションする

記事ミッション中・・・

10秒滞在

記事にリアクションする

デイリー: 参加する
ウィークリー: 参加する
マンスリー: 参加する
10秒滞在

記事にリアクションする

次の記事を探す

エラーが発生しました

ページを再読み込みして
ください