日本語・英語ナンバープレート検出・認識(YOLO、EasyOCRを使用) Colab プログラムによる実験・研究スキルの基礎
【概要】本記事では、YOLOv8とEasyOCRを用いたナンバープレート検出・認識プログラムの使用方法と技術的背景を解説する。プログラムの基本操作から、実験計画の立て方、結果の検証方法まで、実験・研究に必要な基礎スキルを実践的に学べる。Google Colaboratory上で動作し、画像からナンバープレートを自動検出して文字を認識する。
Colabのページ(ソースコードと説明): https://colab.research.google.com/drive/1e7bUBWUkv7nK4xH9r7_3q2fTDs4MvFK7?usp=sharing
【目次】
プログラム利用ガイド
1. このプログラムの利用シーン
車両の画像からナンバープレートを自動的に検出し、記載されている文字を読み取るプログラムである。駐車場管理、交通監視、車両識別などの用途で、画像内のナンバープレートを見つけてその内容をテキストデータとして抽出する。
2. 主な機能
- 画像ファイルのアップロード: Google Colaboratory上で画像ファイルをアップロードできる。
- ナンバープレート検出: 画像内からナンバープレートの位置を自動的に検出する。
- 文字認識: 検出されたナンバープレートに記載された文字(日本語・英語)を読み取る。
- 結果の可視化: 検出されたナンバープレートを緑色の枠で囲み、認識した文字を画像上に表示する。
- テキスト出力: 認識結果をコンソールにテキストとして出力する。
3. 基本的な使い方
- 環境の準備:
Google Colaboratoryでプログラムを実行。
- 画像のアップロード:
「ファイルを選択」ボタンが表示されたら、車両が写っている画像ファイルを選択する。画像はJPG、PNG形式に対応している。
- 処理の実行:
画像をアップロード後、プログラムが自動的に処理を開始する。ナンバープレートを検出し、文字を認識する。
- 結果の確認
処理が完了すると、以下が表示される。
- 元の画像にナンバープレートの位置を示す緑色の矩形
- 矩形の上部に認識されたテキスト
- コンソールに「認識結果: (テキスト)」という形式で出力される
Colabのページ(ソースコードと説明): https://colab.research.google.com/drive/1e7bUBWUkv7nK4xH9r7_3q2fTDs4MvFK7?usp=sharing
4. 便利な機能
- 複数のナンバープレート検出: 画像内に複数の車両がある場合、すべてのナンバープレートを検出して認識する。
- 学習済みモデルの自動ダウンロード: 初回実行時にGoogle Driveから学習済みモデルが自動的にダウンロードされるため、モデルを別途用意する必要がない。
- 日本語対応: 日本のナンバープレートに含まれる漢字やひらがなも認識できる。
- 視覚的な結果確認: 検出位置と認識結果が画像上に直接表示されるため、結果の妥当性を視覚的に確認できる。
プログラムの説明
1. 概要
このプログラムは、画像からナンバープレートを検出し、その文字を認識する二段階処理システムである。YOLOv8による物体検出でナンバープレート領域を特定した後、EasyOCRを使用して領域内の文字を読み取る。
2. 主要技術
YOLOv8 (You Only Look Once version 8)
Ultralyticsが2023年に開発したリアルタイム物体検出モデルである。アンカーフリー検出ヘッド、改良されたバックボーンとネックアーキテクチャを採用しており、精度と速度のバランスに優れている。本プログラムでは、Roboflowが提供するナンバープレート検出用データセットで訓練されたYOLOv8nモデルを使用する。このデータセットは10,000枚以上の画像で構成され、多様な角度や照明条件下のナンバープレートを含む。
EasyOCR
JaidedAIが開発したPython向けOCRライブラリである。テキスト検出にCRAFTアルゴリズム、文字認識にCRNNモデルを使用する。CRAFTはClovaAI Researchによる文字領域認識手法で、個々の文字領域とその親和性を検出することで任意形状のテキストを認識する。CRNNは畳み込みニューラルネットワーク(ResNetまたはVGG)による特徴抽出、LSTMによる系列ラベリング、CTCによるデコードの3段階で構成される。
3. 技術的特徴
- 二段階処理パイプライン
物体検出と文字認識を分離することで、各タスクに特化したモデルを適用する。YOLOv8が画像全体からナンバープレート領域を抽出し、EasyOCRはその領域に集中して文字認識を行う。
- カスタム学習モデルの使用
学習済みのYOLOv8モデル(best.pt)を使用する。Roboflowのナンバープレートデータセットで転移学習を行い、一般的な物体検出モデルを特定用途向けに適応させたものである。
- 多言語対応
EasyOCRは日本語と英語の両方に対応したReaderを初期化しており、日本のナンバープレートに含まれる漢字・ひらがな・数字を認識できる。
- 座標ベースの領域切り出し
YOLOv8が出力するバウンディングボックス座標(x1、y1、x2、y2)を用いて、元画像から正確にナンバープレート領域を切り出す。
4. 実装の特色
Google Colaboratory環境向けに設計されており、以下の特徴を持つ。
- Google Driveからの学習済みモデルの自動ダウンロード
- Colabのファイルアップロード機能による画像入力
- 検出結果の可視化(矩形枠と認識テキストの描画)
- Matplotlibによる日本語表示対応
- 処理結果を画像として表示
5. 参考文献
[1] Jocher, G., Chaurasia, A., & Qiu, J. (2023). Ultralytics YOLOv8 (Version 8.0.0) [Computer software]. https://github.com/ultralytics/ultralytics
[2] Baek, Y., Lee, B., Han, D., Yun, S., & Lee, H. (2019). Character Region Awareness for Text Detection. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR) (pp. 9365-9374). https://arxiv.org/abs/1904.01941
[3] Shi, B., Bai, X., & Yao, C. (2017). An End-to-End Trainable Neural Network for Image-Based Sequence Recognition and Its Application to Scene Text Recognition. IEEE Transactions on Pattern Analysis and Machine Intelligence, 39(11), 2298-2304. https://arxiv.org/abs/1507.05717
[4] JaidedAI. (n.d.). EasyOCR [Computer software]. https://github.com/JaidedAI/EasyOCR
[5] Roboflow Universe Projects. (2025). License Plate Recognition Dataset. Roboflow Universe. https://universe.roboflow.com/roboflow-universe-projects/license-plate-recognition-rxg4e
実験・研究スキルの基礎:パソコンで学ぶナンバープレート検出・認識実験
1. 実験・研究のスキル構成要素
実験や研究を行うには、以下の5つの構成要素を理解する必要がある。
1.1 実験用データ
このプログラムでは車両が写っている画像ファイルが実験用データである。ナンバープレートが明確に写っている画像ほど、実験結果が明確になる。
1.2 実験計画
何を明らかにするために実験を行うのかを定める。
計画例:
- 様々な撮影角度でナンバープレート検出精度を比較する
- 照明条件(明るさ、影)が検出精度に与える影響を確認する
- ナンバープレートの汚れや劣化が文字認識精度に与える影響を調べる
- 距離(ナンバープレートのサイズ)が検出・認識精度に与える影響を確認する
- 複数車両が写っている画像での検出性能を評価する
- 文字認識の誤認識パターン(似た文字の混同)を分析する
1.3 プログラム
実験を実施するためのツールである。このプログラムはYOLOv8による物体検出とEasyOCRによる文字認識の二段階処理を採用している。
- プログラムの機能を理解して活用することが基本である
- 基本となるプログラムを出発点として、将来、様々な機能を自分で追加することができる
1.4 プログラムの機能
このプログラムは画像からナンバープレートを検出し、文字を認識する。
入力データ:
- 車両が写っている画像ファイル(JPG、PNG形式)
処理の流れ:
- 第一段階:YOLOv8がナンバープレートの位置を検出(矩形領域として特定)
- 第二段階:EasyOCRが検出された領域内の文字を認識
出力情報:
- 検出されたナンバープレートの位置(緑色の矩形)
- 認識された文字列(矩形の上部に表示)
- コンソールへの認識結果テキスト出力
- 処理済み画像の表示
1.5 検証(結果の確認と考察)
プログラムの実行結果を観察し、検出・認識の成否とその原因を考察する。
基本認識:
- 画像の品質や撮影条件によって結果が変わる。その変化を観察することが実験である
- 「良い結果」「悪い結果」は目的によって異なる
- 完璧な検出・認識システムは存在せず、どのような条件で失敗するかを知ることが重要である
観察のポイント:
- ナンバープレートは正しく検出されたか(検出矩形の位置と範囲)
- 文字は正しく認識されたか(文字の種類と順序)
- 誤検出(ナンバープレート以外を検出)は発生しているか
- 見逃し(ナンバープレートが検出されない)は発生しているか
- 文字認識の誤り(似た文字の混同、文字の欠落)はどのパターンか
- 複数のナンバープレートがある場合、すべて検出されているか
2. 間違いの原因と対処方法
2.1 プログラムのミス(人為的エラー)
プログラムがエラーで停止する
- 原因:構文エラー、必要なライブラリがインストールされていない、モデルファイルのダウンロード失敗
- 対処方法:エラーメッセージを確認し、提供されたコードと比較する。インストールセルから順番に実行する
画像がアップロードできない
- 原因:ファイル形式が対応していない、ファイルサイズが大きすぎる
- 対処方法:JPGまたはPNG形式の画像を使用する。画像サイズを縮小してから再度試す
モデルのダウンロードに時間がかかる
- 原因:初回実行時にYOLOv8モデルとEasyOCRの言語モデルをダウンロードしている
- 対処方法:これは正常な動作である。ダウンロードが完了するまで待つ(数分程度)
2.2 期待と異なる結果が出る場合
ナンバープレートが検出されない
- 原因:ナンバープレートが小さすぎる、画像がぼやけている、撮影角度が極端、ナンバープレートが隠れている
- 対処方法:ナンバープレートが大きく鮮明に写っている画像を使用する。複数の画像で試して、どのような条件で検出されるか確認する
ナンバープレート以外の物体が検出される(誤検出)
- 原因:ナンバープレートに似た矩形物体が画像内にある、学習データの偏り
- 対処方法:これは機械学習モデルの限界である。どのような物体が誤検出されやすいか記録する
文字認識が不正確である
- 原因:ナンバープレートの解像度が低い、汚れや劣化、照明の反射、撮影角度による歪み
- 対処方法:検出された矩形領域を確認し、文字が鮮明に含まれているか確認する。似た文字(0とO、1とI、8とBなど)の混同パターンを記録する
一部の文字が認識されない、または余分な文字が認識される
- 原因:文字の分離失敗、背景のノイズ、光の反射
- 対処方法:これはOCRの一般的な課題である。どのような条件で失敗するか記録し、パターンを分析する
複数車両があるのに一部しか検出されない
- 原因:遠すぎる、角度が悪い、一部が隠れている
- 対処方法:各ナンバープレートの視認性を人間の目で確認する。検出されたものと見逃されたものの条件を比較する
3. 実験レポートのサンプル
撮影角度がナンバープレート検出・認識精度に与える影響
実験目的:
ナンバープレートの撮影角度が検出精度と文字認識精度に与える影響を定量的に評価する。
実験計画:
同一車両のナンバープレートを、正面(0度)、斜め30度、斜め45度、斜め60度から撮影した画像を用意し、それぞれで検出・認識を実行する。
実験方法:
プログラムを実行し、以下の項目について評価する:
- 検出成功:ナンバープレートが正しく検出されたか(○/×)
- 検出矩形の適切性:ナンバープレート全体を含んでいたか(○/△/×)
- 文字認識の正確性:正しく認識された文字数/総文字数
- 認識誤りのパターン:どの文字がどう誤認識されたか
実験結果:
| 撮影角度 | 検出成功 | 検出矩形 | 認識された文字数 | 正解の文字数 | 認識精度 | 誤認識パターン |
|---|---|---|---|---|---|---|
| xxx | xxx | xxx | xxx | xxx | xxx | xxx |
| xxx | xxx | xxx | xxx | xxx | xxx | xxx |
| xxx | xxx | xxx | xxx | xxx | xxx | xxx |
| xxx | xxx | xxx | xxx | xxx | xxx | xxx |
考察:
- (例文)撮影角度がxxxの場合、検出・認識とも良好な結果が得られた。ナンバープレートの文字が明瞭で歪みがないことが要因と考えられる
- (例文)撮影角度がxxxの場合、検出は成功したが、文字認識で誤認識が発生した。角度による文字の変形が影響していると推測される
- (例文)撮影角度がxxxの場合、検出矩形がナンバープレートの一部を含まず、認識精度が低下した。また、数字とアルファベットの混同が見られた
- (例文)撮影角度がxxxの場合、YOLOv8がナンバープレートを検出できなかった。学習データに含まれる角度の範囲を超えている可能性がある
- (例文)撮影角度が大きくなるほど、数字と似た形のアルファベットへの誤認識が増加する傾向が確認できた
結論:
(例文)本実験により、ナンバープレートの検出・認識精度は撮影角度に大きく依存することが確認できた。実用的な精度を得るには、正面からxxx度以内の角度で撮影する必要がある。xxx度を超えると認識精度が著しく低下し、xxx度では検出そのものが失敗する。自動ナンバープレート認識システムを設計する際は、カメラの設置角度を慎重に検討する必要性が示された。