LINE Botで画像テキスト抽出&翻訳&記録保存botを作ってみた【GAS】

この記事は最終更新から4年以上が経過しています。情報が古くなっている可能性があります。

こんにちは、しばです。
もう2ヶ月前くらいになりますが、お仕事でLINE botを作る機会がありました。
個人的にもアウトプットしたいなと思ったので、構造が知りたいと思っていたテキスト抽出&翻訳&記録保存機能ができるbotを無料で作ってみました!

今回はこのbotの機能や、botの用意の仕方・GASの連携のさせ方について大事だなぁと思ったところをまとめてみました。

LINE botに興味がある人の参考になれば幸いです。

文字画像翻訳botの概要



英語以外の言語にも対応

機能としては

  • 画像のテキスト抽出
  • 抽出したテキストの翻訳
  • 翻訳したテキストを保存したい場合、記録保存
  • 保存したテキストの呼び出し

以上のことができるbotです。(自分用なので特に公開する予定はないです)

テキスト抽出と翻訳ができるbotは見かけたんですが、自分の海外旅行の時に使うことを考えた時記録保存できたらいいなぁと思ったので記録機能をつけてみました。

使用シチュエーションとしては旅先の看板や標識をイメージ。
ついでに一緒に冒険してる相棒感を出したかったのでRPG風なテキストにしてみました(´▽`)

文字画像翻訳botの機能について

概要

作成期間 3日
使用ツール LINE Messaging API+ Google Apps Script + Google Drive API

機能詳細

使用ツールごとにどんな機能を使ったかまとめました。

LINE API 利用エンドポイント→replay、push、コンテンツ取得
使用イベント→メッセージ、ポストバック、フォロー/フォロー解除
Google Apps Script シートごとにLINE ID名を振ってそれぞれ管理
翻訳(→MicrosoftのTranslator Text API も検討したんですが、GASの翻訳関数(LanguageApp.translate)でも十分高性能&お手軽だったのでそちらに。ただテキストの言語検出はできません)
DriveAPI OCR機能(→Google Vision APIも同系統ですがシンプルだったこちらにしました)

処理の流れ

LINEからのイベントごとにGASでの処理をまとめるとこんな感じです。

フォローされたら シートを用意
フォロー解除されたら シートを削除
画像が送られてきたら 文字認識処理(OCR)
翻訳
GASへ記録
メッセージが来たら “履歴”と来たら記録をメッセージで送信
“履歴”以外は受付不可のメッセージを送信

テストで作成したbotということもあり、APIは性能よりお手軽さ&無料なものを優先しました。

OCR機能をDrive APIのものにしたのもそれが理由ですが、それだと2MB以下推奨らしく、iphoneで撮った画像そのままだと処理中にとまることが(´▽`;)
今回は自分用なので、応答が無くなったら画像容量を小さくして再送する感じにしています。

ちゃんとやるならOCR機能ではなくGoogle VISION APIにするか、ドライブで圧縮させつつファイル容量計算してオーバーしたらアラートを出す、というイメージをしてます。

LINE botを作るにあたって大事なポイント

登録・設定に関して個人的に大事だなぁと思ったポイントを備忘録としてまとめました。

  1. LINE developerでトライアル>チャネル作成
  2. LINE developer側でwebhook送信有効。公開webアプリケーションのURLをwebhookURLを登録。アクセストークン取得
  3. GAS側で公開>「ウェブアプリケーションとして導入」、NEW、全員(匿名含む)の設定を実施
  4. GAS側でアクセストークンを記載

* GASはウェブアプリとして公開することで、doPost関数でポスト送信、doGet関数でGET送信を受け取れるようになるので、これを利用してデータの送受信をします。

* LINE botとGAS双方向でデータのやり取りで必要なのは、
GAS側では、LINE botのAPIとアクセストークンの使用
LINE側では「webhook送信あり」「webhookURL登録」の設定

うまくいかなかった時は以下の設定がおかしいことが多かったです。

  • LINE管理画面での設定エラー「webhook接続できません。」
    →GASが公開されていない、或いは公開時の設定が「全員(匿名含む)」になっていない。
  • GASを修正してもLINE botの挙動が変わらない!
    →コードを修正したら、その度にバージョン「NEW」に設定して再公開する必要がある。
  • LINE APIのリプライ機能を使う場合、LINE管理画面で自動応答なし、友達追加時の挨拶なしの設定が必要

お手軽にチャレンジできて、自分だけのライフハックツールを作れる

今回一番思ったことはGoogle Apps Scriptが非常に便利だったということ。
あんまり使ったことなかったんですが、GAS単体で簡易データベースの機能を果たせるのは非常に便利ですね。取り扱うデータが重要情報でなくシンプルであれば、とてもお手軽に色々なシステムで使えそうだなぁと感じてます。

GASとLINE botの組み合わせはかなりやれることが広そうですね。

ちなみに、このbotを作成した後に人狼GMというLINE botゲームに出会ったんですが、botが人狼ゲームの司会進行をしていてめちゃくちゃ便利。。こんなことも出来るのか。。(°Д°;

今回はLINE APIも限られたものしか使っていませんが、
他の機能を使ってゲームや自分が欲しい機能だけ固めたbotというのも作っていけたら面白そうですね。