写真を撮るだけで手書きの連絡帳がデータ化
毎日の保育園の連絡帳、手書きで記録される貴重な成長の記録を、後から見返したいと思ったことはありませんか?
「○○ちゃんが初めて歩いたのはいつだっけ?」 「あの時の体調不良、どんな症状だったかな?」
そんな時、過去の連絡帳を一枚一枚めくって探すのは大変な作業です。
今回ご紹介するシステムを使えば、連絡帳の写真を撮るだけで、手書きの内容が自動的にデジタルデータに変換され、後から簡単に検索・閲覧できるようになります。将来的には、スマートフォンアプリとしても活用予定で、お子さんの成長記録をより便利に管理できるツールを目指しています。
実際の変換結果
変換前:手書きの連絡帳写真

変換後:構造化されたデータ
以下のような、コンピューターが理解できる形式のデータに自動変換されます
{
“日付”: “10月3日(木)”,
“家庭記入欄”: “病院受診のためお休みします。鼻水、咳続いていますが、特に悪化していません。”
}
{
“日付”: “10月4日(金)”,
“昨日の夕食”: “ごはん、汁、牛乳、豆腐、ソーセージ、鳥そぼろ、ヨーグルト”,
“朝食”: “ごはん、ヨーグルト、牛乳、バナナ”,
“家庭記入欄”: “風邪症状、特に悪化はしないものの、長引いています…。今朝とても機嫌よいですが、食欲は無いのか、ほとんど食べないばかりでした。”,
“保育所記入欄”: “園ではよく食べていました。早く体調が良くなるといいですね。今日はお散歩に行きました。お友だちと一緒にねこじゃらしを取ったり、近所の犬を見つけて「ワンワン!!」と言ったり、とっても楽しそうでした。”
}
この形式にすることで、「10月の体調不良の記録を探したい」「お散歩の記録だけを見たい」といった検索が瞬時に可能になります。
考え方
従来の課題
保育園の連絡帳をデジタル化する際の最大の難しさは、以下のような複雑さにありました:
- 1枚に2日分の記録が混在している
- 手書き文字が枠からはみ出すことが多い
- 項目と内容の位置関係が微妙にずれる
- 文字の判読が困難な箇所がある
これらを従来のプログラムで完璧に処理しようとすると、極めて複雑な設計が必要でした。
AI時代の解決策
今回採用したのは、**「完璧なプログラムを諦め、AIに任せる」**という発想の転換です:
- 単純作業(写真の補正など)→ プログラムが高速処理
- 複雑な解釈(手書き文字の理解、文脈の把握)→ AIが自然に処理
この役割分担により、人間でも判断に迷うような曖昧な部分を、AIが文脈を理解しながら適切にデータ化してくれます。
システムの使い方(技術的な詳細)
このツールは2つのステップで動作します。ソースコードはGitHubで公開しています。
このツールは、大きく分けて2つのステップで実行します。
- 画像の前処理: 写真から連絡帳の外枠だけを検出し、回転や歪みを補正して切り出す。
- 文字起こしとJSON化: 切り出した画像をGeminiに送信し、返ってきた結果をJSONファイルとして保存する。
ステップ1: 写真の自動補正
まずは、撮影した連絡帳の写真を、AIが読み取りやすいように整形します。
元画像(例)
元画像には指も入ってますし、縦型で撮影してしまっていますが、問題ありません。

このスクリプトは、画像の中から最も大きな四角形(=連絡帳の外枠)を見つけ出し、自動で回転・台形補正を行い、以下のような整形済み画像を生成します。
整形後の画像(例)
以下のように外枠からある程度余白持った状態で整形します。

使い方
- カメラで連絡帳の全体が写るように写真を撮り、任意のフォルダ(例:
raw_photos)に保存します。 - 以下のコマンドを実行すると、保存先フォルダに切り出し画像が生成されます。
python sec_cutout.py [元画像フォルダ] [切り出し画像の保存先フォルダ]
ステップ2: AIによる文字起こしとデータ化
次に、整形された画像をAIに読み込ませ、内容をJSONデータに変換します。
準備: APIキーの取得
まず、AIを利用するための準備をします。
- Google AI Studio にアクセスし、お持ちのGoogleアカウントでログインします。
- 「Get API key」から新しいAPIキーを作成します。
- プロジェクトのルートディレクトリに
gemini_key.txtというファイルを作成し、コピーしたAPIキーを貼り付けて保存します。
プロンプトとエラー処理
このスクリプトの心臓部は、geminiapi.py の中に書かれたプロンプト(AIへのお願い文)です。ここで「連絡帳の左右を別々のデータとして、以下の項目を抽出してJSON形式で返してください」といった詳細な指示を与えています。
プロンプトは以下になります。
prompt = (
“これは保育園の手帳の画像です。左右でそれぞれの日のデータがあります。”
“画像から以下の情報を抽出してください:”
“1. 日付:日付が書いてある場合のみ記載。曜日が書いていない場合は補足。”
“2. 昨日の夕食:記載がなければ項目自体を含めないでください。”
“3. 朝食:記載がなければ項目自体を含めないでください。”
“4. 家庭記入欄:上側の文章部分。記載がなければ項目自体を含めないでください。”
“5. 保育所記入欄:下側の文章部分。記載がなければ項目自体を含めないでください。”
“\n”
“左右のページをそれぞれ1つのJSONオブジェクトとし、配列として返してください。”
“食事の内容は「、」で区切った自然な表記にしてください。”
“読み取れない文字は適切な代替で置き換えてください。”
“家庭記入欄と保育所記入欄は改行を含めず、自然な日本語の文章にしてください。”
“JSONとして正確なフォーマットで返してください。”
)
使い方
以下のコマンドを実行します。--inputにはステップ1で作成したフォルダを指定します。
実行後、inputフォルダに_jsonという名前を付けたフォルダが作られ、そこに1日ごとにjsonファイルが生成されます。
python batch_daycare.py --input [切り出し画像フォルダ]
この技術が拓く未来
今回の体験から、「完璧なプログラム」ではなく「AIと人間の協力」というアプローチが、現実の複雑な問題解決に極めて有効であることがわかりました。
手書き文字が多少崩れていても、枠からはみ出していても、AIが文脈を理解して自然な日本語として再構成し、さらに構造化されたデータに変換してくれる様子は、まさに技術革新を感じさせます。
今後の展開予定
- 検索機能付きWebアプリの開発
- スマートフォンアプリでの撮影から保存まで一括処理
- 成長記録の可視化機能(グラフ表示など)
- 家族間での記録共有機能
保育園の連絡帳だけでなく、様々な手書き記録のデジタル化にも応用できる可能性を秘めています。
前回の記事について
以前、保育園の連絡帳をAIで読み取る試みについて2本の記事を書きました。
様々な方法を検証した結果、GoogleのGemini APIを使用する方法が最も精度が高く実用的であることが分かり、今回の実用的な自動化システムの構築につながりました。
興味のある方は、ぜひGitHubのコードをご覧ください。技術的な質問やご意見もお待ちしています。


