Magicode logo
Magicode
5

Pythonで画像の手書き数字を認識(OCR / Google Cloud Vision API)

4 min read

はじめに

画像の中の数字を読み取る必要がでてきたので、いろいろなページを参考にさせていただき、実施しましたのでそれをまとめます。(手書きもPCなどからの印字も)

画像を読み取る方法

次の2つを試してみる。

  1. Pythonライブラリの「tesseract」を使用してみる。
  2. Google Cloud Vision API を使用してみる。(APIキーの取得が必要)

方法1. Pythonライブラリの「tesseract」

  • インストール: pip install pytesseract

  • Tesseract-OCRのダウンロードとインストール

https://github.com/tesseract-ocr/tesseract/wiki https://sourceforge.net/projects/tesseract-ocr-alt/

(Windows環境: tesseract-ocr-setup-3.02.02 を使用)

これを実行すると、下記のようなエラーが発生した。

NotFoundErrorエラー pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your path

Tesseract-OCRを認識していないので、pytesseract.py を直接修正する方法をとる。(tesseract_cmdにインストール先のexeファイルを指定する。windows環境であれば、ダブルバッシュとする)

<テストを実施>

【読み込む画像1】

テスト結果

$python numGet.py
1042090

→うまくいった

【読み込む画像2(手書き)】

テスト結果

$python numGet.py

→手書きは読み取れなかった

方法2. Google Cloud Vision API

Google Cloud Vision APIで光学式文字認識(Qiita) を参考にさせていただき、テストしました。(というかそのままです)

<テストを実施>

テスト結果1

→うまくいった

$python gooleclouldvision.py
1042090

テスト結果2(手書き)

→今度は手書きでも読み取れました

$python gooleclouldvision.py
50913

まとめ

  • 画像の中の数字を読み取る方法を確認できました。
  • tesseractは手書き数字には対応できないことが体感できました。
  • Google Cloud Vision APIは、かなりよい精度がでることが体感できました。

参考URL

Discussion

コメントにはログインが必要です。