LINEで画像を送信すると、AIで解析してテキストを返してくれる「文字起こし君」というのが話題になっていました。
Lineに画像を送信すると、AIが全部文字おこしして返してくれる「文字おこし君」ができましたー!卒論とか、書評とか書くときに、いちいち元の文献を手で写すの面倒くさいので、写真撮って送るだけなのでだいぶ楽になるぞー!友達追加できます! pic.twitter.com/9DVI20f3oG
実際にやってみたくて、友達登録して画像送ってたら、全然リプライ返ってこない・・・。使う人殺到で、混みあってるらしい。
代わりに、自分で作れる方法が紹介されてました。
【AIプログラミング】LINEに画像を送ったら自動で文字起こししてくれる機械学習アプリを作ろう|Dai|note
こういうの読むと、自分で作ってみたくなりますよねー。Google Apps Scriptだと確かに手軽そうです。Google Vision APIを使ったAI体験もいいなーと思いました。
で、勉強がてらいろいろ調べているときに、ふと、「GoogleドライブにはOCR機能があるんじゃね?」と思い出しました。
Google Driveで画像を開いたと思ったら文字が全て書き起こされているという事態に衝撃の人々「マジかよ!」「あ!ホントだ」 – Togetter
Google Vision APIを使わない分、性能が落ちるかもしれませんが、自分がやりたいのはスクリーンショットなど読みやすい画像の文字起こしなので、GoogleドライブのOCRを利用する方法でLINE Botを作ろうかな、と。
で、その前提でまたいろいろ調べてみたら、同じことを考えた先駆者がいました。結果を先に言えば、この方の公開されているコードを真似ただけです。
GASとLINE Messaging APIで「My『文字起こし君』」を作る!(AIじゃなくてOCRで!) – walkingmask’s development log
スクリプトはこちらをそのまま丸パクリさせていただければできるのですが、設定周りでいくつか躓きました。なにせ、Google Apps Scriptをまともに触ったのは初めてなので。
全体像
使うのは、LINE Messaging APIとGoogle Apps ScriptとGoogleドライブの3つです。
LINEから画像を渡したら、LINE Messaging APIを通じてGoogle Apps Scriptのウェブサーバーに送られます。
画像を受け取ったら、Googleドライブに画像を導入して、OCR機能で文字を読み取らせます。ここはDrive APIを使います。
読み取った文字をGoogle Apps Scriptで拾って、LINEに返します。処理が終わったら画像は削除します。
Google Appsスクリプトでウェブアプリケーション公開
では作り方です。最初は、Google Apps ScriptとLINE Botが連携できるようにします。
アプリケーションのURLがLINE Developersでボットを作成するために必要になりますので、最初にGoogle Apps Scriptでウェブアプリケーションを公開します。
スクリプトの内容は何でもいいので、新規からGoogle Apps Scriptを作成して、ウェブアプリケーションを公開します。「公開」→「ウェブアプリケーションとして導入」でOKです。
「アプリケーションにアクセスできるユーザー」には注意してください。これを「全員(匿名ユーザー含む)」を選んでください。これが設定されていないとうまくLINEからアクセスできません。
「導入」をクリックした後に表示されるURLが、LINE側で必要になります。
LINE Botを作成する
LINE Botを作るためにMessaging APIを使います。料金体系があるので、事前にチェックしましょう。当然Developer Trialを選びます。
プラン・料金 – LINE@でファン獲得!無料アプリで簡単に始めるビジネスLINE
LINE Botを作るためには、LINE Developersで登録していきます。
作成したチャネルのWebhook URLで、Google Apps Scriptを公開した時のURLを登録します。
あと、Webhook送信で「利用する」をチェックしましょう。「自動応答メッセージ」も「利用しない」にしましょう。
アクセストークンは、Google Apps Scriptで必要になります。
Google Apps Scriptを完成させる
これでGoogle Apps ScriptとLINEを接続するための設定準備はできました。後はGoogle Apps Scriptを書いて終わりなのですが、1つ設定が残っています。
Google Apps ScriptからGoogleドライブを利用するためには、 Drive APIを有効にする必要があります。
「リソース」→「Googleの拡張サービス」からDrive APIを有効にしましょう。またGoogle APIコンソール上もDrive APIを有効にする必要がありますので、そちらも忘れずに有効にしましょう。
処理するスクリプトは、先ほど書いた記事に書いてありますので、それを真似ればできます。
GASとLINE Messaging APIで「My『文字起こし君』」を作る!(AIじゃなくてOCRで!) – walkingmask’s development log
スクリプトを変えたら、もう一度ウェブアプリケーションを公開します。この時も細かいですがはまったんですけど、必ずプロジェクトバージョンは「新規作成」を選んでください。(「新規作成」以外のバージョンを指定すると、そのバージョンで公開した内容が反映されます。)
これで、LINE Botから画像を送るとテキスト化することができました。こんなかんじです。
複数の画像を一気に投稿しても、問題なくテキストが返ってきました。
Google Apps Scriptでこんなに簡単にLINE Botが作れると思ってませんでした。RPAなど生産性を上げる機運が社会的に高まっていますが、こうやってテクノロジーの力で、自分の生産性を高めていきたいですね。
その他参考:
LINE API x Google App Script で bot を作成した話 – How to make datas our friends
GoogleAppsScript スクリプトのプロパティの超簡単な使い方 – Qiita