自動車やバイクのナンバープレートを読み込んで、その文字を認識することは、AIや機械学習の分野でよく取り上げられる問題の1つです。Pythonを使って、このような文字認識を行う方法について解説します。
1. ライブラリのインストール
まずは、Pythonで画像処理を行うためのライブラリをインストールします。ここでは、OpenCVというライブラリを使用します。
!pip install opencv-python
2. 画像の読み込み
次に、認識対象の画像を読み込みます。ここでは、以下のようなナンバープレート画像を使用します。
import cv2
image = cv2.imread('number_plate.png')
3. 画像の前処理
画像を認識する前に、いくつかの前処理が必要です。まず、グレースケールに変換し、ノイズを除去します。
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (5, 5), 0)
次に、エッジ検出を行います。
edges = cv2.Canny(blur, 100, 200)
4. 文字領域の検出
次に、文字が含まれる領域を検出します。ここでは、輪郭抽出を行い、面積が大きい順にソートして、上位の領域を取得します。
contours, hierarchy = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
contours = sorted(contours, key=cv2.contourArea, reverse=True)[:10]
5. 文字の切り出し
検出された領域から、文字を切り出します。
for contour in contours:
x, y, w, h = cv2.boundingRect(contour)
roi = image[y:y+h, x:x+w]
cv2.imshow('ROI', roi)
cv2.waitKey(0)
6. 文字認識
最後に、切り出した文字を認識します。ここでは、TesseractというOCRエンジンを使用します。
!pip install pytesseract
import pytesseract
text = pytesseract.image_to_string(roi, lang='eng', config='--psm 10')
print(text)
以上で、Pythonを使った車両ナンバープレートの文字認識が完了しました。