0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ollamaでテキストファイルを構造を崩さずに翻訳するアプリを作った

0
Posted at

ローカル環境で動作する Ollama を利用して、テキストファイルを翻訳するデスクトップアプリ「Ollama de Honyaku」を作成した。

背景

手元のテキストファイルを翻訳する際、外部のクラウドAPIにデータを送信せず、ローカルのOllamaで安全かつ手軽に処理できるツールが欲しかったから作成した。

主要機能と特徴

  • ローカル処理: クラウドのLLMを指定しない限りは完全ローカルで完結する
  • フォーマット保持:
    • 改行コード(CRLF / LF)、BOM(UTF-8 BOM)を判別・維持する
    • Markdown の段落構造、空行数を保持する
  • コードブロックの翻訳バイパス:
    • ``` または ~~~ で囲まれたプログラムコード領域を LLM に送信せず、そのまま完了出力に書き出す
    • 4つ以上のフェンス(````)の中にある見出しやテキストは通常通り翻訳対象とする
  • カスタマイズ性:
    • 翻訳粒度(最大行数)やチャンクサイズ(最大文字数)、最大自動リトライ回数の指定
    • システムプロンプトの閲覧・編集ダイアログ(デバウンスによる自動保存対応)

技術構成

  • フロントエンド: React (TypeScript), Tailwind CSS v4, Lucide Icons
  • バックエンド: Tauri 2, Rust (tokio, reqwest, regex)

ファイルの分割と保護処理

テキスト処理のパイプラインは以下の流れで実行される

  1. メタデータ抽出: ファイルの改行コードおよび BOM の有無を検出
  2. チャンク構築(chunker.rs):
    • 行単位で解析し、空行、通常テキスト、ヘッダー、コードブロックに分離
    • 制限文字数を超える長大行は文末記号、句読点、強制分割の優先度で分割
  3. トークン保護:
    • 通常テキスト内のインラインコードや URL を抽出・置換
  4. 翻訳および復元(translator.rs):
    • Chunk のみ Ollama REST API (/api/chat)へ送信
    • 応答受領後、置換トークンを元の文字列へ復元し、全体を結合して保存

インストール・使用方法

pnpm install
pnpm tauri dev
pnpm tauri build

おわりに

ローカル LLM でドキュメント翻訳を行う際のフォーマット崩れやコードの誤訳を防ぎつつ、動作が軽量なツールとして実装した。
正直LLMの性能次第なところはあるが、使えなくはないはず。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?