写真の文字認識がしたい!
いきなりですが、ふとMATLABを使って文字認識をしたいと思いました。MathWorksで学生競技会を担当している飯島と申します。今回は文字認識をブログのテーマにしていきたいと思います。以下の目次の流れでご説明をさせていただきます。
- 結果
- 手順
- コード解説
- 余談
結果
今回使わせていただくのは自己主張の激しい私の名刺です。こちらの写真を使って文字認識を行います。 MATLABのコードを実行すると文字認識させたい指定範囲を選択できます。 ans と書かれているところが今回の出力結果です。 私の名前がliiima イーマ(e-ma !?!?)になっている所以外は問題なさそうですね! 作成したコードは以下のようになっています。たったの6行!?非常にシンプル!!I = imread("BusinessCard.jpg")
Irot = imrotate(I,0, "bilinear", "crop");
imshow(I)
roi = drawrectangle("Label","英語を選択","Color",[1 0 0]);
results = ocr(Irot,roi.Position,"TextLayout","Block");
Results.Text
手順
それでは早速やり方を見てみましょう。-
- まずはじめに文字認識したい写真を用意してください。今回作るMATLABファイルと同じ場所(フォルダー)に写真を保存しておきましょう! 実際のMATLABの画面で見るとこんな感じです。
- コードの作成 新規スクリプトに先程のコードを入力して保存しましょう。今回のコードは簡単に作れるので上のものをそのまま使用していただいても、自ら作っていただいても良いと思います。
- 実行して、文字認識したい選択範囲を指定する 以上です。
コードの解説
適当な変数(I)に保存した写真のデータを保存I = imread("BusinessCard.jpg");
もし写真が斜めになっていたら角度を入力(今回は0を代入)し適当な変数(Irot)にデータを保存
Irot = imrotate(I,0,"bilinear","crop");
写真の表示
imshow(Irot)
表示した写真をどこからどこまで文字認識をするのか選択範囲を指定し、適当な変数(roi)に保存
roi = drawrectangle("Label","英語を選択","Color",[1 0 0]);
選択した範囲をocr関数を使って文字認識。&適当な変数(results)に文字認識で得たいろんな情報を保存
results = ocr(Irot,roi.Position,"TextLayout","Block");
保存した結果の中から文字を抽出
results.Text
以上で完了です。
余談
例えば今回用いたコードと- Webカメラのサポートパッケージを使うと、画像をWebカメラで撮影をした範囲内に文字があると、文字の自動認識なんかもできますね。
- Image Processing Toolbox の機能で画像の回転角度を自動で算出すれば自分で角度を調整する必要もなくなりますね。
- Category:
- 機能と使い方
Comments
To leave a comment, please click here to sign in to your MathWorks Account or create a new one.