Skip to content

About

Clipboard-to-Markdown OCR + JP translation app powered by llama.cpp (gemma-4), with paste-to-translate web UI.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Screenshot Translator

画面内の英語を、ローカルのGemma 4で読み取り、日本語へ翻訳するアプリです。画像を貼り付けるWeb UI、範囲を選ぶオーバーレイ、字幕を保存しながら読む学習モードを使えます。

使い方 対応環境 できること
Web UI Windows / Linux / WSL2で起動したサーバー+ブラウザ 画像を貼り付けて翻訳し、Markdownをコピー
Windows常駐クライアント Windows 10/11(x64) 選択範囲の訳をオーバーレイ表示、任意で読み上げ
Ubuntuの統合拡張 GNOME Shell 46〜50 一つのアイコンから通常翻訳・読み上げ・学習モードを選択

7.8.1では学習モードの応答性を改善しました。 翻訳中も画面を取得し、最新1枚だけを待機させます。翻訳完了の通知で表示を更新し、ローカル接続を再利用します。

学習モードは原文と訳を履歴に残し、取得を止めると難しい表現の文脈付きメモを生成します。記録の切替・改名・削除にも対応します。学習パネルはUbuntuのGNOME/GTK4向けです。

Web UIで画像を貼り付け、日本語訳を表示した例

導入

まず翻訳用サーバー(バックエンド)を起動し、続けて使いたい画面を開きます。以下のコマンドは、特に指定がない限りリポジトリのルートで実行してください。

1. 必要なツールとソースを用意する

共通で Git と uv が必要です。Pythonは3.10以降を使います。Python依存パッケージは起動スクリプトが.venvへ同期します。GPUを使う場合は、対応するドライバも用意してください。

git clone https://github.com/amariichi/ScreenshotTranslator2.git
cd ScreenshotTranslator2
  • Linux / WSL2: モデル実行用のllama.cppをビルドするため、CMakeとC++コンパイラが必要です。CUDAを使う場合は対応するCUDA Toolkit、Vulkanを使う場合はVulkan開発環境も用意してください。詳細はllama.cppのビルドガイドを参照してください。
  • Windows単体: llama.cppのビルド済みバイナリを使えます。通常はMSVC・CUDA Toolkitの導入は不要です。常駐クライアントを使う場合は.NET 8 SDKも必要です。
  • Ubuntuの学習モード: 追加でgjs、GTK4、Soup3、glib-compile-schemasが必要です。GNOMEの版はgnome-shell --versionで確認できます。実動確認はGNOME 50.1 / Waylandで行っています。

Linuxで読み上げを使う場合は、PortAudio(libportaudio2)などの音声出力環境も必要です。音声設定を参照してください。

2. モデルを配置する

Google公式の配布ページ(Files)から次の2ファイルを取得し、modelsフォルダを作成して配置してください。画像用のmmprojも必須です。

models/
  gemma-4-26B_q4_0-it.gguf
  gemma-4-26B-it-mmproj.gguf

モデル本体は約14.4GB、画像用ファイルは約1.2GBです。実行時には追加のRAM/VRAMが必要で、速度と必要メモリは環境により変わります。CPUのみでも実行できますが、リアルタイム用途の速度は保証しません。

任意の高速化機能MTPは、まず通常構成で起動してから追加できます。手順はMTPガイドを参照してください。

3. OSに合わせてバックエンドを起動する

Linux / WSL2

環境に合うビルドを一つ選びます。

./app/scripts/build_llama.sh                       # NVIDIA / CUDA
# GPU_BACKEND=vulkan ./app/scripts/build_llama.sh   # AMD / Intel / Vulkan
# GPU_BACKEND=cpu ./app/scripts/build_llama.sh      # CPUのみ

ビルドが終わったら起動します。

./start.sh

Windows単体(WSL2不要)

PowerShellで、環境に合うバイナリを一つ取得します。

.\app\scripts\fetch_llama_win.ps1                    # AMD / Intel / 汎用Vulkan
# .\app\scripts\fetch_llama_win.ps1 -Flavor cuda-13.3 # NVIDIA Blackwell向け
# .\app\scripts\fetch_llama_win.ps1 -Flavor cuda-12.4 # NVIDIA Ada以前向け
# .\app\scripts\fetch_llama_win.ps1 -Flavor cpu       # CPUのみ

続けて起動します。Blackwellではcuda-12.4を選ばないでください。配布バイナリの選択やトラブル対処はWindowsガイドにあります。

.\start.ps1

初回起動では、Python依存と読み上げ用のSupertonic 3モデル(約386MB)も取得します。ネット接続と追加の空き容量が必要です。起動ターミナルを開いたまま、モデルの読み込み完了を待ってください。既定はモデルサーバーが8009、アプリが8012です。終了は起動ターミナルでCtrl+Cを押します。

モデルとAPIがすでに起動している場合、起動スクリプトを重ねて実行しないでください。学習パネルだけを開くには./start-learning.sh、または統合アイコンの「学習パネルを開く」を使います。パネルの「停止」は画面取得を止める操作で、モデルとAPIは停止しません。

