【日本語OCR】画像からChatGPTでイベント情報を抽出してGoogleカレンダーに反映する【Zapier連携】

# はじめに
こんにちは、朝日新聞社メディア研究開発センターの杉野です。
有償のChatGPT Plusで画像アップロード機能(GPT-4 with vision)が使えるようになったので、紙の情報（例えばイベントチラシや学校行事のお便りなど）からGoogleカレンダーに予定を転記する方法を探ってみました。

# 準備１：ZapierプラグインでChatGPTとGoogleカレンダーを連携する
まずはブラウザのChatGPTにログインします。
次に、Zapierを使ってChatGPTとGoogleカレンダーを連携させます。以下の記事で丁寧に手順が解説されていますのでそれに従ってください。

https://note.com/yn_gpt_blog/n/n78038d12d779

注意：上記の記事にも注意書きがありますが、アクションを設定するとき、画面下の「Show all options」内でも設定が必要です。
![スクリーンショット 2023-12-06 17.41.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737805/d009479c-17f1-e596-092b-1009f9405cc0.png)

「Show all options」をクリックしたら、以下の「Summary」「Description」「Location」などを「Have AI guess a value for this field」に設定します。そうすることで、読み取った情報からいい感じで予定の名前や場所情報、説明などを予定に設定してくれます。

![スクリーンショット 2023-12-06 17.42.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737805/bd447a55-6d21-0478-cf02-324270120814.png)

ちなみに：試行錯誤していたら途中でZapierにログインできなくなるトラブルに遭遇。こちらの記事に従ってキャッシュをクリアしたりChatGPTへの再ログインを試みることで解決しました。

https://windowsreport.com/ja/%E4%BF%AE%E6%AD%A3-%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%99%E3%82%8B%E9%9A%9B%E3%81%AE-chatgpt-%E8%AA%8D%E8%A8%BC%E3%82%A8%E3%83%A9%E3%83%BC/

# 準備２：Custom instructionsの設定
Custom instructionsとは？
端的に言うと「ChatGPTに知っておいて欲しい前提条件」と「どのように応答して欲しいか？」をデフォルトで設定できる機能とのことです（ChatGPT Plusで設定可能）。

https://musclecoding.com/custom-instructions/

こんな感じで設定をしておきました。これにより、画像をアップロードするだけで、整った形式で情報抽出をしてくれます。

![スクリーンショット 2023-12-06 19.23.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737805/03ae1e83-d120-c7c3-76bc-4a5458d126ce.png)

以下が全文です。
```
# What would you like ChatGPT to know about you to provide better responses?
あなたは正確な日本語のOCR機能を備えた秘書です。日本語OCRは、チャットの最初に添付されたトレーニングデータを使って行います。
読み取った文章から、イベントスケジュール、開催場所、持ち物リスト、提出物の締切などの重要情報を正確に整理し、箇条書きでわかりやすくまとめて知らせます。
```
```
#How would you like ChatGPT to respond?
画像あるいはPDFが与えられた場合は、その内容を正確に読み取り、特に以下の条件に該当する情報があれば抽出してください。
・行事日程
・提出締め切り
・持ち物リスト

抽出した情報は、以下の形式にしてください。

件名：｛与えられた画像のタイトル｝
場所：｛行事の開催場所、住所等｝
開催者：｛画像情報の発行元もしくはイベントの主催者｝
日付：｛抽出した情報の最も重要な日付}
本文：｛その他補足情報を箇条書きでわかりやすく｝
```

# 準備３：日本語OCRの準備をする
連携や出力形式の設定ができたら、NewChatを開き、ChatGPT 4で日本語OCRの準備をします。

![スクリーンショット 2023-12-06 18.27.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737805/5eb3b5f8-3862-8f5c-3c5c-2a6dac6e6404.png)

プロンプトはこちら。
```
あなたは精密な日本語OCR機能を備えた秘書です。これから与えられる画像には日本語が書かれていますので、添付されたトレーニングデータを使ってpytesseractで日本語を読み取ってください。
```

日本語OCRのやり方、トレーニングデータの入手についてはこちらの記事を参考にしました。

https://qiita.com/YumaHozumi/items/3e5046b495d2b598f534

# 手順１：ChatGPTに画像をアップロードし、日本語OCRする
日本語OCRの準備ができたら画像をアップロードします。例えば子育て家庭であれば学校からのお知らせや、イベントチラシなどの情報を読み取らせると便利かもしれません。（今回はダミーで作成した参観日のお知らせを使ってみました）

![スクリーンショット 2023-12-06 20.13.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737805/67850057-bf8a-47c9-4acd-90adbf507633.png)

OCR結果はこちら。

![スクリーンショット 2023-12-06 18.52.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737805/e72491ac-80ea-7fb4-1a96-39e1922c05fe.png)

# 手順２：Googleカレンダーに情報を反映
モデルをPluginsに切り替えてNewChatを開き、Zapierを選択します。

![スクリーンショット 2023-12-06 18.53.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737805/4b144a83-3019-fa6a-7014-da4b18621912.png)

![スクリーンショット 2023-12-06 18.55.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737805/b83a2bdb-0136-8d69-82e3-4a66b416b7de.png)

先ほど読み取ったOCR結果を貼り付け、カレンダーへの追加を依頼します。

![スクリーンショット 2023-12-06 18.58.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737805/f02971c4-ae10-db02-d1f3-8f33dcc77d39.png)

「イベントを確認して追加する」をクリックすると、確認画面が表示されます。
日時、タイトル、場所、説明などいい感じで設定されています。

![スクリーンショット 2023-12-06 19.00.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737805/130d02b1-6247-24c8-5b19-5f02423ec1c0.png)

「Run」を押してカレンダーに反映。
![スクリーンショット 2023-12-06 19.05.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737805/0c7562a2-e688-1280-f60d-71227a6ce418.png)

Googleカレンダーにバッチリ予定が反映されています。

![スクリーンショット 2023-12-06 20.41.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737805/b02c5e8c-a161-cc25-66ba-701c8bdb1034.png)

# ところで：スマホの写真を使ってOCRするには?
ここまで、全てブラウザのChatGPTで行いましたが、準備３でpytesseractの日本語トレーニングデータを与えたチャットを使えば、スマホのChatGPTから画像をアップしてOCR処理できました(iPhoneで確認）。ただしスマホのChatGPTではPluginsが使えないようなので、Googleカレンダーへの反映はブラウザでやる必要があり、このあたりはスマホのChatGPTのアップデートに期待したいところです。

![File.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737805/8daf4383-782a-c3ee-c81a-aa491cf2afe9.jpeg)

# 最後に
以上、ChatGPTを使って手軽にイベント情報を登録する方法をご紹介しました。理想としては、スマホでOCR→カレンダー登録まで一気にできると良いのですが、今回の方法では２つのチャットを使っての作業が必要です。また、たまにOCRのエラーが発生したりして挙動が安定しないことがあるので、その辺りが今後の改善のしどころかなあと思っています。