はじめに
前回は OpenAI の API を利用し、PDFのレイアウトを保ったまま翻訳するツールを紹介しました。
今回はその発展版として、完全ローカルで動作する無料翻訳環境 を構築するための前段階として、ローカルPCで翻訳エンジンを動作させる方法をまとめます。
紹介するのは以下の3つの方法です:
- Ollama + Gemma:ローカルLLMを使った高品質翻訳
- LibreTranslate:軽量なNMT翻訳サーバー
- LTEngine + Gemma:LibreTranslate互換のLLM翻訳エンジン
1. Ollama + Gemma で翻訳する方法
Ollamaのインストール
まず、MacなどでローカルLLMを動かすために Ollama をインストールします。
# Ollamaのインストール
brew install ollama
# サーバー起動
ollama serve
# 起動時に自動実行したい場合
brew services start ollama
Gemmaモデルの実行
Ollamaはさまざまなオープンモデルを簡単に動かせます。
翻訳性能の高い Gemma 3 12B モデルを利用してみましょう。
# Gemma 3 12B モデルの実行
ollama run gemma3:12b
初回実行時にはモデルデータ(数GB)がダウンロードされます。
API動作確認
OllamaはOpenAI互換APIを提供しているため、ローカルで同様に呼び出せます。
curl -s http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "gemma3:12b",
"messages": [
{"role": "user", "content": "次の英文を日本語に翻訳してください: Hello, world."}
]
}' | jq .
成功すれば、Gemmaが生成した翻訳結果がJSON形式で返されます。
{
"id": "chatcmpl-673",
"object": "chat.completion",
"created": 1761631346,
"model": "gemma3:12b",
"system_fingerprint": "fp_ollama",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "こんにちは、世界。\n"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 21,
"completion_tokens": 6,
"total_tokens": 27
}
}
2. LibreTranslate を使ったローカル翻訳
LibreTranslateとは
LibreTranslate は、完全オープンソースの機械翻訳(NMT)エンジンです。
Dockerで簡単に起動でき、クラウド不要で使えるのが特徴です。
Dockerでの起動
docker run -ti --rm -p 5001:5000 libretranslate/libretranslate --load-only="en,ja"
-
-p 5001:5000:ホスト側ポート5001でアクセス -
--load-only="en,ja":英語・日本語のみをロードして軽量化
起動後、ブラウザで http://127.0.0.1:5001 にアクセスし、UIが表示されれば成功です。
Pythonから利用する
公式Pythonバインディング libretranslatepy を使うと簡単に翻訳できます。
from libretranslatepy import LibreTranslateAPI
lt = LibreTranslateAPI("http://127.0.0.1:5001/")
print(lt.translate("こんにちは、世界。", "ja", "en"))
LibreTranslateはREST APIを採用しており、他の言語やアプリケーションからも容易に統合できます。
コンテナ操作の基本
| 操作 | コマンド |
|---|---|
| 停止 | docker stop libretranslate |
| 再開 | docker start libretranslate |
| 削除 | docker rm -f libretranslate |
| 状態確認 | docker ps -a |
設定を変更したい場合は、一度削除して再起動すれば反映されます。
3. LTEngine + Gemma で翻訳する方法
LTEngineとは
LTEngine は、LibreTranslateと同じAPI仕様で動作するLLMベースの翻訳エンジンです。
GemmaやMistralなどのローカルモデルをバックエンドとして利用でき、LibreTranslateと置き換え可能です。
インストール手順(macOS Arm)
まず依存ライブラリをインストールします。
brew update && brew upgrade
brew install rust llvm cmake
brew cleanup -s
次にLTEngineをクローン・ビルドします。
git clone https://github.com/LibreTranslate/LTEngine --recursive
cd LTEngine
cargo build --features metal --release
LTEngineの実行
ビルド後、以下のように起動します。
# 通常起動
./target/release/ltengine
# Gemmaモデルを指定して起動
./target/release/ltengine -m gemma3-12b
この状態でLibreTranslate互換API(例:http://127.0.0.1:5050/translate)が利用可能になります。
Pythonやツールから利用
LibreTranslateと同じAPI仕様なので、設定を変えずにそのまま置き換えられます。
lt = LibreTranslateAPI("http://127.0.0.1:5050/")
print(lt.translate("This is a test.", "en", "ja"))
LLMを利用しているため翻訳精度は非常に高く、自然な日本語訳を得られます。
まとめ
| 手法 | 概要 | メリット | デメリット |
|---|---|---|---|
| Ollama + Gemma | ローカルLLMで翻訳 | 高品質・柔軟 | モデルサイズが大きい |
| LibreTranslate | NMTベースの翻訳サーバー | 軽量・高速 | 翻訳精度は中程度 |
| LTEngine + Gemma | LLM+LibreTranslate互換API | 高精度・API互換 | ビルドにやや手間 |