読み上げモデルにはアプリ本体と異なる利用条件があります。音声を利用・公開する前にライセンスの注意を確認してください。

使う画面を選ぶ

Web UI:画像を一度ずつ翻訳する

  1. バックエンドを起動したPCのブラウザで http://127.0.0.1:8012 を開きます。
  2. 画像をCtrl+Vで貼り付けるか、ドラッグ&ドロップします。
  3. 必要なら追加指示を入力して「再送信」します。結果は「Markdownをコピー」で取り出せます。

Windows:選択範囲の訳をオーバーレイ表示する

バックエンドを起動したまま、別のPowerShellをリポジトリのルートで開きます。

dotnet run --project windows/OverlayClient/OverlayClient.csproj

翻訳したい範囲の角でCtrl+Altを押し、ポインターを反対側の角へ移動してキーを離すと翻訳します。トレイメニューの「Speak Translation」で読み上げを切り替え、「Quit」で常駐アプリを終了します。

バックエンドはWindowsのstart.ps1、またはWSL2のstart.shで起動できます。WSL2でクローンした場合も、WPFクライアントはWindows側へコピーして起動してください。設定・配布方法も参照できます。

Ubuntu:通常翻訳と学習モードを切り替える

両方を使える統合拡張をインストールします。バックエンドとは別のターミナルで実行してください。

./gnome-learning-extension/install.sh

新しい拡張が見つからない場合や更新が反映されない場合は、一度ログアウトして再ログインしてください。その後、旧拡張を無効にし、統合拡張を有効にします。

gnome-extensions disable screenshot-translator@amariichi
gnome-extensions enable screenshot-translator-learning@amariichi

旧拡張を入れていなければ、最初のdisableは不要です。二つを同時に有効にせず、統合版のアイコンから使い分けます。再ログイン後にバックエンドが停止している場合は起動し直してください。インストールや有効化だけでは画面取得は始まりません。

**一度の翻訳・読み上げには「従来モード」**を使います。トップバーのアイコンから「従来モード」を開き、Text Overlay Mode、TTS Once Mode、TTS Monitor Modeを選びます。「取得範囲を選択…」またはCtrl+Alt+Sでドラッグ選択します。Monitorは約5秒ごとに確認し、新しい内容を読み上げます。終了は「Stop Monitoring」または「すべての取得を停止」です。選択はEsc/右クリックで取り消せます。

**字幕やメッセージを保存して学ぶには「学習モード」**を使います。

  1. アイコンの「学習モード」→「学習パネルを開く」を選びます。ターミナルからは./start-learning.shでも開けます。
  2. 「新規」で作品ごとの記録を作り、パネルを動画の外へ移動します。
  3. 「範囲を選ぶ」で字幕やメッセージの領域を選ぶと取得が始まり、原文と訳が履歴に追加されます。
  4. パネルの「停止」で取得を止めると、未処理の難しい表現について学習メモを生成します。動画の一時停止とは別操作です。 「再開」すると翻訳を優先しますが、実行中の解説要求1件が終わるまで待つ場合があります。
  5. 「保存した記録を開く」でMarkdownを確認できます。記録と学習メモは自動保存されます。

保存先はリポジトリ内の .learning-data/ です。日時-作品名-ID.mdに原文・訳・学習メモをまとめ、履歴DBも同じフォルダに保存します。画像は保存せず、このフォルダはGit対象外です。原文と私的メモを含むため、共有する前に内容を確認してください。

パネルが取得範囲に重なる、閉じる、最小化する、別のワークスペースへ移ると、安全のため取得を停止します。学習メモは誤り得る下書きで、パネルから編集できます。記録管理やゴミ箱の操作は学習モードの使い方を参照してください。従来拡張だけを使いたい場合は従来GNOME拡張ガイドを使ってください。

困ったとき

  • 接続できない:起動ターミナルのエラーと、http://127.0.0.1:8012/healthを確認してください。モデル読み込み中なら、完了後に画像を送り直します。
  • GPUメモリ不足:LLAMA_CTXを小さくしてモデルサーバーを起動し直します。例は設定ガイドにあります。
  • 学習モードで取得できない:統合拡張が有効か、パネルが取得範囲に重なっていないかを確認してください。拡張が未接続なら学習モードの起動手順を確認します。
  • GNOME拡張の更新が反映されない:インストール後に通常のログアウト・再ログインを行ってください。

詳細ガイド

  • 学習モード:保存、編集、重複抑制、停止・再開、記録とゴミ箱の管理
  • Windows:バイナリ、MTP、WSL2、AMD APU、トラブル対処
  • 従来GNOME拡張:単独導入、モード操作、更新・削除
  • 設定:環境変数、別モデル、TTS、実験的vLLMバックエンド
  • MTP:任意の高速化と有効になっているかの確認
  • 開発:API、テスト、構成

本アプリのコードはMITライセンスです。既定構成では画像の読み取り・翻訳・音声合成をローカルで行います。OCRや訳、皮肉・俗語の意味、話者判定は誤ることがあります。必要な箇所は原文と照合してください。

About

Clipboard-to-Markdown OCR + JP translation app powered by llama.cpp (gemma-4), with paste-to-translate web UI.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages