Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Automated text extraction tool for manga images. Supports batch processing from directories and zip files using Python.

License

Notifications You must be signed in to change notification settings

nakayama900/manga-ocr

 
 

Repository files navigation

Manga OCR CLI Tool

Zipファイルで圧縮された漫画画像を一括で読み込み、OCRを実行してテキストデータを出力するPython CLIツール。

Apple Silicon (M1/M2/M3/M4) のMPS (Metal Performance Shaders) を活用し、ローカル環境で高速に推論を行います。

機能

  • ✅ Zipファイルから漫画画像を一括処理
  • ✅ 複雑なコマ割りや自由なセリフ配置に対応したテキスト領域(吹き出し)の自動検出
  • ✅ 漫画の読み順に基づいたテキスト抽出 (ただし、意図しない順番になるケースもあります)
  • ✅ ページごとのセリフ読み取り精度が高いOCR処理
  • ✅ JSON形式とテキスト形式での出力
  • ✅ Apple Silicon (MPS) による高速OCR処理

要件

  • Python 3.10+
  • 推奨環境:
    • Apple Silicon Mac (M1/M2/M3/M4) - MPS対応(最速)
    • Windows/Linux with NVIDIA GPU - CUDA対応(高速)
    • その他の環境でもCPUで動作します(やや遅い)
  • PyTorch(GPU対応版を推奨)

インストール

このツールは、PyPIで公開されている manga-ocr パッケージと、テキスト検出用の comic-text-detector を組み合わせたラッパーツールです。

オプション A: UV を使用したインストール(推奨)

UV を使用すると、簡単にツールをインストールできます。

# このリポジトリからインストール
uv tool install git+https://github.com/kazuki-ookura/manga-ocr.git

# セットアップヘルパーを実行(サブモジュールとモデルファイルのダウンロード)
manga-ocr-setup

オプション B: 従来の方法(pip + git submodule)

以下の手順でセットアップを行ってください。

1. リポジトリのクローン

まず、このリポジトリと、submoduleとして含まれている comic-text-detector を一緒にクローンします。

# submoduleも含めてクローン(推奨)
git clone --recursive https://github.com/kazuki-ookura/manga-ocr.git
cd manga-ocr

# もし --recursive をつけずにクローンしてしまった場合
# git submodule update --init --recursive

2. モデルファイルの配置

次に、テキスト検出モデルをダウンロードし、正しい位置に配置します。

以下のリンクからモデルファイル(comictextdetector.pt)をダウンロードしてください。

ダウンロードしたファイルを vendor/comic-text-detector/data/ ディレクトリに配置します。

# dataディレクトリが存在しない場合は作成
mkdir -p vendor/comic-text-detector/data

# ダウンロードしたファイルを配置(例: ダウンロードフォルダからの移動)
mv ~/Downloads/comictextdetector.pt vendor/comic-text-detector/data/

重要: このモデルファイル(約76MB)はテキスト検出に必須です。配置しないとテキスト領域の検出が行われません。

3. 依存関係のインストール

# 仮想環境を作成(推奨)
python3 -m venv venv
source venv/bin/activate

# プロジェクトをインストール
pip install -e .

または、setup.sh スクリプトを使用してセットアップすることもできます:

./setup.sh

注意: manga-ocr-setup コマンドを使用すると、サブモジュールとモデルファイルのセットアップを自動的に行えます:

manga-ocr-setup

使用方法

基本的な実行方法

UV または pip install でインストールした場合

# 基本的な使用
manga-ocr comic.zip

開発環境(ローカルリポジトリ)での実行

セットアップ完了後、以下のコマンドでツールを実行します。

# 基本的な使用
python3 -m src.cli comic.zip

