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?

バレーボール動画から得点を出力するアプリ

Posted at

🏐 バレーボール動画からスコアを自動認識するPythonアプリ開発記録

試合動画からスコアボードの数字を自動で読み取り、リアルタイムで画面に表示するPythonアプリを開発したので、その過程・エラー・改善方法・最終コードをまとめます。

同じことをやろうとする方の参考になれば幸いです。


🎯 目的

体育館で撮影したバレーボールの試合動画から、スコアボードの数字を自動で読み取り、リアルタイムに表示する。


🔷 使用した技術・ライブラリ

  • Python … 開発言語
  • OpenCV … 動画処理、ROI(読み取り領域)選択
  • Tesseract OCR … 数字認識(最終的に採用)
  • EasyOCR … 深層学習OCR(途中で断念)
  • NumPy … 画像処理
  • pytesseract … Python から Tesseract を操作
  • virtualenv … 仮想環境管理

👣 開発の流れ

1️⃣ プロジェクト準備

以下のコマンドで開発環境を整えました。

# 仮想環境の作成
python -m venv venv
source venv/bin/activate

# 必要なパッケージをインストール
pip install opencv-python pytesseract numpy

# Tesseract 本体をインストール(Mac の場合)
brew install tesseract

# 動作確認
tesseract --version


2️⃣ コード実装

  • 最初は EasyOCR を使い、高精度を狙いましたが、日本特有のフォントや背景に弱く、断念しました。
  • 最終的に Tesseract に切り替え、whitelist で数字とハイフンだけを読むようにしました。
  • ROI(読み取り領域)を正確に指定し、前処理(グレースケール・二値化・シャープ化)で精度を向上させました。
  • 読み取ったスコアは多数決ロジックで安定化させました。

⚠️ 遭遇したエラーと対策

開発中には、いくつものエラーに遭遇しました。以下に、原因と対応策を順に紹介します。

まず、ModuleNotFoundError: No module named pytesseract というエラーが発生しました。これは単純に、pytesseract がインストールされていなかったのが原因です。ターミナルで次のコマンドを実行することで解決しました。
pip install pytesseract

次に、Tesseract 本体が見つからないというエラーもありました。これは、Tesseract の本体プログラムがインストールされていなかったためです。Mac 環境では、以下のコマンドで解決できました。
brew install tesseract

さらに、EasyOCR を試したときには NumPy のバージョンが 2.x になっていたため、互換性の問題が発生しました。この場合は、NumPy を 1.x にダウングレードして対応しました。具体的には次のコマンドを使いました。
pip install "numpy<2"

また、PyTorch がインストールできないという問題も起きました。これは、当初使用していた Python のバージョンが 3.13 で、PyTorch がまだ対応していなかったためです。Python のバージョンを 3.10 または 3.11 に切り替えることで解決しました。

動画が読み込めないケースもありました。これは、動画ファイルのパスが間違っているか、ファイル自体が破損していたのが原因でした。正しいパスを指定するか、別の動画ファイルに差し替えることで問題は解消しました。

最後に、スコアが途中で飛んだり戻ったりする現象もありました。これは画像のノイズや一時的な読み取りミスが原因でしたが、多数決ロジックを導入することで、安定したスコア表示ができるようになりました。


👀 他の人がやるときの注意点

これから同じような仕組みを作ろうとする場合は、いくつかのポイントに注意する必要があります。まず、Python は 3.10 または 3.11 を使用するのが無難です。Tesseract 本体と pytesseract は別物であり、両方をインストールする必要がある点も忘れないでください。

また、ROI(読み取り領域)はなるべく狭く、かつ正確に指定することが重要です。動画は高画質かつブレの少ないものを準備すると精度が上がります。さらに、Tesseract の設定で「whitelist」を活用して、数字だけを読み取るようにすると認識の精度が向上します。


🌟 改善案

今回の実装をさらに改善する案としては、スコアの変化を CSV やログファイルに記録したり、スコアが変わったタイミングでその場面の画像や動画を保存したりすることが考えられます。また、高精度な深層学習モデルを自分で訓練して導入するのも有効でしょう。


🔗 よく使ったコマンドまとめ

開発中によく使ったコマンドも紹介します。仮想環境を作成して有効化し、必要なパッケージや Tesseract 本体をインストールして確認する流れになります。具体的には、python -m venv venv で仮想環境を作成し、source venv/bin/activate で有効化します。その後、pip install opencv-python pytesseract numpy で必要なパッケージをインストールし、brew install tesseract で Tesseract をインストールします。最後に、tesseract --version で動作確認を行いました。


🙋‍♀️ まとめ

最初は EasyOCR で進めましたが、日本特有のフォントや背景に弱く、最終的に Tesseract に切り替えました。前処理や多数決ロジックを組み込み、ようやく安定して動作するアプリが完成しました。思った以上に奥が深いプロジェクトで、とても勉強になりました。まだまだ改良の余地がありますが、同じように挑戦する方の参考になれば嬉しいです。

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?