害獣の駆除業者が屋根裏・床下に置いたセンサーカメラの写真を Gemini で見て、動物の種類と出入りの箇所を見分け、点検の記録と対策の提案の下書きを作る
屋根裏・床下・軒下に置いたセンサーカメラの写真を Gemini API で見て、動物の写った写真を選び、種類の候補と、どのカメラの前をどちらへ通ったかを返させます。出入りの記録と、点検の報告書・対策の提案の下書きを作ります。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Google Apps Script/Python
- 対象業界
- その他/不動産/宿泊
- 対象部門
- 品質管理
- 対象業務
- 内容確認・チェック/書類作成
- 主な課題
- 人手が足りない/判断に時間がかかる/書類作成に時間がかかる
- AIで行う処理
- 画像認識
- 主な効果
- 判断支援/対応スピード向上/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 回収したメモリーカードから、カメラごとのフォルダに写真を移す
- 写真を1枚ずつ送り、動物が写ったものを探して別のフォルダに分ける
- 動物の写真を拡大し、尾・顔・体の大きさから種類を見当をつける
- カメラを置いた場所の控えと見比べ、穴に向かっているか、出てきたかを判断する
- 時刻をカメラごとに書き出し、夜の何時ごろに出入りしているかをまとめる
- 報告書のひな形に、写真を選んで貼り、見立てと次の対策を書く
- 対策の項目と料金の一覧から、封鎖・清掃・追い出しの提案を組み立て、上長に見てもらう
- 人技術の担当がメモリーカードを回収し、事務所の取り込みの端末に差す
- 自動サーバーがカメラの番号ごとに写真を受け取り、撮った時刻で「同じ動きの組」にまとめる
- 自動案件の台帳と設置の控えから、カメラごとの場所・向き・写している穴を引く
- 自動Gemini API が、組ごとに動物の有無、種類の候補、通った向きを返す
- 自動サーバーが時刻とカメラで出入りの表を作り、動物の写った組だけを並べた一覧を出す
- 人担当が一覧を見て、種類と向きを確かめ、直す
- 自動確かめた結果から、点検の報告書と対策の提案の下書きを作る
- 人担当が下書きを直し、上長が確かめてからお客様に送る
各工程の詳しい説明を読む
- 回収したメモリーカードから、カメラごとのフォルダに写真を移す
- 写真を1枚ずつ送り、動物が写ったものを探して別のフォルダに分ける
- 動物の写真を拡大し、尾・顔・体の大きさから種類を見当をつける
- カメラを置いた場所の控えと見比べ、穴に向かっているか、出てきたかを判断する
- 時刻をカメラごとに書き出し、夜の何時ごろに出入りしているかをまとめる
- 報告書のひな形に、写真を選んで貼り、見立てと次の対策を書く
- 対策の項目と料金の一覧から、封鎖・清掃・追い出しの提案を組み立て、上長に見てもらう
(a)空の写真を送るのに時間が消える。 1件の写真の多くは、何も写っていないか、断熱材が揺れただけです。動物の写った数十枚を探すために、数百枚を送ります。 夏場の虫の多い時期は、空の写真がさらに増えます。
(b)夜の写真の見分けが人による。 白黒の写真で尾が写っていなければ、ハクビシンかアライグマかは分かりません。経験のある担当は体の動きで見当をつけますが、その見当は報告書に根拠として残りません。 担当によって、同じ写真の書き方が変わります。
(c)出入りの向きを後から追えない。 「穴に入った」「穴から出た」を担当が頭の中で組み立てて書くので、カメラの向きの控えが曖昧だと、入りと出が逆になります。 封鎖のあとに「まだ入っている」と書くか「出ていっただけ」と書くかで、次の対策が変わります。
(d)報告書が現場の後に回る。 日中は現場を回るので、写真を見るのは夕方以降です。報告書が数日遅れ、その間にお客様から「まだ音がする」と電話が来ます。
- 【人】 技術の担当がメモリーカードを回収し、事務所の取り込みの端末に差す
- 【自動】 サーバーがカメラの番号ごとに写真を受け取り、撮った時刻で「同じ動きの組」にまとめる
- 【自動】 案件の台帳と設置の控えから、カメラごとの場所・向き・写している穴を引く
- 【自動】 Gemini API が、組ごとに動物の有無、種類の候補、通った向きを返す
- 【自動】 サーバーが時刻とカメラで出入りの表を作り、動物の写った組だけを並べた一覧を出す
- 【人】 担当が一覧を見て、種類と向きを確かめ、直す
- 【自動】 確かめた結果から、点検の報告書と対策の提案の下書きを作る
- 【人】 担当が下書きを直し、上長が確かめてからお客様に送る
4番目で「人が写った」組を別に分けるのは、意図してのことです。 設置や回収のときの担当、物件の住人や従業員が写ることがあります。人の写った組は、内容を書かせずに印だけ付け、一覧からも報告書からも外します。
6番目で直した結果だけが、報告書に載ります。 特に種類は、捕獲に許可が要るかや対策の組み立てに関わるので、AIの候補のままでは報告書に入れません。
02今回想定するシステム構成
センサーカメラ(屋根裏・床下・軒下。メモリーカードに保存) ▼【トリガー】回収したカードの取り込み Python のサーバー ├── カメラの番号ごとに受け取り、時刻で「同じ動きの組」にまとめる ├── 設置の控えから、場所・向き・写している穴を引く ├── 縮小、白黒の判定、空に近い組の目印 ▼ Gemini API(画像の理解・構造化出力)── 組ごとの写真とカメラの情報 │ 動物の有無、種類の候補、通った向き、人の写り込みの印 ▼ Python ── 出入りの表(時刻×カメラ)と、動物の写った組の一覧 ▼ 【人】技術の担当が種類と向きを確かめる ▼ Gemini API ── 点検の報告書と対策の提案の文の下書き ▼ 【人】担当と上長が確かめる → お客様へ
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 処理 | Gemini API(動物の有無・種類の候補・通った向きを返し、報告書と提案の文の下書きを作る) | Claude API、OpenAI API |
| 連携 | Python(取り込み、組へのまとめ、設置の控えの引き当て、呼び出し、出入りの表と報告書の組み立て) | Google Apps Script |
| 台帳 | 案件の台帳とカメラの設置の控え(表計算) | - |
| 提案の項目 | 対策の項目と料金の一覧(表計算) | - |
新しく足すのは、取り込みの端末、Python のサーバー、Gemini API の契約です。 カメラ、案件の台帳、報告書のひな形は今のものを使い、設置の控えに「向き」と「写している穴」の列を足す作業が加わります。
写真を見る土台は、Gemini API の画像の理解です。 公式の案内では、対応する形式は PNG、JPEG、WEBP、HEIC、HEIF で、画像を直接入れる場合は、指示の文などを合わせたリクエスト全体が20MBまでです。1回のリクエストに入れられる画像は最大3,600枚とされていますが、大きさの上限があるので、組を十数組ずつに分けて呼びます。 大きな写真をくり返し使うときは Files API を使うよう案内されています。
位置は枠で返させます。 枠は [ymin, xmin, ymax, xmax] の順で、画像の大きさに対して0〜1000に正規化されます。動物の枠が組の中でどちらへ動いたかが、通った向きの根拠になります。
出力は構造化出力で受けます。 /v1beta/interactions に送り、response_format で mime_type を application/json にし、schema にスキーマを入れます。文字列の enum、配列の minItems・maxItems が使えます。minLength・maxLength はエラーにならずに外されるので、文の長さはサーバーで見ます。値が正しいかはアプリ側で検証するよう公式に書かれています。
03どうやって実装するのか
処理の起点を決める
回収したメモリーカードを、事務所の取り込みの端末に差したときに動かします。 担当が案件の番号を選んでからカードを差し、端末がカメラの番号ごとに写真をサーバーへ送ります。案件の番号を選ばずに差したカードは取り込まず、「どの物件のカードか」を画面で聞きます。物件を取り違えると、別のお客様の報告書に写真が載るからです。
通信の機能があるカメラなら、写真が届くたびに受け取る形にもできます。 その場合も、AIに渡すのは1日1回、夜明けのあとにまとめてにします。夜の出入りは組が続けて撮れるので、途中で切って渡すと、入りと出が別の日に分かれて読めなくなります。
封鎖のあとの確かめの点検は、別の印を付けて動かします。 案件の台帳で「封鎖済み」の物件は、封じた穴の前のカメラに動物が写ったら、報告書を待たずに担当へすぐ知らせます。 封鎖のやり直しは早いほど被害が小さいからです。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| カメラの写真 | 撮った時刻(写真の記録の情報)、カメラの番号、昼の色の写真か夜の白黒か | メモリーカード |
| 設置の控え | カメラの番号、置いた場所(例:2階の屋根裏の北の梁)、向き、写している穴、穴の外と内がどちらか | 設置の控え(表計算) |
| 案件の情報 | 物件の種類(戸建て・アパート・飲食店・旅館・倉庫)、調査か封鎖のあとか、封鎖の日、これまで写った種類 | 案件の台帳 |
| 種類の候補の一覧 | ハクビシン、アライグマ、タヌキ、イタチ、テン、ネズミ、コウモリ、ネコ、鳥、その他 | サーバーに持たせる |
| 見分けの手がかり | 種類ごとに写真で見る所(顔の白い線、尾の縞、尾の長さ、体の大きさ)を短く書いたもの | 技術の担当たちで書き出したもの |
質を決めるのは、設置の控えの「向き」と「穴の外と内」です。 「この写真の右側が穴、穴の向こうが外」と分かっていれば、動物の枠が右へ消えたら「出た」、右から現れたら「入った」と読めます。 控えに向きが無いと、AIは写真だけで向きを当てようとし、入りと出が逆になります。
撮った時刻は、写真の記録の情報から取ります。 写真の下に焼き込まれた時刻の文字をAIに読ませることもできますが、読み違いが出たときに、出入りの順番が狂います。 記録の情報が無いカメラのときだけ、焼き込みの文字を読ませ、読んだことを印として残します。
データの取得方法を決める
写真は、取り込みの端末からサーバーがカメラの番号ごとに受け取ります。 カメラのフォルダの名前を設置の控えの番号にそろえておけば、どのカメラの写真かを取り違えません。 フォルダの名前が控えに無ければ、取り込みを止めます。
設置の控えと案件の台帳は、サーバーが表計算から読みます。 案件の番号で行を引き、カメラごとの場所・向き・穴、封鎖の日を取り出します。封鎖の日より後の写真かどうかは、サーバーが時刻で分けます。 AIには「封鎖の後」とだけ渡します。
Gemini API へは、組を十数組ずつと、そのカメラの情報をまとめて渡します。 組は、同じカメラで続けて撮られた写真のまとまりで、サーバーが「前の写真から1分以内」を同じ組にします。 1組に入れる写真は先頭・中ほど・最後の3枚までにし、組の番号と時刻を添えます。
有料の利用枠で使い、store を false にします。 Gemini API の規約では、有料のサービスではプロンプトと応答が製品の改善に使われないとされています。Interactions API は既定でやり取りを保存し(有料の枠で55日、無料の枠で1日)、store=false で保存しない動きにできると案内されています。store=false では前のやり取りを引き継げないので、毎回、カメラの情報をそろえて送ります。
AIへ渡す前に整形する
- 組へのまとめ … 同じカメラで1分以内に続いた写真を1組にし、3枚まで選びます
- 縮小 … 長い辺を1,280ピクセル程度にします。屋根裏の奥の小さな動物が分かるよう、縮めすぎません
- 昼と夜の印 … 白黒の写真かどうかを画素の色で見て、組に印を付けます
- ほぼ同じ写真の目印 … 組の中の写真の差が小さいものに、「動くものが写っていない見込み」の目印を付けます。目印の組も捨てずにAIに渡します
- 時刻の確かめ … 記録の時刻が設置の日より前、または回収の日より後なら、カメラの時計のずれとして担当に知らせます
- 大きさの確認 … 1回分の写真と指示の文が20MBを超えないかを見て、超えるときは組を分けます
4番目で目印の組を捨てないのは、ネズミとコウモリのためです。 小さな動物は画面の端を一瞬だけ横切り、差の小さい写真に写っていることがあります。 差の大きさで捨てると、封鎖のあとに入っていたネズミを見落とします。
5番目を軽く見ないでください。 電池を替えたときにカメラの時計が戻ることがあり、夜の出入りが昼の時刻で並ぶと、種類の見当まで狂います。
AIに処理させる
させるのは、組ごとに動物の有無と種類の候補を返すこと、通った向きを返すこと、人の写り込みに印を付けることだけです。
| 返すもの | 中身 | 判断できないときの扱い |
|---|---|---|
| 写ったもの | animal(動物)/none(何も写っていない)/person(人)/object_only(断熱材・虫・光の変化) | 暗くて分からなければ unclear |
| 種類の候補 | 候補の一覧から1〜3つと、見えた手がかり(尾の縞、顔の白い線など) | 手がかりが写っていなければ候補を複数のまま残す |
| 頭数 | 同じ写真に写った数 | 重なって数えられなければ uncountable |
| 通った向き | 設置の控えの「穴の外と内」に当てた entering(入る)/leaving(出る)/passing(穴の前を横切る)/unknown | 1枚しか写っていなければ unknown |
種類を手がかりと組みで返させるのが、この構成の要です。 「ハクビシン」とだけ返させると、担当は写真を開き直して確かめるしかありません。「顔の中央に白い線が見える」と返していれば、担当はその所だけを見れば足ります。 手がかりが無いのに候補を1つに絞った答えは、サーバーが「要確認」に回します。
4行目の向きは、写真の中の動きだけで決めさせます。 「封鎖の後だから出ていったはず」のように、案件の事情から向きを推し量ることを禁じます。 封鎖の効き目を確かめるための記録なので、事情に寄せた答えは記録の意味を消します。
| させないこと | 理由 |
|---|---|
| 種類を断定すること | 夜の写真では手がかりが写らないことが多い。担当が決める |
| 捕獲するか、許可が要るかを判断すること | 法令と自治体の運用に関わる。担当と上長が決める |
| 人について書くこと | 住人・従業員・担当が写ることがある。印だけを付ける |
| 被害の大きさや建物の傷みを断定すること | 写真の範囲では分からない。現場で確かめる |
| 感染症や衛生上の危険を書くこと | 写真からは分からない。お客様に誤った不安を与える |
| 封鎖の効き目を言い切ること | 写っていないのは、その期間にカメラの前を通らなかっただけかもしれない |
最後の行がいちばん起きやすい失敗です。 封鎖のあとの点検で動物が写らないと、AIは「侵入は止まっています」と書きたがります。写真から言えるのは「この期間、このカメラの前で出入りは写っていない」までです。 報告書の言葉もそこで止めます。
指示内容を固定する
あなたは害獣の駆除の会社で、センサーカメラの写真を見る手伝いをする係です。
物件は {木造2階建ての戸建て} で、点検は {封鎖の後} のものです。
カメラ {C-2} は {2階の屋根裏の北の梁} に置き、{軒の通気口の穴} を写しています。
写真の右側が穴で、穴の向こうが外です。
組の番号と時刻、写真は次のとおりです。{組1: 02:13:40 (3枚), 組2: 02:47:05 (2枚) ...}
【やること】
1. 組ごとに、写ったものを animal / none / person / object_only / unclear から選ぶ。
2. animal のとき、種類の候補を次の一覧から1〜3つ選び、見えた手がかりを短く書く。
{ハクビシン, アライグマ, タヌキ, イタチ, テン, ネズミ, コウモリ, ネコ, 鳥, その他}
動物の位置を [ymin, xmin, ymax, xmax] の順で、0〜1000 に正規化して返す。
3. 頭数を数える。重なって数えられなければ uncountable にする。
4. 組の写真の中で動物がどちらへ動いたかから、entering / leaving / passing / unknown を選ぶ。
【厳守事項】
- 手がかりが写っていないときは、候補を1つに絞らないでください。
- 向きは写真の中の動きだけで決めてください。封鎖の後だから、などの事情で決めないでください。
- 1枚しか動物が写っていない組は unknown にしてください。
- 人が写っていたら person だけを選び、その人について何も書かないでください。
- 捕獲、許可、駆除の方法について書かないでください。
- 被害の大きさ、建物の傷み、感染症や衛生の危険について書かないでください。
- 侵入が止まった、もういない、と書かないでください。
「手がかりが写っていないときは候補を1つに絞らない」を置くのは、報告書の言葉を守るためです。 何も言わないと、AIはいちばんありそうな種類を1つ答え、それが報告書に「ハクビシンが侵入」と載ります。 アライグマだったと後で分かれば、対策も説明もやり直しです。
「人が写っていたら person だけを選ぶ」は、写った人を記録に残さないための線です。 回収に来た担当が写った組も同じに扱い、誰が写ったかの記述を一切作らせません。
報告書と対策の提案の文は、別の呼び出しで作ります。 担当が確かめた出入りの表と、対策の項目の一覧だけを渡し、「写真で確かめた範囲と書く」「種類は担当が確かめたものだけを書く」「捕獲の提案は書かず、必要なら担当が足す」「料金は一覧から写すだけで計算しない」を入れます。
出力形式を固定する
呼び出しごとに、次の形の JSON で受け取ります。 seen、direction、species は enum で決まった文字列に絞り、groups は渡した組の数を minItems・maxItems で求めます。
{
"camera": "C-2",
"groups": [
{ "group": 1, "time": "02:13:40",
"seen": "animal | none | person | object_only | unclear",
"species": ["hakubishin", "araiguma"],
"cues": "体は猫より大きく、尾は長いが縞は写っていない",
"count": "1",
"box_2d": [380, 520, 610, 760],
"direction": "entering | leaving | passing | unknown" }
]
}
1つ目の理由は、groups をそのまま出入りの表にできることです。 サーバーは時刻とカメラで並べ、夜の何時ごろ、どの穴で、どちらへ動いたかを表にします。
| 日付 | 時刻 | カメラ(場所) | 確かめた種類 | 向き | 備考 |
|---|---|---|---|---|---|
| 10/21 | 02:13 | C-2(北の通気口) | ハクビシン | 入る | 担当が尾の形で確かめた |
| 10/21 | 04:40 | C-2(北の通気口) | ハクビシン | 出る | - |
| 10/26 | - | C-2(北の通気口) | - | - | 10/23 の封鎖のあと、写真に出入りは写っていない |
3行目のように、「写っていない」も1行として書きます。 封鎖のあとの報告書では、写っていない期間とカメラの範囲を書いておけば、お客様が言葉どおりに受け取れます。
2つ目は、species が配列で、絞れなかったことが記録に残ることです。 担当が確かめて1つに決めたら、その結果を別の項目に書き、AIの候補はそのまま残します。 後で見分けの手がかりを直すときの材料になります。
3つ目は、seen の person を見て、サーバーが写真ごと報告書の材料から外せることです。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 取り込みの端末 | サーバーが受け取る | カメラの番号ごとの写真と時刻 |
| 案件の台帳・設置の控え | 読み取り | 物件の種類、点検の種類、封鎖の日、カメラの場所・向き・穴 |
| Gemini API | API呼び出し(/v1beta/interactions、store=false) | 組ごとの有無・種類の候補・向き、報告書と提案の文の下書き |
| 担当の確認の画面 | サーバーが表示する | 動物の写った組の一覧、出入りの表、直す操作 |
| 報告書のひな形 | 書き込み | 担当が確かめた出入りの表、選んだ写真、文の下書き |
| 担当への知らせ | チャットかメール | 封鎖のあとに穴の前で動物が写ったとき |
案件の台帳へは書き込みません。 次の対策を決めて台帳を更新するのは担当です。
お客様への報告書と提案は、下書きまでにします。 担当が直し、上長が見てから送ります。料金を含む提案は、AIの文のまま出しません。
人が確認する
unclearと、手がかりの無い候補を先に見る … 写真を開いて種類を決めるか、「種類は不明」と書きます- 向きを確かめる …
entering・leavingの組を見て、設置の控えの向きと合っているかを見ます none・object_onlyの組を流し見る … 小さな動物の見落としが無いかを、一覧の縮小写真で見ます- 報告書を直す … 写真で確かめた範囲の言い方になっているか、種類が確かめたものだけかを見ます
- 上長が提案を見る … 捕獲を入れるかどうか、許可の手続きが要るかは、ここで決めます
3番目を省かないでください。 封鎖のあとの点検は「写っていない」を言うためのものなので、ネズミの1組の見落としが、そのまま報告書の誤りになります。
目標は、240件をならして1件7分です。 動物の写らなかった点検は数分で済み、調査の点検で種類が多い物件や、旅館のようにカメラが多い物件は10分を超えます。
例外に対処する
| 起きること | 対応 |
|---|---|
| 案件の番号を選ばずにカードを差した | 取り込まず、どの物件かを画面で聞く |
| フォルダの名前が設置の控えに無い | 取り込みを止め、担当が控えを直す |
| 写真の時刻が設置・回収の日の外にある | カメラの時計のずれとして担当に知らせ、時刻の並べ替えを止める |
| 返ってきた組の数が渡した数と合わない | 呼び直す。2回合わなければ、その組は担当が見る |
| 封鎖のあとに穴の前で動物が写った | 報告書を待たずに担当へ知らせる |
| 指示に反して「侵入は止まった」や捕獲・衛生の危険を書いた | その出力を保存せずに捨て、呼び直す |
JSON の値が enum に無い | その組を unclear として担当が見る |
| API が応答しない | 写真を残し、時間をおいて呼び直す |
上から3行目までが大半を占めます。 どれもAIの精度の問題ではなく、カードとカメラの扱いの問題です。 6行目は、文の中に「止まった」「いない」「捕獲」「感染」などの言葉が入っていないかをサーバーで見ます。
記録を残す
- カメラごとの元の写真と、組へのまとめ方、AIに渡した写真
- 渡したカメラの情報(場所・向き・穴)の版と、Gemini API が返した JSON
- 組ごとに担当が決めた種類と向き、AIの候補との違い
- 出入りの表、送った報告書と提案
personの印が付いた組の数(写真そのものは報告書の材料に使わない)
3つ目が、見分けの手がかりと設置の控えを直す材料になります。 同じカメラで向きの直しが続くなら、控えの向きが間違っています。種類の直しが多い組み合わせは、手がかりの書き方を足します。
person の写真は、点検の記録の保存の期間が過ぎたら消します。 人が写った写真を報告書に使わず、必要な期間だけ残す扱いを社内で決めておきます。
04実装レベルの3段階
最小構成では件数がさばけません。 1件数百枚の写真を手で貼るのは無理です。確かめるための段階です。 半自動化で、1件20分が12分程度になります。 空の写真を送る時間は消えますが、設置の控えを開いて向きを当てる作業と、報告書に写真を選んで貼る作業が残ります。 本格構成で7分になり、この段階が本記事の想定です。 段階を飛ばさないでください。 半自動化の1か月で、どのカメラの置き方で向きが unknown になるか、どの種類の組み合わせで見分けを誤るかが分かります。
05工数削減シミュレーション
導入後 240件 × 7分 ÷ 60 = 28 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 住宅・店舗・旅館・倉庫の害獣の駆除と侵入口の封鎖を請け負い、調査や封鎖のあとの確かめのためにセンサーカメラを屋根裏・床下・軒下に置いて、点検のたびに数百枚の写真を事務所で見ている会社。技術の担当が写真から種類と出入りの箇所を見分け、点検の報告書と対策の提案を手で書いている場合。カメラごとに置いた場所と向きを控えている場合。
- カメラを庭・玄関・駐車場など住人や通行人の通る場所に向けて置く使い方が中心の場合(人が写る写真が多くなり、この構成の前提に合いません)。点検が月に数件で、写真の枚数も少ない場合。ネズミの糞やかじり跡、においなど、写真に写らない痕跡の調査が中心の場合。なお、捕獲や殺傷をするかどうか、そのための許可の要否、建物の修理の方法の判断は、この構成では代替できません。
07最小構成で試す方法
- 終わった案件から30件の点検を選ぶ(うち数件は、後から種類が違っていたと分かった点検と、封鎖のあとに再び入られた点検を入れる)
- その30件について、当時の報告書の種類と向きを書き出す
- 動物の写った組と空の組を混ぜて、カメラの場所と向きの説明と一緒に手元の Gemini の画面に貼り付ける
- 「組ごとに、写ったもの、種類の候補と見えた手がかり、通った向きを答えてください。手がかりが無ければ候補を1つに絞らないでください。人について書かないでください」と指示する
- 出てきた結果を、当時の報告書と、後で分かった本当の種類と突き合わせる
30件は必ずやってください。 サーバーを作る前に、「今のカメラの置き方の写真で、向きが返せるのか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 後で分かった種類が候補に入り、向きが控えと合った | 取り込みとサーバーの作成に進む |
| 手がかりが無いのに種類を1つに絞った | 指示の書き方で直る。構成は有効 |
穴が写真の端で切れていて、向きが unknown ばかり | カメラの置き方が先。 AIの問題ではない |
3行目が出ることは珍しくありません。 失敗ではなく、担当が向きを頭の中で補っていた理由が1つ分かったということです。 穴が写真の真ん中に入る置き方に変えて、次の点検で撮り直してください。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 封鎖のあとに「侵入は止まった」と書く | 「この期間、このカメラの前で写っていない」までにする |
| 手がかりが無いのに種類を1つに絞る | 候補を配列で返させ、手がかりと組みにする |
| 入りと出が逆になる | 設置の控えに向きと穴の外と内を書き、それをAIに渡す |
| 事情に寄せて向きを決める | 写真の中の動きだけで決めさせる |
| 差の小さい写真を捨ててネズミを見落とす | 目印を付けるだけで捨てない |
| カメラの時計がずれて出入りの順が狂う | 設置・回収の日の外の時刻は並べ替えを止める |
| 人が写った写真が報告書に載る | person の組を材料から外し、内容を書かせない |
| 別の物件のカードを取り込む | 案件の番号を選ばないと取り込まない |
| 提案に捕獲が自動で入る | 捕獲は書かせず、担当と上長が足す |
| 料金を文の中で計算する | 一覧から写すだけにし、合計はサーバーが出す |
上の2行が、この構成の失敗のほとんどです。 どちらも、写真から言えることより強い言葉を報告書に書くことから出ています。写真から言える範囲で言葉を止めることが、指示と運用の両方で守る線です。
3行目も、早く効いてきます。 向きが逆の報告書は、封鎖した穴が効いていないように見せ、要らない追加の工事を勧めることになります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: お客様の建物の中の写真、物件の住所と種類、点検と封鎖の記録、対策の提案と料金です。カメラには、設置と回収の担当、物件の住人や従業員が写ることがあります。
- 人の写った写真を、個人情報として扱う … 個人情報保護委員会のガイドラインは、個人情報の例として防犯カメラに記録された情報等本人が判別できる映像情報を挙げています。カメラは屋根裏・床下・軒下の人の通らない所にだけ置き、居室や庭に向けません。 人の写った組は内容を書かせず、報告書にも使いません
- 捕獲の判断をAIに寄せない … 鳥獣保護管理法は、鳥獣の捕獲等をしようとする者は環境大臣か都道府県知事の許可を受けなければならないとし(第9条)、環境省令で定める鳥獣には法の規定を適用しないとしています(第80条)。写った動物がどちらに当たるか、捕獲をするかは、担当と上長が法令と自治体の運用で確かめて決めます。 AIの種類の候補は、その判断の材料の一つにすぎません
- お客様の建物の中を外に広げない … 屋根裏や床下の写真には、建物の作りや設備が写ります。写真と報告書を見られる人を技術部に限り、報告書はそのお客様にだけ送ります
- 不安をあおる言葉を書かせない … 感染症や衛生の危険、被害の大きさをAIに書かせません。提案は、写真で確かめた出入りの事実から組み立てます
- 使うのは社内の担当だけにする … Gemini API の規約は、18歳以上であることを利用の条件とし、18歳未満の人に向けた、または使う見込みのあるアプリでの利用を認めていません。AIに触れるのは技術の担当だけにし、お客様が写真を送ってAIに見せる窓口は作りません。 子どものいる家でも、カメラを人の通らない所にだけ置く決まりを守ります
- AI側にやり取りを残さない … 有料の利用枠で使い、
store=falseを付けます
誤りが起きた場合のリスクは、再侵入を見落として「止まった」と伝えることと、種類を誤って対策を組み違えることの2つです。 前者は写っていないことを止まったことと読むと起き、後者は手がかりの無い種類を言い切ると起きます。どちらも、写真から言える範囲を超えたときに起きるので、そこを設計で守ります。
10まず何から始めるか
1週目:設置の控えに向きを書き足す
今置いているカメラについて、写している穴と、写真のどちら側が外かを控えに書き足します。カメラのフォルダの名前を控えの番号にそろえます。
2週目:30件で試す
終わった案件から30件の点検を選び、手元の Gemini の画面で組ごとに答えさせます。手がかりの無いまま種類を1つに絞っていないか、向きが控えと合っているかを最優先で見ます。
3週目:見分けの手がかりと置き方を決める
担当たちで、種類ごとに写真で見る所を書き出します。穴が写真の真ん中に入り、外と内が分かる置き方を、カメラの取り付けの決まりにします。
4週目:まとめて出入りの表を出す
担当が1件分の写真をまとめて API に渡し、動物の写った組の一覧と出入りの表を作るところまで作ります。この時点では報告書を作らず、担当の判断と並べて見ます。
2か月目: カードの取り込みのトリガーと、封鎖のあとの知らせを足します。3か月目以降: 報告書と提案の下書きを足し、1件20分が何分になったかを実測します。封鎖の効き目を、出入りの表の「写っていない期間」で説明するようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
対応する画像の形式が PNG・JPEG・WEBP・HEIC・HEIF であること。画像を直接入れる場合は指示の文などを合わせたリクエスト全体が20MBまでであること。1回のリクエストの画像が最大3,600枚であること。大きな写真やくり返し使う写真には Files API を使うこと。位置が [ymin, xmin, ymax, xmax] の順で0〜1000に正規化されて返ること | Google AI for Developers: Image understanding | 2026-10-29 |
構造化出力を /v1beta/interactions の response_format(mime_type に application/json、schema)で指定すること。enum、minItems・maxItems が使えること。minLength・maxLength はエラーにならずに外されること。値はアプリ側で検証するよう書かれていること | Google AI for Developers: Structured output | 2026-10-29 |
Interactions API が既定でやり取りを保存し(有料の枠で55日、無料の枠で1日)、store=false で保存しない動きにできること。store=false では前のやり取りを引き継ぐ使い方ができないこと | Google AI for Developers: Interactions API | 2026-10-29 |
| 利用には18歳以上であることが必要で、18歳未満の人に向けた、または使う見込みのあるアプリでの利用を認めていないこと。有料のサービスではプロンプトと応答が製品の改善に使われないこと | Gemini API Additional Terms of Service | 2026-10-29 |
| 鳥獣の捕獲等をしようとする者は環境大臣または都道府県知事の許可を受けなければならないこと(第9条第1項)。環境衛生の維持に重大な支障を及ぼすおそれのある鳥獣等であって環境省令で定めるものには法の規定を適用しないこと(第80条第1項)。2026-07-01 施行の改正を含む版であること | e-Gov 法令API: 鳥獣の保護及び管理並びに狩猟の適正化に関する法律 | 2026-10-29 |
| 個人情報の例として、防犯カメラに記録された情報等本人が判別できる映像情報が挙げられていること | 個人情報保護委員会: 個人情報の保護に関する法律についてのガイドライン(通則編) | 2026-10-29 |
捕獲をするか、許可が要るか、どの対策を勧めるかは、法令と自治体の運用、お客様との取り決めに合わせて担当と上長が決めてください。 本記事は上の公式の情報で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-2267)についてのご相談はこちらから。
