保存したあの資料、探しにくいんですけど?
おはようございます、こんにちは、こんばんは!
いつでも笑顔、いけちゃんです!
前回までに、個性あふれる業者さんの資料画像とテキスト化した文書をGoogle Spread Sheet上に保存するLINE Botを作り上げることができました。
↓前回の記事はこちら!↓
ところが、実際に使用してみたところこんな声が・・・
「保存までされるなんてすっごい機能!でも、業者さんの資料は種類がたくさんあるし、保存したあの資料、探しにくいんですけど?」
「これだけの仕組みがあるなら自動仕分けもできそうじゃないですか?」
なんと!まだまだ改善の余地がありそうです。
探してみるしかない!待っててね!
何をしたいのか、の整理
目的を見失わないために、業者さんの送ってくる資料が最終的にはどうなっていたいのかを整理しました。
- 紙をなくしてほしい
- 手書き文(紙でも、データでも)はテキストデータ化してほしい
- テキストデータ・画像ともに全て保存してほしい
- 何の資料かを識別し、仕分けしてほしい
このなかで、1~3は前回までの仕組みで改善ができていました。
残すは、4. 何の資料かを識別し、仕分けしてほしい
項目のみです。
そんな都合のいい機能、本当にあるの?
Teachable MachineとNode-REDというツールを見つけた!
機械学習で画像・音声を認識させるTeachable Machine
それがあったんですよ皆さま!しかも無償ですってよ!
Googleが提供するTeachable Machine
という、画像や音声を機械学習させて自動で識別するシステムです。
↓表裏を学習させた例がこちら
Teachable Machineの凄さ、改めて体感#protoout#ブックオフでプロポーズするダイエット中のヤマト運輸#TeachableMachine pic.twitter.com/cZTHVBXgSl
— いけちゃん (@since2023_kota) January 28, 2024
ただし、これだけでは私のパソコンのカメラ上でしか使うことはできませんし、識別ができる「だけ」。
目的を達成するためには、LINE Botなどで送られた画像を判定したり、その結果を保存するシステムへの連携が必要です。
前回まで学んだMake
では、Teachable Machine
は直接的に対応していないことがわかったので、色々と調査した結果、連携ができるサービスを発見しました!
様々なオンラインサービスを連携させるNode-RED
下記の記事の②Node-REDの仕組み
を見ていただくとどのようなツールか、のイメージが付きやすかったので紹介します。
Teachable Machine
はノード
が公開されているため、このシステムNode-RED
を活用するとLINE Bot
上でTeachable Machine
を動かすことが出来るかも、と考えました。
ただし、「ド初心者」である私にとって、Node-RED
は扱えるまでの流れが特殊だと感じました。
説明が難しいため、下記リンク先を参考にし、Node-RED
とその中でTeachable Machine
が利用できるようにしておいてください。
※注意:無料期間が記事執筆時点で14日間しかないため、長期に使う場合は別の方法が必要かも
さて、この2つのシステムを用いて、早速実践です!
結論:パソコンのカメラで識別した書類をLINEで通知することまではできた!
まずは結果から、動作状況をこちらの動画で参照ください。
※動画中は情報保護の観点からモザイク処理を施していますNode-REDとLINEの連携はうまくいきそう、でもPCカメラかぁ・・・#protoout#ブックオフでプロポーズするダイエット中のヤマト運輸#NodeRED #LINE #TeachableMachine pic.twitter.com/eGzpWZkFKU
— いけちゃん (@since2023_kota) January 22, 2024
上記を実現したNode-REDのフロー画面です
設定方法はこちら、長いので折りたたんでいます。
私と同じ「ド初心者」の方、ぜひ参考にしてみてください。
事前準備:LINE Notifyの設定はこちら
今回は、LINE Bot
のユーザーからのメッセージに対する自動返信機能ではなく、LINE Notify
というLINEから一方通行の通知を送るための設定が必要です
- LINE Notifyへアクセスする
- 右上のログインをクリックします
- 自身のLINEアカウントを用いてログインします(私はQRコードログインで実施しました)
- 右上が自分のアカウント名になるので、そちらをクリック後、マイページをクリックします
- 下にスクロールし、トークンを発行するをクリックします
- トークン名を入力し(この名前で保存されます)、
1:1でLINE Notifyから通知を受け取る
を選択し、発行するをクリックします
他のグループも表示されますが、誤って選択するとそのグループに通知が届く設定になるので注意してください
- アクセストークンが発行されるので、コピーしてテキストファイルなどにペーストし、保管してください
- 閉じるをクリックすると自動でトップ画面に戻るので、連携中サービスに
From:入力したトークン名
が表示されれば完了です
Teachable Machineの設定はこちら
-
Teachable Machineのリンク先を開き、使ってみるを選択します
- 画像プロジェクトを選択します
- 標準の画像モデルを選択します
- 画像左に
Class1
やClass2
と表示されている箇所が読み取り結果となりますので、そちらクリックし任意の名前に変更します
併せて、左下にあるクラスを追加
をクリックするとさらに結果の種類を増やせますので、3種類以上識別したい場合は増やしてください - パソコンのカメラ機能をONにし、それぞれの識別名称の下にある
ウェブカメラ
をクリックします
- 識別させたい対象物をパソコンのカメラの前に映し、
長押しして録画
をクリックすると画像の学習が始まります
この時、角度を変えたり全体だけから一部だけを読ませてください
また同じ対象物でも別のもの(形や文言が違うなど)も使うとより精度が上がっていきます
- すべての対象物を読み込ませたら、中央の
モデルをトレーニングする
を選択します
- しばらくすると
トレーニング済のモデル
となり右側にプレビューが現れますので、実際に対象物をカメラの前にもってきて試してみてください
その後、右側にあるモデルをエクスポートする
をクリックします
-
モデルをアップロード
をクリックします
- すぐ下の
共有可能なリンク
が更新されますので、リンクURLの右端にあるコピー
をクリックします
-
コピーしました
と表示されたら、テキストファイルなどにペーストし保管してください
Node-REDの設定はこちら
-
Flow Fuseにアクセスし、左上の
Applications
を選択した後、右中央にある青いOpen Editor
をクリックする
-
ノードを追加
タブをクリックし、ノードを検索
と表示されている箇所にblowser
と入力すると、自動でnode-red-contrib-browser-utils
が表示されるのでノードを追加
をクリックします
-
同じやり方で、続いては
line-notify
と検索し表示されるnode-red-contrib-line-notify
も追加します
-
ワークスペース
に、パレット
から画像のノード
を置きます
ドラッグ&ドロップの要領で動かせるのでどんどん置いてみてくださいimage preview
はパレット上ではimage
と短縮されていますので注意
-
ここからは全て
ワークスペース
内での作業ですteachable machine
ノードをダブルクリックし、Urlに以前作成、保存したTeachable Machine
のURLを入力します
-
template
ノードをダブルクリックし、テンプレート部分を{{payload.0.class}}
のみにします -
switch
ノードをダブルクリックし、Teachable Machine
のClass
項目で設定した識別結果名をプロパティ下部の枠内に入力します+追加
をクリックすると増やせますので、いくつも識別結果を作成した場合はそちらを活用して増やしてください
-
アクセストークン
欄に事前に設定したLINE Notify
のアクセストークンを入力し追加(修正時は更新となっています)をクリックします
-
line notify
ノードをコピー(ctrlキー+Cが簡単)し、switch
ノードで設定した個数だけペースト(ctrl+Vが簡単)します
-
コピーした残りの
line notify
ノードのメッセージをそれぞれの識別結果ごとに変更します -
各ノードの左右から出ている窪みをドラッグすると線が伸びていきますので、そちらを各ノード同士繋げていきます
1つのノードから2つのノードに繋げることも可能
-
試す場合は、パソコンのカメラの前に識別させたい対象を見せながら、
camera
ノードの左にある四角いマークをクリックしてください
そうすると、最初にお見せした動画の通り動作していきます
「資料を識別し、仕分ける」以外の機能がなくなった!
さて、せっかく作ったこの機能ですが、当初の目的からは少し離れた仕上がりになってしまいました。
目的を振り返ってみると一目瞭然です。
- 紙をなくしてデータで送ってほしい
⇒できなくなった - 手書き(紙でも、データでも)はテキストデータ化してほしい
⇒できなくなった - テキストデータとともに全てデータとして保存してほしい
⇒できなくなった - 何の資料かを識別し、仕分けしてほしい
⇒できた
なぜ、このようなことが起こったかを確認していきます。
1. LINE Botで画像のやり取りをすると起きる「サーバー切断」
例.画面上部にサーバとの接続が切断されました
とアラートが表示されています
これは実装前の試験で、LINE Bot
に届いた画像をTeachable Machine
で仕分けてどの書類かを返信する設定を組み込んだものです。
しかし試験中にサーバーが切断され、LINE Bot
での返答処理の前に再起動してしまいます。
パソコンのカメラ機能を使用した際にはこのエラーがほぼ出ないため、サーバー負荷が大きい様子です。
やむを得ずLINE Bot
を使用した設定は中止しました。
2. Google Spread Sheet と Microsoft OneDriveがセキュリティ上使用できない
下記画像をご覧ください。
つまり、会社のセキュリティがかかっていてドライブ上のデータ読み込み、書き取りが使えない状況だったのです。
前回までの記事で使用しているGoogle Spread Sheet
に替わり、「OneDrive
なら使えるかも!?」と期待して設定を探してみたのですがあえなく撃沈・・・
Teachable Machine
の機能が革新的なだけに、非常に残念でした。
機械学習という素晴らしい機能、活用方法模索中!
前回までの記事で実装した機能との連携は叶いませんでしたが、Teachable Machineでできる業務改善は間違いなくありそうだという気付きがありました。
「ド初心者」から少し抜け出して、他の方法を見つけて記事にしていきたいと思います。
最後までご覧いただき、ありがとうございました!