画像翻訳Webアプリケーション
画像に含まれる外国語テキストを自動で検出し、日本語に翻訳して元のテキストを自然に置換するWebアプリケーションです。
機能
- 高精度OCR: EasyOCRを使用した多言語テキスト検出
- AI翻訳: Google Gemini APIによる高品質な翻訳
- インテリジェントなテキスト除去: OpenCVによる自然な背景修復
- 動的テキスト再描画: 翻訳テキストの最適な配置とスタイリング
- バッチ処理: 複数画像の一括翻訳
- Webインターフェース: ブラウザベースの直感的な操作画面
- リアルタイム進捗表示: WebSocketによるライブ進捗更新
インストール手順
1. リポジトリのクローン
git clone <repository-url>
cd bulk-image-trans
2. 仮想環境の作成と有効化
python3 -m venv venv
source venv/bin/activate # macOS/Linux
# または
venv\Scripts\activate # Windows
3. 依存関係のインストール
pip install -r requirements.txt
4. APIキーの設定
- Google AI Studioにアクセス
- Googleアカウントでログイン
- 「Create API Key」をクリックしてAPIキーを取得
.envファイルを作成してAPIキーを設定
cp .env.example .env
.envファイルを編集:
GOOGLE_API_KEY=your_actual_api_key_here
環境変数は自動的に読み込まれますが、手動で読み込む場合は以下のコードを使用します:
import os
from dotenv import load_dotenv
load_dotenv()
api_key = os.getenv('GOOGLE_API_KEY')
5. 日本語フォントの準備(任意)
より高品質な日本語表示のために:
- Google FontsからNoto Sans JPをダウンロード
fonts/フォルダに配置すると自動的に読み込まれます
使用方法
1. アプリケーションの起動
source venv/bin/activate
python app.py
2. Webインターフェースへのアクセス
ブラウザで以下のURLにアクセス:
http://localhost:5000
3. 基本的な操作
- ファイルを選択: 左側の設定パネルで「画像ファイル」欄から翻訳したい画像ファイルを選択(複数選択可)
- 設定の確認:
- OCR言語: 検出する言語を選択(英語+日本語、英語のみなど)
- 翻訳先言語: 翻訳後の言語を選択(日本語、英語、中国語)
- GPUを使用: GPUを使用するかどうかを設定
- 翻訳開始: 「翻訳開始」ボタンをクリック
- 進捗確認: 中央の進捗パネルとログで処理状況をリアルタイムで確認
- 結果確認: 処理完了後、下部の結果パネルに翻訳済み画像が表示され、ダウンロード可能
4. 出力ファイル
処理が完了すると、元のファイル名に _translated を追加したファイルが生成され、Webインターフェースからダウンロードできます。
例: input.jpg → input_translated.jpg
設定オプション
OCR言語設定
- 英語 + 日本語: 英語と日本語の両方を検出(デフォルト)
- 英語のみ: 英語テキストのみ検出
- 日本語のみ: 日本語テキストのみ検出
- 英語 + 中国語: 英語と中国語を検出
- 中国語のみ: 中国語テキストのみ検出
翻訳先言語
- 日本語: 日本語に翻訳(デフォルト)
- 英語: 英語に翻訳
- 中国語: 中国語に翻訳
GPU設定
- GPUを使用: GPUで処理を実行(推奨、高速)
- CPUのみ: CPUのみを使用
対応画像形式
- JPEG (.jpg, .jpeg)
- PNG (.png)
- BMP (.bmp)
- TIFF (.tiff)
技術仕様
使用ライブラリ
- Webフレームワーク: Flask + SocketIO
- OCR: EasyOCR (深層学習ベース)
- 翻訳: Google Gemini API
- 画像処理: OpenCV, NumPy
- テキスト描画: Pillow
- 機械学習: scikit-learn (色分析)
- フロントエンド: HTML5, CSS3, JavaScript, Bootstrap
処理フロー
- ファイルアップロード: Webインターフェースから画像をアップロード
- テキスト検出: EasyOCRで画像からテキストと位置情報を抽出
- 言語翻訳: Gemini APIで日本語に翻訳
- テキスト除去: OpenCVのインペインティングで元のテキストを除去
- テキスト再描画: 翻訳テキストを最適なサイズ・色で再描画
- 結果表示: Webインターフェースで結果を表示・ダウンロード
アーキテクチャ
- バックエンド: Flaskサーバー + WebSocket通信
- フロントエンド: レスポンシブWebデザイン
- リアルタイム通信: SocketIOによる進捗更新
- ファイル管理: セッションベースの一時ファイル管理
トラブルシューティング
サーバー起動エラー
ModuleNotFoundError: No module named 'tkinter'
→ このエラーは発生しません。Webアプリケーションなのでtkinterは不要です。
APIキーエラー
警告: GOOGLE_API_KEYが設定されていません
→ .envファイルに正しいAPIキーを設定してください
ポート競合
OSError: [Errno 48] Address already in use
→ ポート5000が他のアプリケーションで使用されています。別のポートで起動するには:
# app.pyの最後の行を変更
socketio.run(app, host='0.0.0.0', port=5001) # ポート5001に変更
GPUメモリ不足
EasyOCRのGPU使用時にメモリ不足が発生する場合:
- Webインターフェースで「GPUを使用」のチェックを外す
- または、より少ない画像数で処理を実行
翻訳レート制限
Gemini APIの無料枠にはレート制限があります:
- 多数の画像を処理する場合は、処理に時間がかかる場合があります
- エラーが発生した場合は、少し時間を空けて再試行してください
ファイルアップロードエラー
- ファイルサイズが大きすぎる場合(16MB制限):画像を圧縮してください
- 対応していないファイル形式:対応形式を確認してください
- 複数ファイルの同時アップロード:一度に多数のファイルをアップロードしないでください
ブラウザ互換性
- 推奨ブラウザ: Chrome, Firefox, Safari, Edgeの最新版
- モバイル対応: レスポンシブデザインなのでスマートフォンでも利用可能ですが、PCでの使用を推奨
制限事項
- テキストが非常に小さい場合や複雑な背景の場合、検出精度が低下する可能性があります
- 翻訳品質はGemini APIの性能に依存します
- 無料枠のAPI使用制限があります
- 複雑な背景のテキスト除去では、完全に自然な結果が得られない場合があります
ライセンス
このプロジェクトは研究・教育目的で開発されました。商用利用の場合は各ライブラリのライセンスに従ってください。
貢献
バグ報告や機能改善のご提案はIssueを作成してください。
作者
このプロジェクトはClaude Codeを使用して開発されました。