PyCon JP 2025 Logo
広島国際会議場
JPEN

esuji

PythonとLLMで挑む、4コマ漫画の構造化データ化

ラン日本語
05:50 - 06:2030min
DAY 2
09/27
SAT

画像という非構造化データから構造化データを抽出することは、現代DXの最重要課題です。本トークでは、4コマ漫画のデータ化という具体的な挑戦を通じて、最新のLLM技術とPythonエコシステムを組み合わせた実践的で再現可能なアプローチを紹介します。

Gemini 2.0の登場以降、LLMによる日本語のOCR能力と非構造化データの理解は格段に進歩しました。領収書や健康診断の結果、手書き書類などのデータ化において、「もうAIで全部解決できるのでは?」 という期待は非常に高まったことでしょう。

しかし、現実はそう単純ではありませんでした。 私が取り組んだ4コマ漫画のデータ化プロジェクトでは、画像処理によるコマの切り出し、OCRでのセリフ抽出、深層学習での人物認識、検索可能なデータ配置、そして得られたデータの分析など、あらゆるPythonエコシステムを総動員してきました。LLMの登場で従来技術の一部は置き換えられましたが、すべてが魔法のように解決したわけではありません。

むしろ見えてきたのは、LLMと既存技術の適材適所な組み合わせと、人間が介入して修正を行うUI/UXの設計こそが、実運用には大事だということです。そして興味深いことに、高性能なLLMとAIエージェントは、腰が重くて取り組んでこれなかった実装や機能同士の統合、Pythonバージョンやライブラリのモダン化などを圧倒的なスピードで支援してくれる開発パートナーとしても機能したのです。

このトークでは、そんなLLMの現実と戦い、理想のためにまだPythonが必要な領域を見据えた奮闘記を共有します。4コマ漫画という一見ニッチな題材に込められた、あらゆる非構造化データ処理に通じる普遍的な学びが見えてくるでしょう。


トーク詳細 / Description

  1. イントロダクション:なぜ 4 コマ漫画なのか?

    • 4 コマ漫画は「画像」「テキスト」「連続性」が凝縮された、非構造化データ処理の格好の題材
    • 最終目標:単行本をスキャンするだけで、コマ、登場人物、セリフ、状況を構造化し、検索・分析可能なデータベースを構築する
  2. アプローチの変遷:LLM 以前の格闘

    • フェーズ 1: 人力とスプレッドシートの時代
      • 手動でのデータ入力と管理の限界
    • フェーズ 2: Python と深層学習(DL)による挑戦
      • コマの自動切り出し(物体検出: YOLO など)
      • セリフの OCR(Tesseract, Google VisionAPI など)
      • 登場人物の検出(物体検出)
      • 課題:各コンポーネントの連携が難しく、精度も限定的。修正のための UI(アノテーション画面)開発コストが高い。
  3. LLM の衝撃と現実:Gemini 登場で何が変わったか?

    • 期待:「LLM に画像を投げるだけで全部解決!」
      • セリフ抽出:驚異的な精度。従来の OCR を凌駕。
      • 状況説明・構図の理解:人間のように自然言語で説明を生成。
    • 現実の壁:LLM だけでは越えられない課題
      • 人物座標の曖昧さ:LLM は「左の人物」とは分かっても、正確なバウンディングボックスを返せない。
      • 人物識別の低精度:「A というキャラ」と「B というキャラ」を安定して見分けるのは困難。
      • 話者同定の難しさ:どのセリフを誰が話しているのか、吹き出しと人物の関連付けができない。
  4. ハイブリッド・アプローチ:LLM と Python エコシステムの協調

    • 適材適所な役割分担
      • LLM (Gemini):
        • 役割:意味理解、文脈判断、自然言語生成(セリフ、状況説明)
      • Python/DL (YOLO, DINOv2 など):
        • 役割:精密な空間認識(コマ、人物、吹き出しの正確な座標検出)
        • 役割:特徴量ベースの識別(顔認識による人物識別)
    • 具体的なパイプライン
      1. コマ切り出し: YOLO で 4 つのコマを正確に検出・切り出し。
      2. 並列処理: 各コマ画像を LLM と DL モデルに同時に投入。
        • LLM → セリフと状況説明を JSON で出力。
        • DL → 人物と吹き出しの座標リストを出力。 (WIP)3. データ統合: Python スクリプトが、座標情報を元に「どの吹き出しが、どの人物に最も近いか」を計算し、話者を同定。 (WIP)4. 最終構造化データ: 全ての情報を統合して出力。
  5. 開発の加速:AI エージェントは最強のペアプログラマー

    • 品質と開発速度の向上
      • Human-in-the-Loop UI の高速開発: 「検出結果をすぐに確認・修正できる WebUI を作って」と指示するだけで、Flask や FastAPI ベースのツールを自動生成。
        • LLMとの連携によって開発速度が圧倒的に向上すると、確認のためのツールもそれに追いつく便利さが必要
      • Colab 学習ノートブックの自動生成: モデルの学習やファインチューニングに必要なコードを対話的に生成。
      • レガシーコードのモダン化: 煩雑な Python スクリプト群の統合や、ライブラリのアップデートを支援。
      • プロンプト改善: より良い結果を得るためのプロンプトエンジニアリングを支援する UI の作成。
  6. まとめと今後の展望

    • LLM は万能ではない。しかし、既存の Python エコシステムと組み合わせることで、これまで不可能だったレベルのデータ構造化が実現可能になる。
    • 「自動化(LLM/DL)」と「人間による確認・修正(UI/UX)」のサイクルをいかに効率的に回すかが、実用的なシステムの鍵。
    • AI エージェントの活用は、この開発サイクルを劇的に加速させる。
    • 今後の挑戦:動画、音声など、他の非構造化データへの応用。

esuji

プロフィール

https://x.com/esuji