コマンドオプション

  • JSON形式のみ出力:
    manga-ocr comic.zip --output-format json
    # または開発環境: python3 -m src.cli comic.zip --output-format json
  • 出力ディレクトリを指定:
    manga-ocr comic.zip -o ./results
    # または開発環境: python3 -m src.cli comic.zip -o ./results
  • 詳細ログ付きで実行:
    manga-ocr comic.zip --verbose
    # または開発環境: python3 -m src.cli comic.zip --verbose
  • CPUを強制使用:
    manga-ocr comic.zip --device cpu
    # または開発環境: python3 -m src.cli comic.zip --device cpu
  • エラー時に処理を中断:
    manga-ocr comic.zip --no-skip-errors
    # または開発環境: python3 -m src.cli comic.zip --no-skip-errors

出力ファイル

処理が完了すると、以下のファイルが生成されます:

  • {zip_filename}_output.json: JSON形式の構造化データ
  • {zip_filename}_output.txt: 人間が読みやすいテキスト形式

使用例

# 実際の使用例(UV/pipでインストール済みの場合)
manga-ocr '漫画タイトル.zip' --verbose

# または開発環境の場合
python3 -m src.cli '漫画タイトル.zip' --verbose

# 出力例:
# 画像ファイルを 218 個見つけました
# 処理を開始します(デバイス: mps)...
# 処理完了: 218 ページを処理しました
# 出力ファイル:
#   - 漫画タイトル_output.json
#   - 漫画タイトル_output.txt

注意事項

  • comic-text-detector: テキスト検出機能を使用するために必須です。インストール手順の「2. comic-text-detectorのセットアップ」を参照してください。
  • モデルファイル: comic-text-detector のモデルファイル(comictextdetector.pt)が必須です。インストール手順の「4. モデルファイルの配置」を参照してください。
  • 初回実行: 初回実行時、manga-ocr がモデルをダウンロードするため時間がかかります。
  • 処理時間: 画像数やサイズによって処理時間が異なります。大量の画像がある場合は時間がかかります。
  • MPSサポート: OCR処理はMPSを使用して高速に実行されます。テキスト検出はCPUで実行されます(詳細は docs/PERFORMANCE.md を参照)。
  • 読み取り可能な文字: 効果音など、通常の漫画セリフフォントではない装飾的な文字は、OCRエンジンの特性上、正確に読み取ることができません。

トラブルシューティング

問題が発生した場合は、docs/TROUBLESHOOTING.md を参照してください。

ドキュメント

  • トラブルシューティング: docs/TROUBLESHOOTING.md - よくある問題と解決方法
  • パフォーマンス: docs/PERFORMANCE.md - デバイス使用、MPS、パフォーマンスについて
  • 開発計画: docs/20_PLAN/roadmap.md - 開発状況と実装計画

ライセンス

MIT License

デモ

ツールの基本的な動作を示すための簡単なデモです。

1. 入力画像

以下のような、単純なコマ割りとセリフを含む3ページの漫画画像(page1.pngpage3.png)を用意し、demo.zipとして圧縮します。

Demo Page 1 Demo Page 2 Demo Page 3

2. 実行コマンド

まず、demo_images_png ディレクトリ内の画像を demo.zip という名前で圧縮します。

zip -j demo.zip demo_images_png/page1.png demo_images_png/page2.png demo_images_png/page3.png

次に、生成された demo.zip に対して、以下のコマンドを実行します。

# UV/pipでインストール済みの場合
manga-ocr demo.zip

# または開発環境の場合
python3 -m src.cli demo.zip

3. 出力結果

実行後、demo_output.txt に以下の内容が出力されます。

[page1.png]
こんにちは
これは
Manga OCRの
デモです。

[page2.png]
これは
2ページ目です、
読み順は
どうなるかな?

[page3.png]
最後の
ページです
テストは
うまく
いくかな?

4. 結果の解説

  • 1ページ目と3ページ目では、漫画の基本的な読み順(右上→左下、段ごと)が正しく認識されています。
  • 2ページ目では、縦長のコマが影響し、一部の読み順が人間の直感とは異なる結果になっています。

このように、本ツールは多くの基本的なレイアウトでセリフの順序を正しく認識できますが、複雑なコマ割りでは意図しない順序になる場合があることを示しています。

About

Automated text extraction tool for manga images. Supports batch processing from directories and zip files using Python.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 95.4%
  • Shell 4.6%