いきなりですが、ふと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
以上で完了です。
余談
例えば今回用いたコードと
MATLABを使ってたった6行で、文字認識ができてしまうんですね。すごい時代ですね。
また未来に一歩近づいた感じがします!
みなさんがMATLABやSimulinkを使ってこんなことをやってみたいやこんなことも出来ますか?などご意見やご質問があれば私の方でブログの記事にさせていただくかもしれません!というところで今回は終わりにしたいと思います!
最後まで読んでいただきありがとうございました。
Comments
To leave a comment, please click here to sign in to your MathWorks Account or create a new one.