GASとLINE Messaging APIで「My『文字起こし君』」を作る!(AIじゃなくてOCRで!)
どうも、GAS芸人のますくです。
今日、彼女とLINEしているとこんなメッセージが飛んで来ました。
URLはこちら。
【天才】LINEに画像を送信すると文字起こしするプログラムを作った人が話題に|オタクニュース
んー、面白いアイディアですね!
ってことで、例のごとくGASとLINE Messaging APIで作ってみたいと思います。
GASやLINE Messaging APIの大枠については、ネット上に素晴らしい記事がゴロゴロ転がっているので、割愛しますが
簡単に紹介しておくと、
- GAS: Google Apps Scriptの略で、Google アカウントを持って入れば簡単にWebサービスとかプログラムできちゃうすごいやつです
- LINE Messaging API: LINEのトークラをプログラムから色々するためにLINEから提供されている機能です
どんなことができるか、過去の記事を見るとイメージが付きやすいかもしらません(宣伝)。
walkingmask.hatenablog.com walkingmask.hatenablog.com
どうやって実現するか?
いたってシンプルで、
図にするとこんな感じです。
Google ドキュメントに画像を投げると、文字起こししてくれるのは有名だと思います。
ただし、これだと画像を撮って、パソコンに渡して、アップロードして...のように一手間かかります。
そこを、スマホで撮ってLINEに投げたらできちゃうと言うところが「文字起こし君」の素晴らしいところですね!
スクリプト(一部)
ここで重要なのは、
- トークにアップロードされた画像を取ってくる
- Google DocsのOCRを使う
部分だと思います。そこは色々なサイトを参考にしながら、こんな感じで実装しました。
// Post処理するやつ function doPost(e) { var json = JSON.parse(e.postData.contents); if (json.events[0].message.type = 'image') { var blob = get_line_content(json.events[0].message.id); // 全部画像として扱っちゃう var text = ocr(blob); reply(json, text); } } // 画像とか取得するやつ function get_line_content(message_id) { var headers = { 'Authorization': 'Bearer ' + getProp('CHANNEL_ACCESS_TOKEN') }; var options = { 'method' : 'GET', 'headers': headers }; var url = 'https://api.line.me/v2/bot/message/' + message_id + '/content'; var blob = UrlFetchApp.fetch(url, options).getBlob(); return blob; } // OCRするやつ function ocr(imgBlob) { var resource = { title: imgBlob.getName(), mimeType: imgBlob.getContentType() }; var options = { ocr: true }; try { var imgFile = Drive.Files.insert(resource, imgBlob, options); var doc = DocumentApp.openById(imgFile.id); var text = doc.getBody().getText().replace("\n", ""); var res = Drive.Files.remove(imgFile.id); } catch(e) { spreadsheetLog('err in ocr::ocr: '+e); return 'err'; } return text; }
getPropはスクリプトプロパティを引っ張ってくるやつで、replyはトークに返信するやつです。
詳しくは過去の記事を参照してください。
My文字起こし君
って感じで作れました!
なんとなく作り始めたのに、精度が思ったよりもよくて、超・自分で使えそうだなと思いました(☝ ՞ਊ ՞)☝ウェーイ
言語切り替えの必要なく英語も読み取ってくれるたで、論文読むときに良さそうです。
実質1時間程度で作れたので、GASに慣れている人は上のコードを参考にしたらパパッと作れちゃうと思います。
また、この機会にGASやプログラミングを初めてみるのもおすすめです!
一人に一台「My文字起こし君」!
(ちなみに、このMy文字起こし君は、OCR(光学文字認識)を使っただけなので、AI(人工知能)は使ってないです。残念!)
2018/04/26 追記:
有料ですが、「文字起こし君」の作者が1から作り方を教えてくれている記事もあるようです。
プログラミング初心者の方は、こちらを読むといいかもしれません(AIプログラミングではなさそうですが)。