書類の押印確認はAIの力を借りよう！機械学習で押印漏れを判別してみた！

# 絶対ミスできない業務はAIの力を借りたい！

こんにちは。
金融業界でお仕事をしています、tomonaといいます。
高校野球と乃木坂46をこよなく愛する社会人です。



<br>

私は前述の通り、金融業界でお仕事をしているのですが、
業界の特性もあってか各省庁から出ている、規定が本当に多い・・。

<br>


守らないといけない規定のひとつに、
 「**確認を行い、その記録正確に残すこと**」 という、
確認印が必須なものがあるのですが、
人の作業なのでどうしても確認印が漏れてしまうことがあります。
<br>

とは言え、規定なので漏れは許されない！！
<br>

そこで、書類の印鑑押印確認にAIの力を借りようと、
**Teachable Machine**と**TM2Scratch**を使用して作成してみました。
<br>

# :robot:完成したもの

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">╭━━━━━━━━━━━━╮<br> 確認業務AIに任せません？ <a href="https://twitter.com/hashtag/protoout?src=hash&amp;ref_src=twsrc%5Etfw">#protoout</a><br>╰━ｖ━━━━━━━━━━╯ <a href="https://t.co/2YW4GukOZW">pic.twitter.com/2YW4GukOZW</a></p>&mdash; tomona (@tomona_co) <a href="https://twitter.com/tomona_co/status/1726974775413952918?ref_src=twsrc%5Etfw">November 21, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>



# :mag_right:Scratchの全体像
![スクリーンショット 2023-11-21 234824.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569361/88aa3020-e9ab-0ebf-f679-1f03e039941a.png)


:::note info
Scratch上でカメラに書類を見せると状態を確認して、
以下のいずれかの回答をしてくれます。
- 印鑑漏れのない書類：**問題なし**と表示
- 印鑑漏れのある書類：**やり直し**と表示
- 書類ないとき：**チェック表を見せてね**と表示
:::

## :pencil2:利用した技術・素材

