賃貸の募集用の室内写真から設備を見分けて、募集図面の設備欄との食い違いを掲載前に拾う
賃貸の募集用に撮った室内写真から、エアコン・独立洗面台・浴室乾燥機などの設備が写っているかを見分けます。募集図面の設備欄と照らし、図面にあるのに写真で見当たらない設備と、写真にあるのに図面に無い設備を掲載前に一覧にします。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Google Apps Script/Python
- 対象業界
- 不動産
- 対象部門
- 営業
- 対象業務
- 内容確認・チェック/比較検討
- 主な課題
- 人手が足りない/属人化している/確認ミスが多い
- AIで行う処理
- 画像認識
- 主な効果
- 入力漏れ削減/品質標準化/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 担当者が空室に行き、室内の写真を撮る
- 写真を物件ごとのフォルダに入れ、掲載に使う写真を選ぶ
- 前回の物件情報を開き、設備欄を見ながら図面を作り直す
- 写真を1枚ずつ開き、設備欄の項目が写真で確かめられるかを見る
- 食い違いがあれば、写真を撮り直すか、管理担当に確かめて設備欄を直す
- ポータルサイトに載せる
- 人担当者が空室の写真を撮る。浴室の天井、洗面所、トイレ、キッチン、各部屋のエアコン、インターホンを撮る場所の一覧どおりに撮る
- 人写真を物件ごとのフォルダに入れ、賃貸管理システムで物件の状態を「掲載準備」にする
- 自動毎日決まった時刻に、Python のプログラムが「掲載準備」の物件の設備欄を CSV で取り、写真のフォルダを読む
- 自動写真を縮小し、人や表札が写っている写真を除く印を付け、Gemini API に物件ごとに写真をまとめて渡す
- 【AI】 設備ごとに、写真で「見える」「写っているが見当たらない」「撮影範囲外」「判断できない」を返し、根拠の写真と位置を添える
- 自動プログラムが設備欄と照らし、「食い違いなし」「図面にあるが見当たらない」「写真にあるが図面に無い」「撮影範囲外」に分ける
- 自動物件ごとの確認用の一覧を作り、根拠の写真に枠を描いたものを並べる
- 人担当者が食い違いの行だけを写真で確かめ、設備欄を直すか、撮り足すか、管理担当に確かめる
- 人確かめ終えた物件をポータルサイトに載せる
各工程の詳しい説明を読む
- 担当者が空室に行き、室内の写真を撮る
- 写真を物件ごとのフォルダに入れ、掲載に使う写真を選ぶ
- 前回の物件情報を開き、設備欄を見ながら図面を作り直す
- 写真を1枚ずつ開き、設備欄の項目が写真で確かめられるかを見る
- 食い違いがあれば、写真を撮り直すか、管理担当に確かめて設備欄を直す
- ポータルサイトに載せる
(a)4番目が省かれる。 空室が多い月は、写真を選ぶところまでで手いっぱいになり、設備欄は前回のまま図面に載ります。 浴室乾燥機が故障で撤去されていた、エアコンが1台減っていた、ということが内見の当日に分かります。
(b)見る場所が担当で違う。 ある担当は浴室の天井を必ず撮り、ある担当は浴槽だけを撮ります。写真の撮り方で、確かめられる設備が変わります。 撮っていない設備は、確かめようがありません。
(c)写真にあるのに設備欄に無い。 温水洗浄便座が付いているのに、設備欄にチェックが無いまま載ることがあります。設備があるのに書かれていないのは、募集の機会を逃しているということです。 誰も気づかないので、表に出てこない誤りです。
(d)1枚ずつの確認は時間がかかる。 20枚の写真と10項目の設備欄を照らすと、1部屋で10分を超えます。200部屋では、全部を同じ丁寧さで見ることはできません。
- 【人】 担当者が空室の写真を撮る。浴室の天井、洗面所、トイレ、キッチン、各部屋のエアコン、インターホンを撮る場所の一覧どおりに撮る
- 【人】 写真を物件ごとのフォルダに入れ、賃貸管理システムで物件の状態を「掲載準備」にする
- 【自動】 毎日決まった時刻に、Python のプログラムが「掲載準備」の物件の設備欄を CSV で取り、写真のフォルダを読む
- 【自動】 写真を縮小し、人や表札が写っている写真を除く印を付け、Gemini API に物件ごとに写真をまとめて渡す
- 【AI】 設備ごとに、写真で「見える」「写っているが見当たらない」「撮影範囲外」「判断できない」を返し、根拠の写真と位置を添える
- 【自動】 プログラムが設備欄と照らし、「食い違いなし」「図面にあるが見当たらない」「写真にあるが図面に無い」「撮影範囲外」に分ける
- 【自動】 物件ごとの確認用の一覧を作り、根拠の写真に枠を描いたものを並べる
- 【人】 担当者が食い違いの行だけを写真で確かめ、設備欄を直すか、撮り足すか、管理担当に確かめる
- 【人】 確かめ終えた物件をポータルサイトに載せる
8番目が、この設計の分かれ目です。 AIの判定で設備欄を自動で直すことはしません。「見当たらない」は、撮り方のせいで写っていないだけのことがあるからです。 担当者が見るのは食い違いの行だけで、食い違いの無い設備は一覧で流し見て終わりにします。
1番目の撮る場所の一覧が、この構成の精度を決めます。 AIは写真にあるものしか見分けられません。撮る場所を決めておけば、「撮影範囲外」が減り、「見当たらない」の意味がはっきりします。
02今回想定するシステム構成
空室の写真(撮る場所の一覧どおり、1部屋15〜25枚) │ 物件ごとのフォルダに保存、物件の状態を「掲載準備」に ▼【トリガー】毎日18時 Python のプログラム ├── 賃貸管理システムから設備欄を CSV で取る ├── 写真を縮小し、写真ごとに番号を振る ▼ Gemini API(画像理解・構造化出力) │ 設備ごとに:見える/見当たらない/撮影範囲外/判断できない │ 根拠の写真番号と位置(0〜1000 の座標) ▼ Python ── 設備欄と照らして4つに分ける、写真に枠を描く ▼ 確認用の一覧(物件ごと、食い違いの行が上) ▼ 【人】担当者が食い違いだけを確かめ、設備欄を直す/撮り足す ▼ ポータルサイトへ掲載
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 処理 | Gemini API(室内写真から設備の有無と位置を返す) | Claude API、OpenAI API |
| 連携 | Python(設備欄の読み込み、写真の縮小、呼び出し、照合、枠の描画、一覧づくり) | Google Apps Script |
| 台帳 | 賃貸管理システムの物件情報(設備欄) | - |
| 保管 | 共有のフォルダ(物件ごとの写真) | クラウドのストレージ |
新しく足すのは、Python のプログラムと Gemini API の契約だけです。 賃貸管理システムからは CSV を読むだけで、設備欄へは書き込みません。 直すのは担当者です。
写真を見る土台は、Gemini API の画像理解です。 対応する形式は PNG、JPEG、WEBP、HEIC、HEIF です。画像をリクエストに直接入れる場合、指示や画像を含めたリクエスト全体が20MBまでで、大きいファイルや、同じ画像を何度も使う場合は Files API が勧められています。1つのリクエストに複数の画像を入れられ、1部屋分の写真をまとめて渡せます。
位置を返させられることも、この構成で使います。 公式の案内では、物体を検出させて枠を返させることができ、座標は画像の大きさに対して 0〜1000 に正規化されるため、元の画像の大きさに戻して使います。例では [ymin, xmin, ymax, xmax] の順で返させています。確認用の一覧で、写真のどこに乾燥機を見たのかに枠を描くのに使います。
出力は構造化出力で受けます。 公式の案内では、response_format で mime_type を application/json にし、schema にスキーマを入れて JSON を返させます。例は /v1beta/interactions に送る形で書かれています。enum で値を決まった文字列に絞れ、required で必須の項目を決められます。構文として正しい JSON でも、値はアプリ側で検証するよう書かれています。
03どうやって実装するのか
処理の起点を決める
毎日18時に、物件の状態が「掲載準備」の物件をまとめて処理します。 担当者は日中に部屋を回って写真を撮り、夕方までにフォルダに入れて状態を変えます。翌朝には確認用の一覧がそろっている形です。
フォルダに写真が入るたびに動かす形にはしません。1部屋の写真は数回に分けて入ることが多く、途中で動かすと「撮影範囲外」が増えます。 状態を「掲載準備」にすることを、「写真をそろえ終えた」という合図にします。
処理済みの物件は、プログラムの記録に物件番号と処理日時を残し、二重に処理しません。 写真を撮り足したときは、担当者が状態を「掲載準備」に戻すと、次の18時に撮り足した写真も含めて処理し直します。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 室内写真 | 1部屋15〜25枚。撮った場所のラベル(浴室・洗面所・トイレ・キッチン・洋室1 など)をファイル名に付ける | 物件ごとのフォルダ |
| 設備欄 | 設備ごとの「あり/なし」、エアコンの台数、コンロの口数と種類 | 賃貸管理システムの CSV |
| 物件の基本情報 | 間取り、部屋の数(エアコンの台数を見るため) | 同上 |
| 設備の見分け方の一覧 | 設備ごとに、どの写真に写るか、何を見れば分かるか | プログラムに持たせる文書 |
質を決めるのは、いちばん下の見分け方の一覧です。 「浴室乾燥機」は、浴室の天井の換気口と一体の機器か、浴室の外の壁の操作パネルで分かります。「追い焚き」は、浴槽の循環口か給湯の操作パネルで分かります。何を見れば分かるかを書いておかないと、AIは浴槽が写っているだけで追い焚きを「見える」とします。
| 設備 | 写る写真 | 見るもの | 写真で判定しないもの |
|---|---|---|---|
| エアコン | 各部屋 | 壁の室内機 | 動くかどうか |
| 独立洗面台 | 洗面所 | 浴室と分かれた洗面化粧台 | 洗面台の幅 |
| 浴室乾燥機 | 浴室の天井、浴室の外の壁 | 天井の機器、操作パネル | 暖房の有無 |
| 追い焚き | 浴室、給湯の操作パネル | 浴槽の循環口、操作パネルの追い焚きのボタン | ガスか電気か |
| 温水洗浄便座 | トイレ | 便座の操作部 | - |
| モニター付きインターホン | 玄関付近の室内 | 画面の付いた室内機 | 録画の有無 |
| 室内洗濯機置場 | 洗面所・廊下 | 防水パンと給水栓 | - |
| コンロ | キッチン | 口の数、ガスか IH か | 都市ガスかプロパンか |
| バス・トイレ別 | 浴室・トイレ | 浴室と便器が別の空間か | - |
右端の列は、写真で判定させないことの一覧です。 ガスの種類やインターネットの設備は、写真では分かりません。写真で分からない設備は、照合の対象から外します。
データの取得方法を決める
設備欄は、賃貸管理システムから CSV で書き出します。 「掲載準備」の物件に絞って書き出し、物件番号・部屋番号・設備ごとの列を持たせます。CSV の書き出しを自動にできない場合は、担当者の1人が毎日17時に書き出して決まった場所に置く運用にします。
写真は、物件ごとのフォルダから読みます。 ファイル名の先頭に、撮った場所のラベルを付けておきます(浴室_01.jpg、洗面所_01.jpg)。ラベルは、AIに「どの写真が浴室か」を推測させないために付けます。 ラベルが無い写真は「その他」として渡します。
Gemini API へは、1物件ごとに1回のリクエストで写真をまとめて渡します。 写真には番号を振り、指示の中で「写真3は浴室」のようにラベルと番号を対応させます。リクエスト全体が20MBを超えそうなときは、写真を縮小するか、Files API でアップロードしてから参照する形にします。
有料の利用枠で使います。 Gemini API の規約では、有料のサービスでは、プロンプトと応答が製品の改善に使われないとされています。無料の枠では扱いが違うので、業務の写真を送るのは有料の枠だけにします。
AIへ渡す前に整形する
- 形式の確認 … PNG、JPEG、WEBP、HEIC、HEIF のどれかであることを確かめます。それ以外は JPEG に変換します
- 縮小 … 長い辺を1,600ピクセル程度に縮めます。1物件20枚をまとめて渡すため、リクエスト全体の20MBに収めます
- 向きの補正 … スマートフォンの写真は、画像の向きの情報で回転しているだけのことがあります。実際の画素を回転させてから渡します。 回転していない写真に返った座標は、枠の位置がずれます
- 除く写真の印 … 窓の外の隣家、表札、人が写っている写真は、担当者が掲載に使わないものとして印を付けます。印の付いた写真は渡しません
- 撮る場所の一覧との照合 … ラベルを見て、浴室の天井・洗面所・トイレ・キッチン・インターホンの写真がそろっているかを先に確かめます。そろっていない場所の設備は、AIに渡す前に「撮影範囲外」と決めます
- 設備欄の整え … CSV の「あり/なし」を、照合する設備の一覧の名前にそろえます。システムの項目名と見分け方の一覧の名前が違う場合は、対応表で変換します
5番目を先に行うのは、AIに「無い写真」を探させないためです。 浴室の天井の写真が1枚も無ければ、浴室乾燥機は判定のしようがありません。プログラムが先に「撮影範囲外」と決め、AIには判定できる設備だけを聞きます。
AIに処理させる
させるのは、照合する設備ごとに、写真で見える状態を4つのどれかで返し、根拠の写真と位置を添えることだけです。
| 状態 | 意味 | 返すもの |
|---|---|---|
visible | その設備が写真で見える | 写真番号、枠の座標、見えたもの(「天井の換気乾燥機」など) |
not_seen | その設備が写るはずの場所が写っているのに、見当たらない | 見た写真番号と、写っていたもの |
out_of_frame | その設備が写るはずの場所が写っていない | 足りない場所 |
uncertain | 写ってはいるが、暗い・遠い・ぶれていて判断できない | 写真番号と理由 |
not_seen と out_of_frame の区別が、第1章の「写っていない」と「無い」を分けることそのものです。 浴室の天井が写っていて乾燥機が無ければ not_seen、浴室の天井が写っていなければ out_of_frame です。設備欄と照らして担当者に強く知らせるのは not_seen だけです。
| させないこと | 理由 |
|---|---|
| 設備欄の「あり/なし」の決定 | 写っていないだけのことがある。決めるのは担当者 |
| 設備が使えるかの判断 | 写真では分からない。現地の確認で行う |
| エアコンの台数の合計 | 同じエアコンが2枚に写ることがある。台数は部屋ごとの有無から人が数える |
| ガスの種類、インターネットの設備の判定 | 写真で分からない。照合の対象から外す |
| 広告として載せてよいかの判断 | 表示のルールの判断は人が行う |
| 写真が取引する部屋のものかの判断 | 写真の撮影の記録で確かめる |
3行目がいちばん起きやすい失敗です。 洋室の写真と、洋室からリビングを見た写真に同じエアコンが写ると、AIは「2台」と数えます。台数は合計させず、写真ごとに「どの部屋の写真にエアコンが写っているか」を返させ、担当者が部屋の数と照らします。
指示内容を固定する
あなたは賃貸の募集の担当者を手伝い、室内写真に設備が写っているかを確かめる係です。
写真に写っているものだけを根拠に答えてください。推測で答えないでください。
【写真】
写真ごとに番号と撮った場所のラベルがあります。
例:写真1=玄関、写真2=洋室1、写真3=浴室、写真4=浴室の天井、写真5=洗面所 …
【確かめる設備と見分け方】
{設備の一覧と、設備ごとの「写る写真」「見るもの」}
【状態の選び方】
- visible ...... その設備が見える
- not_seen ..... その設備が写るはずの場所が写っているのに、見当たらない
- out_of_frame . その設備が写るはずの場所が、どの写真にも写っていない
- uncertain .... 写ってはいるが、暗い・遠い・ぶれていて判断できない
迷ったときに visible を選ばないでください。
【厳守事項】
- 「見るもの」が写っていないのに、他のものから設備があると推測しないでください。
浴槽が写っているだけで、追い焚きを visible にしないでください。
- 写るはずの場所が写っていなければ out_of_frame です。not_seen にしないでください。
- エアコンは、写真ごとに写っているかだけを答えてください。台数を合計しないでください。
- visible のときは、根拠の写真番号と、その写真の中の枠を
[ymin, xmin, ymax, xmax] の順で 0〜1000 に正規化して返してください。
- 設備が使えるか、新しいか、きれいかは書かないでください。
- 人・表札・郵便物など、設備でないものについて書かないでください。
- 確かめる設備の一覧に無い設備が写っていても、ここでは答えないでください。
ただし、extra_findings に名前と写真番号だけを書いてください。
「浴槽が写っているだけで、追い焚きを visible にしない」と具体的に書くのは、AIが「浴室があれば普通は付いている」という知識で埋めるからです。 抽象的に「推測しない」と書くだけでは止まりません。設備ごとに、何が見えたら visible かを見分け方の一覧で渡し、その外の推測を禁じます。
extra_findings を置くのは、第3章の(c)を拾うためです。 設備欄に無い温水洗浄便座が写っていれば、名前と写真番号だけが返ります。照合の一覧に入れず別に出させるのは、確かめる設備の判定が、一覧に無い設備に引っ張られないようにするためです。
出力形式を固定する
次の形の JSON で受け取ります。 status は enum で4つに絞ります。
{
"property_id": "",
"equipment": [
{
"name": "浴室乾燥機",
"status": "visible | not_seen | out_of_frame | uncertain",
"photos": [
{ "photo_no": 4, "box_2d": [120, 380, 260, 640], "seen": "天井の換気乾燥機の本体" }
],
"note": ""
}
],
"aircon_by_photo": [
{ "photo_no": 2, "room_label": "洋室1", "visible": true }
],
"extra_findings": [
{ "name": "温水洗浄便座", "photo_no": 7 }
]
}
照合はプログラムが行います。 AIの status と設備欄の「あり/なし」を並べ、次の規則で4つに分けます。
| 設備欄 | AIの状態 | 照合の結果 | 担当者がすること |
|---|---|---|---|
| あり | visible | 食い違いなし | 流し見 |
| あり | not_seen | 図面にあるが見当たらない | 写真で確かめ、管理担当に聞くか現地で見る |
| あり | out_of_frame | 撮影範囲外 | 撮り足すか、前回からの変更が無いことを管理担当に確かめる |
| なし | visible | 写真にあるが図面に無い | 写真で確かめ、設備欄に足す |
| どちらでも | uncertain | 判断できない | 写真で確かめる |
1つ目の理由は、照合の規則をAIの外に置けることです。 設備欄の項目が増えても、照合の規則は表のまま変わりません。AIには写真のことだけを聞き、設備欄のことは聞きません。
2つ目は、box_2d で確かめが速くなることです。 プログラムが座標を元の画像の大きさに戻して枠を描くので、担当者は枠の中を見るだけで、AIが何を見て「見える」としたかが分かります。
3つ目は、エアコンの台数を人が数えられることです。 aircon_by_photo を部屋のラベルでまとめると、「洋室1と LDK に写っている、洋室2の写真には写っていない」が分かります。設備欄の「エアコン2台」と照らすのは、担当者です。
構文として正しい JSON でも、値の検証はプログラムで行います。photo_no が渡した写真の番号の範囲にあるか、box_2d の値が 0〜1000 に収まり、上下・左右の順が逆でないかを確かめ、外れた行は uncertain として扱います。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 賃貸管理システム | CSV の書き出し(読むだけ) | 「掲載準備」の物件の設備欄 |
| 物件ごとのフォルダ | ファイルの読み込み | 室内写真とラベル |
| Gemini API | Interactions の REST 呼び出し | 設備ごとの状態と根拠の写真・位置 |
| 確認用の一覧 | Python で作る(物件ごとの HTML か表) | 照合の結果と枠を描いた写真 |
| 担当者への知らせ | 社内のチャット | 一覧ができたこと、食い違いのある物件の数 |
賃貸管理システムへは書き込みません。 照合の結果で設備欄を自動で直すと、not_seen を「無い」として書き換え、写っていなかっただけの設備を消すことになります。 設備欄を直すのは、担当者が写真で確かめた後です。
ポータルサイトへの掲載にも、この構成はつなぎません。 掲載は、担当者が確かめ終えた物件だけを、これまでどおりの手順で行います。
人が確認する
担当者が見るのは、食い違いの行だけです。
- 「図面にあるが見当たらない」を先に見る … 枠の無い写真で、本当に設備が無いかを見ます。写真の端に写っていないか、別の写真に写っていないかを確かめます。無ければ管理担当に、撤去や交換の記録が無いかを聞きます
- 「写真にあるが図面に無い」を見る … 枠の中が本当にその設備かを見ます。後付けの設備が入居者の持ち物でないか(退去時に残された温水洗浄便座など)を管理担当に確かめます
- 「撮影範囲外」を見る … 撮り足すか、前回の募集から設備の変更が無いことを管理担当の記録で確かめます
- エアコンの台数を見る …
aircon_by_photoの部屋ごとの有無と、設備欄の台数を照らします - 直したら記録する … どの設備を、どう直したか、根拠は写真か管理担当の記録か
2番目の「入居者の持ち物」を見落とさないでください。 前の入居者が付けたまま退去した設備は、写真には写りますが、貸主の設備として載せてよいかは、貸主と管理担当が決めることです。
目標は、200部屋をならして1部屋6分です。 食い違いの無い部屋は一覧を流し見て1〜2分、食い違いのある部屋は写真と記録を確かめて10分前後かかります。
例外に対処する
| 起きること | 対応 |
|---|---|
| 撮る場所の写真がそろっていない | その場所の設備を out_of_frame にして渡さない。撮り足しを促す |
| リクエストが20MBを超える | 写真を縮小し直すか、Files API でアップロードしてから参照する |
| 写真の向きが回転の情報だけで直っている | 画素を回転させてから渡す。枠がずれた写真は uncertain に |
box_2d が範囲外・順が逆 | その行を uncertain として扱い、写真で確かめる |
| 暗い・ぶれた写真が多い | 撮り直し。撮影の手順を見直す |
| 人や表札が写っている | 印を付けて渡さない。掲載にも使わない |
| ラベルの無い写真 | 「その他」として渡す。多い場合は担当者がラベルを付け直す |
| API が応答しない・上限に当たる | 物件を「掲載準備」のまま残し、次の回で処理する |
| 照合する設備の名前が CSV と合わない | 対応表に足す。足すまではその設備を照合しない |
上の2行と「暗い・ぶれた写真」が大半を占めます。 どれもAIの問題ではなく、撮り方の問題です。 撮る場所の一覧を担当者が持ち歩けるようにするほうが、指示を直すより効きます。
記録を残す
- 物件番号、処理日時、渡した写真の番号とラベルの対応
- AIが返した JSON の全文
- そのときの設備欄(CSV の該当行)
- 照合の結果と、枠を描いた確認用の写真
- 担当者が直した設備と、根拠(写真か、管理担当の記録か)
- 撮り足しを頼んだ物件と、撮り足した日
3つ目で「そのときの設備欄」を残すのは、設備欄が後から直されるためです。 内見で申し出があったときに、掲載の時点で設備欄が何だったか、写真で何が見えていたかを並べて確かめられます。
直した記録は、設備ごとに数えます。 「浴室乾燥機の not_seen が多い」なら、浴室の天井を撮っていないか、乾燥機の撤去が物件情報に反映されていないかのどちらかです。
04実装レベルの3段階
最小構成では、1部屋ずつ送って結果を手で並べるので200部屋には使えません。 確かめるための段階です。 半自動化が、本記事の想定です。 1部屋15分が6分になるのはこの段階です。写真を1枚ずつ開く9分がなくなり、食い違いの行だけを確かめる時間が残ります。 本格構成は、撮り足しを減らしたい場合です。 部屋にいるうちに「浴室の天井の写真が無い」と分かれば、撮り足しのためにもう一度部屋に行く手間がなくなります。 ただし、撮影の端末とプログラムをつなぐ仕組みが要り、難易度が上がります。
05工数削減シミュレーション
導入後 200件 × 6分 ÷ 60 = 20 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 管理物件や元付けの物件の空室を毎月まとまって募集し、撮影した室内写真と募集図面・物件情報の設備欄を、掲載前に担当者が目で照らしている賃貸仲介・管理会社。設備の記載の誤りで、内見や入居後に「書いてあった設備が無い」という申し出を受けたことがある場合。物件ごとの写真が共有のフォルダにまとまり、設備欄を一覧で書き出せる場合。
- 募集する空室が月に数件で、担当者が写真を見ながら照らして足りる場合。室内の写真を撮らずに募集している場合、または写真を外部に撮影を頼み、届くのが掲載の直前になる場合。入居中の部屋の写真(家具や私物、人が写る写真)を使って募集している場合。なお、設備が使えるか(故障していないか)、設備の表示が広告のルールに合うかの判断、写真が取引する部屋のものかの確認は、この構成では代替できません。
07最小構成で試す方法
- 先月掲載した物件から20部屋を選ぶ(うち数部屋は、内見で設備の申し出があったものを入れる)
- 20部屋の写真と、掲載したときの設備欄を用意する
- 有料の枠の Gemini API に、1部屋分の写真と第7章の指示を送る短いスクリプトで、設備ごとの状態を返させる
- 返った状態と、掲載したときの設備欄、実際の設備を並べる
not_seenとout_of_frameを取り違えていないかを数える
20部屋は必ずやってください。 プログラムを組む前に、「写っていない」と「無い」を分けて返せるかを確かめます。業務の写真を使うので、試すときも有料の枠で行います。
| 出てきた内容 | 判断 |
|---|---|
申し出のあった部屋で、食い違いの設備が not_seen になった | プログラムで照合する段に進む |
浴槽だけで追い焚きを visible にした | 見分け方の一覧と指示で直る。構成は有効 |
out_of_frame が多く、判定できる設備が少ない | 撮る場所の一覧が先。 AIの問題ではない |
| 同じエアコンを2台と数えた | 台数を合計させない指示で直る |
3行目が出ることは珍しくありません。 これまで担当者が写真で確かめていた設備の多くが、実は写真では確かめられていなかったということです。撮る場所の一覧を作り、次の月の写真で試し直してください。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 写っていないだけの設備が「無い」になる | not_seen と out_of_frame を分ける。 撮る場所がそろっていない設備は先に外す |
| 浴槽だけで追い焚きが「見える」になる | 設備ごとに見るものを一覧で渡し、その外の推測を禁じる |
| 同じエアコンが2台に数えられる | 台数を合計させず、写真ごとの有無を返させる |
| 枠が別の場所に描かれる | 画素を回転させてから渡し、座標を元の大きさに戻す |
| リクエストが大きすぎる | 縮小するか、Files API を使う |
| 入居者が残した設備を図面に足す | 貸主の設備かを管理担当に確かめる |
| ガスの種類まで写真で判定させる | 写真で分からない設備は照合から外す |
| 照合の結果で設備欄を自動で直す | 書き込まない。 直すのは担当者 |
| 無料の枠で業務の写真を送る | 有料の枠だけで使う |
| 人や表札が写った写真を送る | 前処理で印を付けて除く |
上の2行が、この構成の失敗のほとんどです。 どちらも「写真に無いものをどう扱うか」から出ています。撮る場所の一覧と見分け方の一覧の2つで、AIに判定させる範囲を写真に写るものだけに絞ります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 空室の室内写真、物件の所在と部屋番号、設備の情報です。空室の写真なので個人の情報は多くありませんが、窓の外の隣家、表札、郵便物、撮影した担当者の映り込みが入ることがあります。
- 有料の枠で使う … Gemini API の規約では、有料のサービスではプロンプトと応答が製品の改善に使われないとされています。業務の写真は有料の枠だけで送ります
- 人や表札が写った写真を渡さない … 前処理で印を付けて除きます。掲載に使わない写真は、AIにも渡しません
- 設備の表示の誤りは広告の問題になる … 不動産の表示に関する公正競争規約は、建物に付属する設備について、実際のものよりも優良であると誤認されるおそれのある表示をしてはならないとし、施行規則では宅地又は建物の写真は取引するものを表示することとしています。この構成は食い違いを拾うだけで、表示のルールに合うかの判断は、担当者と社内の広告の責任者が行います
- 設備欄を自動で直さない …
not_seenを自動で反映すると、あるはずの設備を消すことになります。誤って消した設備も、誤って足した設備も、どちらも表示の誤りです - 入居者の持ち物を貸主の設備として載せない … 写真に写っていても、貸主の設備かは管理の記録で決まります
- 写真の保存期間を決める … 募集が終わった写真と照合の記録を、いつまで残すかを決めます
誤りが起きた場合のリスクは、無い設備を載せることと、ある設備を消すことの2つです。 前者は visible の推測で起き、後者は not_seen と out_of_frame の取り違えで起きます。どちらも見分け方の一覧と、撮る場所の一覧で止めます。
10まず何から始めるか
1週目:撮る場所の一覧と見分け方の一覧を作る
浴室の天井、浴室の外の操作パネル、洗面所、トイレ、キッチン、各部屋のエアコン、インターホンを必ず撮る場所として一覧にします。あわせて、設備ごとに何を見れば分かるかの一覧を作ります。
2週目:20部屋で試す
先月掲載した20部屋の写真で、設備ごとの状態を返させます。not_seen と out_of_frame を取り違えていないか、浴槽だけで追い焚きを「見える」にしていないかを最優先で見ます。
3週目:撮り方をそろえる
試しで out_of_frame が多かった場所を、撮る場所の一覧に足します。担当者全員が同じ一覧で撮るようにします。
4週目:Python で照合の一覧を作る
「掲載準備」の物件の設備欄と写真を読み、Gemini API を呼んで照合の一覧を作るところまで作ります。この時点では、担当者はこれまでどおり全部の写真も見て、一覧と比べます。
2か月目: 食い違いの行だけを見る運用に切り替え、設備ごとの not_seen と out_of_frame の数を毎週数えます。3か月目以降: 1部屋15分が何分になったかを実測し、内見での設備の申し出の数を見ます。撮る場所の一覧が定着し、out_of_frame が少なくなった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
対応する画像の形式(PNG、JPEG、WEBP、HEIC、HEIF)。画像を直接入れる場合にリクエスト全体が20MBまでで、大きいファイルや再利用には Files API が勧められること。1つのリクエストに複数の画像を入れられること。物体の枠を返させられ、座標が画像の大きさに対して 0〜1000 に正規化され、例で [ymin, xmin, ymax, xmax] の順であること。画像のトークンの換算(384ピクセル以下は258トークン、それより大きいものは768×768のタイルごとに258トークン)。例が Interactions で書かれていること | Gemini API: Image understanding | 2026-10-14 |
構造化出力が response_format で mime_type を application/json にし、schema にスキーマを入れる形であること。/v1beta/interactions に送る例。enum・required が使えること。値はアプリ側で検証するよう書かれていること | Gemini API: Structured output | 2026-10-14 |
| 有料のサービスではプロンプトと応答が製品の改善に使われないこと。18歳以上であることが利用の条件であること | Gemini API Additional Terms of Service | 2026-10-14 |
| 建物に付属する設備について、実際のものよりも優良であると誤認されるおそれのある表示をしてはならないこと(規約第23条)。施行規則で、宅地又は建物の写真は取引するものを表示すること | 不動産公正取引協議会連合会: 不動産の表示に関する公正競争規約・同施行規則 | 2026-10-14 |
設備の表示が広告のルールに合うかは、社内の広告の責任者と所属する公正取引協議会の案内で確かめてください。 本記事は公開の資料で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1576)についてのご相談はこちらから。
