PROJECT FILEUpdated 2025/09/18 18:13

bulk-image-trans

GitHub OpenGraph preview

README

画像翻訳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キーの設定

  1. Google AI Studioにアクセス
  2. Googleアカウントでログイン
  3. 「Create API Key」をクリックしてAPIキーを取得
  4. .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. 基本的な操作

  1. ファイルを選択: 左側の設定パネルで「画像ファイル」欄から翻訳したい画像ファイルを選択(複数選択可)
  2. 設定の確認:
    • OCR言語: 検出する言語を選択(英語+日本語、英語のみなど)
    • 翻訳先言語: 翻訳後の言語を選択(日本語、英語、中国語)
    • GPUを使用: GPUを使用するかどうかを設定
  3. 翻訳開始: 「翻訳開始」ボタンをクリック
  4. 進捗確認: 中央の進捗パネルとログで処理状況をリアルタイムで確認
  5. 結果確認: 処理完了後、下部の結果パネルに翻訳済み画像が表示され、ダウンロード可能

4. 出力ファイル

処理が完了すると、元のファイル名に _translated を追加したファイルが生成され、Webインターフェースからダウンロードできます。

例: input.jpginput_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

処理フロー

  1. ファイルアップロード: Webインターフェースから画像をアップロード
  2. テキスト検出: EasyOCRで画像からテキストと位置情報を抽出
  3. 言語翻訳: Gemini APIで日本語に翻訳
  4. テキスト除去: OpenCVのインペインティングで元のテキストを除去
  5. テキスト再描画: 翻訳テキストを最適なサイズ・色で再描画
  6. 結果表示: 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を使用して開発されました。