MATLAB ユーザーコミュニティー

MATLAB & Simulink ユーザーコミュニティー向け日本語ブログ

写真の文字認識がしたい! 

 

いきなりですが、ふと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   

手順 

 それでは早速やり方を見てみましょう。 
    1. まずはじめに文字認識したい写真を用意してください。今回作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 の機能で画像の回転角度を自動で算出すれば自分で角度を調整する必要もなくなりますね 
MATLABを使ってたった6行で、文字認識ができてしまうんですね。すごい時代ですね。 また未来に一歩近づいた感じがします みなさんがMATLABやSimulinkを使ってこんなことをやってみたいやこんなことも出来ますか?などご意見やご質問があれば私の方でブログの記事にさせていただくかもしれません!というところで今回は終わりにしたいと思います 最後まで読んでいただきありがとうございました。  
|
  • print

Comments

To leave a comment, please click here to sign in to your MathWorks Account or create a new one.