見出し画像

ほんやくこんにゃく

ポケモンやSAOのイベントがclusterで繰り広げられる中で海外の方も沢山来られているということでチャット欄自動翻訳できないかなと思い挑戦しました。フローとしては以下の通り。

1.コメント欄をスクリーンショット
2.PyOCRでテキスト(日本語)抽出
3.(日本語→英語)翻訳&表示
4.(10秒ごとに)繰り返し

from PIL import ImageGrab
import os
from PIL import Image
import pyocr
import pyocr.builders
from googletrans import Translator
import time

translator = Translator()

# full screen
# ImageGrab.grab().save("PIL_capture.png")

# 1.インストール済みのTesseractのパスを通す
path_tesseract = "C:\\Users\\massi\\AppData\\Local\\Tesseract-OCR"
if path_tesseract not in os.environ["PATH"].split(os.pathsep):
   os.environ["PATH"] += os.pathsep + path_tesseract

# 2.OCRエンジンの取得
tools = pyocr.get_available_tools()
tool = tools[0]

while True:

   # 指定した領域内をクリッピング
   ImageGrab.grab(bbox=(45, 260, 848, 1615)).save("PIL_capture_clip.png")

   # 3.原稿画像の読み込み
   img_org = Image.open("PIL_capture_clip.png")

   # 4.OCR実行
   builder = pyocr.builders.TextBuilder()
   result = tool.image_to_string(img_org, lang="jpn", builder=builder)

   print(result)

   print('英語-------->',translator.translate(result).text)#英語

   time.sleep(10)

1つ1つが上手くいけば順番揃えるだけでできました。
言語は必要に応じて変えましょう。
(time.sleepでの繰り返しは何かほかにうまいことできないかな...)

参考文献

Pythonならライブラリで何とかできるけどサービス化が難しい。
テキストがもう少し楽に取れたらもっと色々出来そう。
音声字幕&翻訳もそのうち実装してみたいな!

改善作業

以下の2つの記事を参考に実行ファイル化

ctr+cで停止できるようにした

撮影場所を任意選択できるフェーズを用意した

ここまで来るとclusterに限らず色々な自動翻訳ツールとして活用できるほかうまく機能を取捨選択して自動スクリーンショットツールなども作ることが出来ます。ぜひ以下の実行ファイルをダウンロードして使ったり(工事中)この記事をもとに自作したりしてみてください!

追記


この記事が気に入ったらサポートをしてみませんか?