かずきち。の日記

サーバサイドエンジニアのつぶやき

クレジットカードや車のナンバーの抽出によく使うOCRをたった20行のGASのスクリプトで画像認識OCRを実装してみる!

OCRとは?

f:id:kazukichi_0914:20220212205827p:plain
引用:
https://www.ricoh.co.jp/service/cloud-ocr/column/ocr/

今まで駐車場で事前精算をしたら駐車場のゲートが自動で開いた!
クレジットカードをスマホでスキャンしたらカード番号が自動で入力された!
なんて経験はありませんか?

これら技術は「Optical Character Reader(OCR)」という技術を使っていて、機械的に文字を認識してしまおう!という技術が使われています。
でもこれら技術ってお高いんでしょ?と思っている方もいるかと思います。

しかしときは2022年。
画像認識もクラウドで、個人が、簡単にできるようになりました。

今日は簡単にOCRのコードを書いてみたので、紹介をしようと思います。

画像内のテキストを認識する

cloud.google.com
引用:
https://cloud.google.com/vision/docs/ocr

上記サンプルでは写真にあります「WAITING」といった文字を認識をしています。
すごい技術を使っているんでしょうとお思いかと思いますが、実は家でもできちゃうんです。

今回は

f:id:kazukichi_0914:20220212210756j:plain

この藤井聡太の写真から文字を取得していきます。

コードはたった20行で文字認識をします
function imageOcr() {
  //Googleドライブにアップした画像のファイルIDを変数で定義
  //サンプルコードを実行する場合は各自のファイルIDに書き換え
  let imageFileId = "195jNOQRyplSnZsxFoQCo_ufenboX9mkp";
  //OCRのファイルを生成する際の名称
  let resource = {
    title: "OCR_TEST" 
  };
  //OCRファイル生成時のオプションを記載
  let option = {
    "ocr": true,// OCR設定で有効にするため、trueを設定
    "ocrLanguage": "en",// OCRを行う言語を英語で設定
  }
  //DriveAPIでファイルコピー時にOCRを実行する形で実行
  let imageData = Drive.Files.copy(resource, imageFileId, option);
  //DocumentAppクラスで画像を読み込み、テキストを取得
  let ocrData = DocumentApp.openById(imageData.id).getBody().getText();
  //OCRで取得したテキストデータをログ出力
  console.log(ocrData);
}

と20行ですがコードを書いていきます。
藤井聡太が書かれた写真から認識していきます。

f:id:kazukichi_0914:20220212211416g:plain

画像認識の精度向上は2012年のニューラルネットワークの登場

ニュラルネットワークというのはニューロン、まさに人間の神経回路を模した構造をプログラムで再現しています。
そんな高度なことを「自宅で」「しかも無料で」楽しめちゃうわけです。
手書き伝票なんかもはや人間が読解せず機械にやらせましょうというお話です。
なにかこんなことしてみたいというアイディアがございましたら、コメントで教えて下さい。