- [Teachable Machine](https://teachablemachine.withgoogle.com/)
- [Scratch3.0](https://stretch3.github.io/)　(TM2Scratchという拡張機能を使用)


- [ChatGPT](https://chat.openai.com/)　(補助ツールとして利用)


<details>

<summary>詳細説明はこちら</summary>

- Teachable Machine
    - Googleが提供する機械学習のWebツール
    - 取り扱えるのは音声、画像、ポーズ（ジェスチャー）の3種類
- TM2Scratch
    - Teachable Machineで作成した機械学習モデルをScratch3で利用できるようにした拡張機能
- ChatGPT
    - OpenAIが2022年11月に公開した人工知能チャットボット。

</details>



## :wrench:作り方

### 作業①Teachable Machineで機械学習モデルを作成

Teachable Machineは既に多くの人が手順記事を記載していますが
もし詳細説明が必要な場合は
以下の「機械学習モデルの作成はこちら」から確認してください。

<details>
<summary>機械学習モデルの作成はこちら</summary>

まず、[こちら](https://teachablemachine.withgoogle.com/)からTeachable Machineのサイトに進みます。

1.「使ってみる」ボタンを押下します。
Teachable Machineは登録なしですぐに利用可能です。

![スクリーンショット 2023-11-21 220757.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569361/5aa96c74-b4d9-6510-79b3-779e3235171a.png)


2.今回は「画像プロジェクト」を選択します。

![スクリーンショット 2023-11-21 220806.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569361/f02810fe-eeb5-7629-262a-f313cead2001.png)


3.「標準の画像モデル」を選択します。

![スクリーンショット 2023-11-21 220813.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569361/59cafd8e-acf3-c5f4-514f-4130f6fd5350.png)


4.ウェブカメラあるいはアップロードボタンを押下して、学習させたい画像の読み込みを行います。

![スクリーンショット 2023-11-21 220820.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569361/6f9def62-45a8-083e-db0f-60ca96bbbbd5.png)


5.画像の読み込みが完了したら「モデルをトレーニングする」ボタンを押下します。
※学習させる画像は多ければ多いほど精度が向上します。

![スクリーンショット 2023-11-21 220829.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569361/470c247f-7e15-30e2-e209-b0da7f911c5d.png)


6.トレーニングが完了後、プレビュー画面から機械学習の判別精度を確認をすることが出来ます。
精度に問題がない場合は「モデルをエクスポートする」ボタンを押下します。

![スクリーンショット 2023-11-21 220843.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569361/ecc0c4a7-e3bb-4b0e-9756-3e903ef0ac40.png)


7.「モデルをアップロード」ボタンを押下します。

![スクリーンショット 2023-11-21 220851.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569361/bc35ae66-a1fc-c80b-7aae-7cb93c85d22a.png)


8.モデルのアップロードが完了すると、共有可能なリンクにURLが表示されます。
URLのコピーをしてください。

![スクリーンショット 2023-11-21 220900.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569361/902cb7be-e46e-ad06-86be-c29c00e93fd4.png)


</details>


### 作業②機械学習モデルを読み込みプログラミング

1.まず、[こちら](https://champierre.github.io/tm2scratch/)からScratchのサイトに進みます。
Scratchのページが開いたら赤枠のボタンを押下します。

![スクリーンショット 2023-11-21 224647.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569361/f43ccccb-7c79-8b85-843b-0b1dc316e11e.png)


2.Teachable Machineと連携する拡張機能（TM2Scratch）を選択します。

![スクリーンショット 2023-11-21 224704.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569361/cf00aedc-0dd5-1672-afa1-3f9cfe45b16c.png)


3.Teachable Machineと連携できるブロックが表示されます。

![スクリーンショット 2023-11-21 224714.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569361/d95874d5-8cb0-1f6b-2b11-590bf95dd819.png)


4.TM2Scratchのブロックが表示後、「画像分類モデルURL」を選択し
Teachable Machineで作成した共有可能なモデルのリンク
（Teachable Machineで最後にコピーしたURL）を貼り付けます。

![スクリーンショット 2023-11-21 225054.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569361/4fc133fb-85c0-4124-7805-c6f0705ada03.png)


5.共有可能なモデルのリンクを貼り付け後、
「画像分類モデルURL」を押下すると黄色の枠に囲まれて読み込みが開始されます。

![スクリーンショット 2023-11-21 225103.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569361/8bbc4730-9d58-0ddb-0d8d-bd186202dd87.png)



6.利用可能なリンクの読み込みが完了すると、以下のようにブロックが使用可能になります。

![スクリーンショット 2023-11-21 224802.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569361/9f1242cf-7c96-7f89-552c-c5cd5641546a.png)


7.その後、ブロックを組み合わせて実施したいプログラムを作成します。
ここでは以下のようにプログラムして完成させました。

- OKパターンを受け取ったときの設定:「問題なし」と表示
- NGパターンを受け取ったときの設定:「やり直し」と表示
- NGパターン2を受け取ったときの設定:「チェック表をみせてね」と表示



![スクリーンショット 2023-11-21 230129.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569361/ea8a07dc-b7ce-fa76-f6f5-61c6ab3c9a1a.png)








# :girl_tone1:参考資料
https://youtu.be/iL1YUVlByRY?si=FV1FO-G7zaYZu6a2

https://youtu.be/OB1waLErKsA?si=Por5HUVXus0arsoy


# :mouse:ChatGPTから情報収集したものの・・

今回、機会があって新しく学んだTeachable Machine！
<br>

ただTeachable Machineを使うだけでなく、
この機能を最大限活用して何か作りたい！と思いました。
<br>

とはいえ、活用方法がわからない・・。
そうだ！と思って、初めてChatGPTを使ってみることにしました。
<br>

正直、ChatGPTがこんなに便利なことを知らなかったです！びっくりしました！
でも、それよりもChatGPTを使ってみよう！という考えを
私自身が持ったことに一番驚きました。
今までだったら、「私はまだいいや～」と思っていたはずなんです。
<br>


ChatGPTは私にTeachable Machineの基本機能から相性の良いツール、
有効活用の方法まで、たくさんのことを教えてくれました。
こんなかんじ
![スクリーンショット 2023-11-21 235701.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569361/874c0918-5d09-a898-fade-94e919101619.png)

<br>


ただ、
ChatGPTを使って色々な情報が収集できたとしても、
プログラミングなどのスキル不足の私にはハードルが高く、
理想通りにはいかず・・まだまだ勉強が必要だなと思いました。
<br>


# :cloud_tornado:今回の振り返り

正直なところ、今回作った機能を使って、
本当に書類の押印確認ができるかって言われるとまだまだです・・。

実用的でない・・。
想定通りにいかないの本当に悔しいです・・。
<br>

もし、実用的にするには、
都度都度カメラ認識でなく、データを読み込んで確認するようにしたり、
NGだった場合は、指定の宛先にメールで通知するなどといった機能が必要かなと思います。

まだまだ改良の余地がありそうです。
<br>



とはいえ、今回Teachable Machineの機械学習に挑戦して、
OKパターンとNGパターン以外に、
何も表示されていないというパターン（今回でいうNGパターン2）
を作るのは大事だと思いました。
<br>


人間だったら、
「表示されるものがなければ判別するに値しない」と考えるけど
機械（AI）の場合は、人間の当たり前も含め、
全て教えてあげないといけないんだな～と。
頭の柔軟さが求められるな～なんて思ってしまいました。
<br>

前回の記事でも記載したかもしれないけど、
やっぱり新しいことを学ぶのはとても楽しいなと改めて感じました。
<br>

前回の改良版もまだ全然できていないけど、
忘れないうちに再挑戦しようと思います！！
<br>

ここまで見てくださってありがとうございました。



## :bulb:改良版作成のために使ってもらった（11/27追記）

より実用性を持たせるにはまず使ってもらおう！と思い、
同僚に使ってもらったら有益なアドバイスをもらえたので忘れずに記載しようと思います。
<br>


### その①　大量に判別できる方法を考える

もし、押印漏れを確認するのであれば人の目で見るより
早く、かつ大量に確認できるようにすべき、ということ。

今の仕組みだと、1枚1枚カメラに向けて見せないといけなくて、
でも1枚ずつやるのであれば、その際に見ることはできるから、実用度がとても低い。
<br>

前述のとおり私が認識していた、
PDFやスキャンデータを読み込んで判断させるような形にすること
というのはやはり今後の課題になりそうでした。


### その②　押印確認のその後を考える

押印確認をして、その後どうしたいのか、
どうすべきなのかが見えてこない、
押印漏れがあったらなにかアクションが必要なんじゃないか、ということ。
<br>


今の仕組みは、OKかNGか判断させるにとどまります。
でも実用化させるのであれば、
OKだった場合のアクションや、NGだった場合のアクションが必要になるはず。
<br>

これも前述の通り、NGだった場合はメール通知などが必要であることは
認識していましたが、指摘されたことで改めて課題であると感じました。
<br>


また、今回のような、押印漏れが許されない業務なのであれば
さらに深堀りして、押印漏れを起こしたのは誰か、なぜ押印漏れが発生したのかを
分析ができるように結果を残しておくことも追加で必要かもしれません。

<br>


### その③　もっと効果のある利用方法を考える

押印漏れの確認だけに固執しない方が良いのでは、ということ。
<br>

今回押印漏れという、判断の難易度は低い・・・言ってしまえば
誰でも判別可能なものを機械(Teachable Machine)に判別させるものを作りました。
<br>


判断の難易度が低い分、
実用化させるには**量やスピード**で人間を上回る必要があります。
<br>


一方、判断の難易度が高いもの・・・例えば、「○○さんしか分からない」とか、
「この言語は分かる人が限られている」などといった確認業務があれば、
それをパターン化させることで、業務改善ができるかもね、と言われました。
<br>

判断の難易度ももちろんですが、
確認のために書類を郵送しているなどといったことがあれば、
それを機械(Teachable Machine)で判別することもできそう、とも思いました。
<br>

活用方法を限定させず、もっと柔軟に考えようと思いました。
作りはじめはそのつもりだったのですが、
段々使うことにスポットを当ててしまうのは私の悪い癖かもしれません・・・。
気を付けなければ・・・。
<br>


## AIの力だけでなく、仲間の力も借りる

思ったよりたくさんアドバイスがもらえてとても良かったです。
こんなことなら、もっと早く見てもらえればよかった、と思ったくらい。

もらったアドバイスをもとに改良版を作らなければ、、！と思いました。
<br>


<br>

頑張ります！
改めて、ここまで見てくださってありがとうございました。