現場の定点写真から工事の進捗を読み取って、予定とのずれを早く見つける
現場ごとに決めた位置から同じ画角で撮った写真を、前回の写真と並べてAIに渡します。何がどう変わったかと、工程表のどの作業が写っているかを返し、予定とのずれを月末を待たずに見つけます。
- 利用ツール
- AWS Textract/Azure AI/ChatGPT/Claude/Gemini/Google Apps Script/Google Vertex AI/Make/n8n/Power Automate/Python
- 対象業界
- 不動産/建設/自治体/製造
- 対象部門
- 品質管理/生産
- 対象業務
- 内容確認・チェック/集計・分析
- 主な課題
- データ分析に時間がかかる/人手が足りない/確認ミスが多い
- AIで行う処理
- 画像認識
- 主な効果
- 対応スピード向上/工数削減/機会損失防止
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 現場代理人が、現場ごとに数か所を撮影する(月3回、撮影の位置と画角は現場任せ)
- 撮った写真をスマートフォンから共有フォルダへ入れる。ファイル名は端末が付けた連番のまま
- 工事課の担当者が、現場ごと・撮影箇所ごとに写真を並べ替える
- 前回の撮影日のフォルダをさかのぼり、同じ箇所の写真を探して並べる
- 2枚を見比べ、変わったところを目で探す
- 工程表を開き、その時期に予定されている作業と照らす
- 進捗の所見を書き、遅れていそうな現場をチャットか会議で共有する
- 人現場代理人が、決められた撮影位置から決められた画角で撮る(月3回)
- 人撮影位置IDの付いたフォルダへ写真を入れる
- 自動Power Automate が保存を検知し、形式・サイズ・寸法と撮影日時を確かめる
- 自動Azure AI Vision がタグ、物体、人物、領域の境界ボックスと信頼度を返す
- 自動人物の領域を塗りつぶし、基準写真と比べて画角のずれを判定する
- 自動画角がずれている、暗い、隠れている写真は「比較不能」として先に外す
- 自動前回と今回の写真を並べて生成AIに渡し、違って見える箇所を日本語で書き出させる
- 自動天候・時間帯・仮設物による見え方だけの違いを、別の欄に分けさせる
- 自動作業名の対応表の中から、写っている状態に当たる候補を選ばせる
- 自動工程表を引き、予定されている作業と候補を突き合わせ、一致・不一致・判定不能を機械で決める
- 人現場代理人が差分カードを見て、変化の記述と作業名を確かめる
- 人所長が進捗を判断し、所見を確定する。比較不能のものは撮り直しを依頼する
各工程の詳しい説明を読む
- 現場代理人が、現場ごとに数か所を撮影する(月3回、撮影の位置と画角は現場任せ)
- 撮った写真をスマートフォンから共有フォルダへ入れる。ファイル名は端末が付けた連番のまま
- 工事課の担当者が、現場ごと・撮影箇所ごとに写真を並べ替える
- 前回の撮影日のフォルダをさかのぼり、同じ箇所の写真を探して並べる
- 2枚を見比べ、変わったところを目で探す
- 工程表を開き、その時期に予定されている作業と照らす
- 進捗の所見を書き、遅れていそうな現場をチャットか会議で共有する
(a)遅れが分かるのが月末になる。 3番から6番までは、手が空いたときにまとめて行われます。60件を4名でさばくため、撮影から確認までが2週間空くことも珍しくありません。 月末の進捗会議で初めて「この現場は遅れている」と分かり、そこから手配を動かすと、取り返せる日数が減ります。
(b)前回の写真を探すのに時間がかかる。 ファイル名が連番のままなので、どれが同じ箇所を撮ったものかは、開いてみないと分かりません。
(c)画角が毎回違って、比べられない写真がある。 立つ位置が数メートルずれると、写っている範囲が変わります。変わったのが工事の進捗なのか、立ち位置なのかが区別できません。
(d)見え方の違いを、進捗の変化と読んでしまう。 晴れた昼と曇った夕方では、同じ現場が違う色に見えます。養生シートが張られただけで、躯体が進んだように見えることもあります。 慣れた所長は割り引いて見ますが、担当者によって差が出ます。
(e)工程表との突き合わせが頭の中で行われている。 「配筋が終わって型枠に入ったところ」という読み取りは、経験のある人にしかできません。対応表が無いので、新しい担当者は同じ判断ができません。
- 【人】 現場代理人が、決められた撮影位置から決められた画角で撮る(月3回)
- 【人】 撮影位置IDの付いたフォルダへ写真を入れる
- 【自動】 Power Automate が保存を検知し、形式・サイズ・寸法と撮影日時を確かめる
- 【自動】 Azure AI Vision がタグ、物体、人物、領域の境界ボックスと信頼度を返す
- 【自動】 人物の領域を塗りつぶし、基準写真と比べて画角のずれを判定する
- 【自動】 画角がずれている、暗い、隠れている写真は「比較不能」として先に外す
- 【自動】 前回と今回の写真を並べて生成AIに渡し、違って見える箇所を日本語で書き出させる
- 【自動】 天候・時間帯・仮設物による見え方だけの違いを、別の欄に分けさせる
- 【自動】 作業名の対応表の中から、写っている状態に当たる候補を選ばせる
- 【自動】 工程表を引き、予定されている作業と候補を突き合わせ、一致・不一致・判定不能を機械で決める
- 【人】 現場代理人が差分カードを見て、変化の記述と作業名を確かめる
- 【人】 所長が進捗を判断し、所見を確定する。比較不能のものは撮り直しを依頼する
10番目を機械の規則で決めているのが、この設計の要です。 作業名の候補を出すところまではAIに任せますが、それが予定と合っているかどうかは工程表を引いた計算で決めます。 工程表の日付はAIに解釈させる対象ではありません。
11番目と12番目を分けているのにも理由があります。 現場代理人はその現場を見ている人で、記述が実際と合っているかを確かめられます。 所長は複数の現場を横に見て判断と手配を決めます。同じ人が両方をやると、確かめる作業が省かれます。
6番目で先に外すのが、精度を保つ仕掛けです。 比べられない写真を無理に比べさせると、見え方の違いが変化として出ます。
02今回想定するシステム構成
現場(20か所)の定点写真 │ 決まった撮影位置・決まった画角。月3回 ▼【トリガー】撮影位置IDの付いたフォルダへの保存 Power Automate ── 形式・サイズ・寸法・撮影日時の確認 ▼ Azure AI Vision(Image Analysis 4.0 の Analyze Image) │ Tags / Objects / People / Dense Captions │ … 名前、境界ボックス、信頼度 ▼ Python ├──▶ 人物領域の塗りつぶし ├──▶ 基準写真との画角ずれの判定(比較不能を先に外す) └──▶ 前回写真の領域との対応付け ▼ Claude API ── 2枚を並べて渡し、違って見える箇所を日本語で書き出す │ 作業名の対応表の中から候補を選ぶ ▼ Python ── 工程表(作業名・予定期間)と突き合わせ、一致/不一致/判定不能を決める ▼ 差分カード(変化の記述/作業名の候補/予定との照合/比較不能の理由) ▼ 【人】現場代理人が確かめる ──▶ 所長が進捗を判断する
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 処理エンジン | Azure AI Vision | Google Vertex AI、AWS Textract |
| 生成AI | Claude API | OpenAI API、Gemini API |
| 差異計算 | Python | Google Apps Script |
| 連携 | Power Automate | Make、n8n |
工程表と共有フォルダは、新しく足すものではありません。 工程表はCSVで書き出して読むだけで、写真の保存場所も今のままです。フォルダの名前に撮影位置IDを入れるのが最初の準備作業になります。
処理エンジンと生成AIを分けているのには、仕様上の理由があります。 Azure AI Vision の Image Analysis 4.0 で説明文を作る Caption と Dense Captions は、英語のみで提供されており、しかも特定のAzureリージョンでしか使えません。 そのため「日本語の所見をAzure側に書かせる」構成は取れません。Azure AI Vision には領域の切り出しを任せ、日本語の文は生成AIに作らせます。
Azure側から受け取るのは、座標と信頼度と名前です。 Dense Captions は最大10か所の領域の境界ボックスと信頼度を返し、物体検出は物ごとに boundingBox と confidence を返します。タグ付けは数千個の認識可能なオブジェクト、生物、風景、動作を対象に名前と信頼度を返します。差異計算にPythonを置いているのは、工程表との突き合わせを機械の規則で行うためです。
03どうやって実装するのか
処理の起点を決める
撮影位置IDの付いたフォルダに、その現場の写真がすべてそろったことを起点にします。 1枚ごとに動かすと差分カードがばらばらの時刻に出るため、現場単位でまとめ、撮影日の翌朝に1回動かします。月末の一括処理にはしません。 まとめて回すと、この構成の目的である「早く気づく」が消えます。処理が終わった写真は処理済みフォルダへ移し、移すのは成功時だけにします。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 今回の写真 | 撮影位置IDごとの画像。撮影日時 | 撮影フォルダ |
| 前回の写真 | 同じ撮影位置IDの直近の処理済み画像 | 処理済みフォルダ |
| 基準写真 | その撮影位置で最初に撮った、画角の見本の1枚 | 撮影位置の台帳 |
| 撮影位置の定義 | 撮影位置ID、現場、目印、向き、画面に入れるもの | 撮影位置の台帳 |
| 工程表 | 現場、作業名、予定開始日、予定終了日 | CSVで書き出す |
| 作業名の対応表 | 工程表の作業名と、写真から読める状態の対応 | 自社で作る一覧 |
| 撮影の条件 | 天候、撮影時刻、仮設物の有無 | 撮影時に現場代理人が選ぶ |
質を決めるのは、作業名の対応表です。 これが無ければ、生成AIは工程表に無い「それらしい名前」を書きます。次の形で、工期に出てくる作業をすべて並べます。
| 工程表の作業名 | 写真から読める状態 |
|---|---|
| 基礎配筋 | 掘削面に鉄筋が格子状に組まれ、型枠はまだ立っていない |
| 基礎型枠 | 鉄筋の外側に板が立ち、締め付けの金物が並んでいる |
| 躯体(各階) | 柱と梁の形が立ち上がり、支保工が入っている |
| 内装下地 | 間仕切りの軽量鉄骨が立ち、ボードが張られ始めている |
| 天井内の設備配管 | 天井内に配管とダクトが通り、吊りボルトが並んでいる |
基準写真は、撮影位置ごとに1枚ずつ持ちます。 画角がずれたかどうかは、前回の写真とではなく基準写真と比べて判定します。前回と比べると、少しずつずれていったときに気づけません。
データの取得方法を決める
写真の対応付けは、フォルダ名で行います。 画像の中身から「同じ場所か」を当てさせません。現場コード / 撮影位置ID / 撮影日 の3階層にしておけば、前回の写真は同じ撮影位置IDの1つ前として決まります。 Azure AI Vision の呼び出しは、Analyze Image の features クエリパラメーターに欲しい機能を並べるだけです。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| タグの名前と信頼度 | tagsResult | 屋外・屋内、足場といった場面の手がかり |
| 物体の名前と境界ボックス | objectsResult | 前回との対応付けの土台になる座標 |
| 人物の境界ボックスと信頼度 | peopleResult | 生成AIへ渡す前に塗りつぶす領域 |
| 領域の境界ボックスと信頼度 | denseCaptionsResult | どこに注目すべきかの当たり(最大10か所) |
タグには、境界ボックスで位置を特定できない語も含まれます。 公式には、タグ機能には屋内などの文脈上の用語も含まれるとされ、タグ付けの分類と物体検出の分類との間に正式な関係は存在しないとも書かれています。両方に同じ名前が出る前提で組まないでください。
AIへ渡す前に整形する
- 形式とサイズの確認 … 入力は JPEG、PNG、GIF、BMP、WEBP、ICO、TIFF、MPO のいずれかで、20メガバイト未満である必要があります
- 寸法の確認 … 50×50ピクセルより大きく、16,000×16,000ピクセル未満である必要があります
- 画角ずれの判定 … 基準写真と今回の写真で、動かない構造物(柱、擁壁、電柱、既存建物)の境界ボックスの位置を比べます。ずれが決めた割合を超えたら「比較不能」にして先へ進めません
- 人物領域の塗りつぶし …
peopleResultが返した境界ボックスを塗ります。信頼度の低いものも含めて広めに塗ります - 明るさの記録 … 補正はしません。撮影時刻と天候を条件として持ち回り、判定の側で扱います
- 生成AIへ渡すサイズへの縮小 … 長辺を2,000ピクセル以下に落とします。生成AI側は画像を28×28ピクセルの区画に分けて数えるため、大きいまま渡すと費用と待ち時間が増えます
- 前回写真の特定 … 同じ撮影位置IDの直近の処理済み画像を選びます。無ければ初回として扱います
3番目を省かないでください。 画角がずれた写真を渡すと、生成AIは律儀に「違い」を書きます。それは工事の進捗ではなく、立ち位置の違いです。 判定させずに撮り直しへ回すほうが速く終わります。5番目で補正をしないのも同じで、明るさをそろえると、元の写真で暗くて見えていなかった部分が「見えるようになった」ように出ます。
AIに処理させる
させるのは、2枚の写真を見て「違って見える箇所」を日本語で書くことと、対応表の中から作業名の候補を選ぶことだけです。
| 見るもの | させること | 判断できないときの扱い |
|---|---|---|
| 前回と今回の同じ領域 | 違って見える箇所を場所と状態で書く | 暗い・隠れていれば unjudgeable |
| 見え方だけの違い | 天候・時間帯・仮設物による違いを別の欄へ分ける | 迷うものは見え方の側へ |
| 写っている状態 | 対応表の作業名から候補を選び、根拠を書く | 対応表に無ければ候補を空に |
| 人物 | 何も書かない(塗りつぶし済み) | 塗り残しがあれば unjudgeable |
| させないこと | 理由 |
|---|---|
| 出来高の率や金額 | 判断は現場代理人と所長が行う。数値は査定に直結する |
| 遅れの理由の推測 | 写真に写っていない。現場に聞く話 |
| 対応表に無い作業名 | 工程表と突き合わせられない語が出る |
| 面積・本数・長さの数値化 | 画像からの座標や個数は概算になる |
| 工程表の日付の読み替え | 予定との照合は計算で行う |
「見え方だけの違い」を別の欄にすることが、この構成の肝です。 曇りの日の写真は全体が暗く、養生シートが張られた翌日は外観がまるごと変わります。同じ欄に入れると、変化の一覧が見え方の話で埋まります。 迷ったら見え方の側へ寄せるのも意図した偏りで、変化として出たものは人が確かめるため、見落としは次回の撮影で拾えます。
指示内容を固定する
あなたは建設現場の工事管理を担当する立場です。
同じ場所・同じ画角で撮った2枚の写真を見比べて、違って見える箇所を書き出してください。
Image 1: 前回の写真(撮影日 {prev_date}、天候 {prev_weather}、時刻帯 {prev_time})
Image 2: 今回の写真(撮影日 {curr_date}、天候 {curr_weather}、時刻帯 {curr_time})
【書き出すもの】
1. changes … 工事が進んだ結果として違って見える箇所
2. appearance_only … 見え方だけが違う箇所
3. task_candidates … 下の対応表の作業名のうち、今回の写真の状態に当たるもの
【対応表】{task_mapping}
【厳守事項】
- 出来高の率、進み具合の割合、金額を書かないでください。
「およそ6割」「半分ほど終わっている」も書かないでください。
- 遅れている理由、早く進んだ理由を書かないでください。
書くのは「前回と違って見える」という事実までです。
- 天候、時間帯、明るさ、影の向き、養生シート、仮囲い、仮設足場、仮設の照明、
資材の仮置きによる見え方の違いは、changes ではなく appearance_only に
入れてください。判断に迷うものも appearance_only に入れてください。
- task_candidates は、対応表に書かれた作業名の中からだけ選んでください。
当てはまるものが無ければ空の配列にし、新しい作業名を作らないでください。
- 面積、本数、長さ、高さを数値で書かないでください。
「鉄筋が格子状に組まれている」のように、状態の言葉で書いてください。
- 写真が暗い、雨で濡れている、対象が隠れている、画角が合っていないと
判断した場合は、比較をせずに unjudgeable を true にし、
unjudgeable_reason に理由を選んでください。
- 人物について何も書かないでください。人数も、作業の様子も書かないでください。
- description には、位置(左寄り、奥、上部など)と状態を書いてください。
「出来高の率を書かない」を1行で済ませないでください。 割合を禁じるだけだと「おおむね半分」と書きます。言い換えの形まで禁じて、はじめて止まります。 対応表を埋め込むのも同じで、「たぶん躯体工事」では工程表と突き合わせられません。
出力形式を固定する
次の形のJSONで受け取ります。 構造化出力を使い、output_config.format に json_schema として渡します。
{
"site_id": "",
"viewpoint_id": "",
"captured_at": "",
"comparable": true,
"unjudgeable": false,
"unjudgeable_reason": "none",
"changes": [
{ "area": "", "description": "", "region_confidence": 0 }
],
"appearance_only": [
{ "area": "", "description": "" }
],
"task_candidates": [
{ "task_name": "", "basis": "" }
],
"note_draft": ""
}
unjudgeable_reason は none / dark / rain / occluded / angle_shift / people_left から選ばせます。理由の欄はここだけで、遅れの理由を書く欄はどこにもありません。
構造化出力を使う理由は、後段が計算だからです。 工程表との突き合わせも差分カードの組み立ても、値が入っている前提で動きます。スキーマに沿った出力が保証され、スキーマ違反による再試行が要らなくなるとされています。
ただし、スキーマに書けることには制限があります。 enum は文字列・数値・真偽値・null に限られ、minimum や maximum といった数値の制約、minLength などの文字列の制約、pattern は使えません。 オブジェクトには additionalProperties を false で指定します。「率を書かせない」はスキーマでは縛れないので、欄を作らないことと指示文の両方で止めます。 なお、スキーマを最初に使うときは文法の組み立てで遅くなり、その文法は24時間キャッシュされるとされています。
埋める主体は4つに分かれます。 changes・appearance_only・task_candidates は生成AI、comparable と region_confidence は前処理とAzure側の返り値、予定との一致・不一致はPythonの計算、進捗の判断と所見は人です。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 撮影フォルダ | Power Automate のトリガー | 現場ごとの保存を検知する |
| Azure AI Vision | API呼び出し | タグ、物体、人物、領域の境界ボックスと信頼度 |
| Python | 実行環境から呼ぶ | マスク、画角ずれの判定、工程表との突合 |
| Claude API | API呼び出し | 2枚を並べて渡し、違いと作業名の候補を返す |
| 工程表 | CSVの読み取り | 作業名と予定期間を引く |
| 進捗確認の一覧 | 書き込み | 差分カードを現場ごとに並べる |
工程表には書き込みません。 予定を動かすのは工程を組み直す作業で、この構成の仕事ではありません。書き込みを足すと、判定の誤りがそのまま工程表に残ります。 発注者へ提出する書類の経路にもつなぎません。
人が確認する
差分カードは、現場代理人と所長の2段で見ます。
- 現場代理人が、変化の記述と作業名の候補を確かめる … その現場を見ている人なので、記述が実際と合っているかがすぐ分かります
- 比較不能のものを撮り直す … 理由が
angle_shiftなら、撮影位置の目印から見直します - 所長が進捗を判断する … 実際に遅れているのか、写っていないだけなのかを決めます
- 所見を確定する …
note_draftを直して確定します。出来高の入力は従来どおり人が行います
1番目を所長が兼ねないでください。 20現場を横に見る人が1枚ずつ記述を確かめると、第10章の14分には収まりません。「変化と出たが実際は変わっていなかった」が特定の撮影位置に偏るなら、画角か対応表に原因があります。
例外に対処する
| 起きること | 対応 |
|---|---|
| 画角がずれている | 基準写真との比較で先に外す。angle_shift として撮り直しを依頼 |
| 雨天・夜間で暗い | dark / rain として人へ回す。判定させない |
| 仮囲い・養生シートで隠れた | occluded として人へ。続くなら撮影位置を増やす |
| 人物の塗り残しがある | people_left として止める。信頼度の低い検出も塗る |
| 小さい対象が検出されない | 5%未満の物体は通常検出されない。 寄りの撮影位置を設ける |
| 近接して置かれた物が検出されない | 積み重ねた物は1つに見える。数を数えさせない |
| 前回の写真が無い(初回) | 比較せず、作業名の候補だけを出す |
| 基準写真が無い | 今回の1枚を基準写真として登録し、次回から比較する |
| 撮影位置IDが付いていない | 処理せず差し戻す。中身から場所を当てさせない |
| 寸法・サイズが範囲外 | 20メガバイト未満、50×50から16,000×16,000に収める |
| 4.0のキャプションが使えないリージョン | タグ、物体検出、人物検出だけで組む(第12章) |
| Azure側または生成AI側が応答しない | 撮影フォルダに残す。移すのは成功時だけ |
上から4行までで、比較不能の大半を占めます。 どれもAIの精度ではなく、撮り方と現場の状況の問題です。
記録を残す
- 元の写真と、撮影日時・天候・時刻帯・撮影位置ID
- 人物を塗りつぶした後の画像(生成AIへ実際に渡したもの)
- Azure AI Vision が返したJSONの全文(
tagsResult、objectsResult、peopleResult、denseCaptionsResult) - 生成AIが返したJSONと、そのとき参照した工程表の版と対応表の版
- 予定との照合の結果(一致/不一致/判定不能)と、人が判定を覆した記録
- 撮影位置ごとの比較不能率と、その理由の内訳
工程表の版を残すのが、後から効いてきます。 工程表は組み替えられるため、当時どの予定と突き合わせたのかが残っていないと、過去の「予定と違う」の意味が分からなくなります。 比較不能率は、撮影の標準化が進んだかどうかの物差しです。
04実装レベルの3段階
最小構成では件数がさばけません。 60件分を手で貼るのは現実的ではなく、確かめるための段階です。 半自動化で、1件40分が25分程度になります。 写真の整理と見比べが自動になる代わりに、差分カードの確認が加わります。本格構成で14分になり、この段階が本記事の想定です。 差が大きいのは、工程表との突合と画角ずれの判定が自動になるからです。 半自動化を1か月は回してください。 比較不能が集中する撮影位置と、対応表に足りない作業名が先に分かります。そこを直してから工程表とつなぐほうが、空振りが減ります。
05工数削減シミュレーション
導入後 60件 × 14分 ÷ 60 = 14 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 同時に10か所以上の現場が動いており、本社や営業所から所長が複数の現場を見ている建設業・設備工事業。現場ごとに決まった場所から写真を撮る運用がすでにあるか、これから決められる場合。工程表が作業名と予定期間の形で電子データになっており、CSVで書き出せる場合。遅れの発覚が月末の進捗会議になっており、そこから手を打つのでは遅いと感じている場合。
- 現場が1か所か2か所で、所長が毎日その場にいる場合。写真の撮影位置も画角も決まっておらず、当面は撮影の標準化そのものに手が回らない場合。躯体が仮囲いや養生シートで覆われている期間が工期の大半を占め、外から進捗が見えない工事。なお、出来高査定や発注者へ提出する出来形管理の書類を作る用途には使えません。この構成が出すのは社内で進捗を早く知るための材料までです。
07最小構成で試す方法
- 1つの現場から、撮影位置を3か所選ぶ(見た目が変わる場所を選ぶ)
- その3か所について、先月と今月の写真を2枚ずつ用意する(計6枚)
- 工程表からその期間の作業名を書き出し、写真から読める状態との対応表を手で作る
- 手元のAIサービスに2枚を並べて貼り、「同じ場所を同じ画角で撮った2枚です。違って見える箇所を書いてください。天候や時間帯による見え方の違いは別に分けてください。下の対応表にある作業名のうち、今回の写真の状態に当たるものを選んでください。割合や金額、遅れの理由は書かないでください」と指示する
- 出てきた内容を、当時の所長の所見と突き合わせる
3番目の対応表を先に作ってください。 ここを飛ばすと、当たっているように見えるのに工程表と突き合わせられない、という結果になります。
| 出てきた内容 | 判断 |
|---|---|
| 当時の所見と同じ箇所が挙がった | Azure側の呼び出しと自動化に進む |
| 割合や理由を書いた | 指示の書き方で直る。構成は有効 |
| 見え方の違いを変化として挙げた | 見え方の欄を足して再試行 |
| 画角が合わず比べられない写真があった | 撮影の標準化が先。 AIの問題ではない |
最後の行が出る現場が、いちばん多いはずです。 失敗ではなく、写真を見比べるのに時間がかかっていた理由が1つ分かったということです。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 画角がずれて比較にならない | 基準写真と比べて先に外す。撮影の標準化が本体の対策(下記) |
| 天候・時間帯の差を変化として拾う | 撮影条件を渡し、見え方だけの欄に分けさせる |
| 養生シート・仮囲いで隠れる | 撮影位置を複数持つ。 隠れたら比較不能で人へ |
| 4.0のキャプションが使えないリージョン | 画像キャプションは特定のリージョン限定で、東日本は非対応。 タグ・物体検出・人物検出だけで組むか、リージョンを選ぶ |
| 説明文が英語で返ってくる | 画像キャプションは英語のみ。 日本語の文は生成AIに作らせる |
| 画像分析4.0の廃止予定 | 4.0は非推奨とされ2028年9月25日に廃止予定と案内されている。処理エンジンを差し替えられる形で組む |
| 小さい対象が検出されない | 5%未満の物体は通常検出されない。 寄りの撮影位置を設ける |
| 近接して置かれた物が検出されない | 積み上げた資材は1つに見える。本数を数えさせない |
| 作業名の対応表が無いまま始める | 突き合わせられない語で候補が出る。先に作る |
| 出来高の率を書いてしまう | 割合の欄を作らない。言い換えの形まで指示で禁じる |
| 遅れの理由が書かれる | 理由の欄は比較不能の理由だけにする。欄が無ければ書けない |
| 作業員が写り込む | 人物検出の境界ボックスで塗ってから渡す |
この構成の成否は、撮影の標準化で決まります。同じ画角で撮れていない写真は、何を足しても比べられません。 次の3つを最初の1か月で作ってください。
- 撮影位置の目印 … 立つ位置に杭・ペイント・既設のマンホールなどの目印を決め、台帳に写真付きで残します。「北東の角から」では毎回ずれます
- スマートフォンのガイド枠 … 基準写真を薄く重ねて表示できるアプリを使うか、基準写真を端末に保存して直前に見てから撮る運用にします。水平の目安として、画面のグリッド表示を常にオンにします
- 撮影のチェックリスト … 撮影位置ID、目印、向き、画面に入れる構造物、天候と時刻帯の記録、全撮影位置を撮ったかの確認。撮影の直前に見る1枚に収めます
撮影は、できるだけ同じ時刻帯にそろえます。 難しい日は、時刻帯を記録して渡すだけでも判定は安定します。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 現場の写真そのもの(作業員、協力会社名の入った看板や車両、発注者名の書かれた仮囲い、通行人)と、工程表の作業名・予定期間です。
- 人物が写った写真は、塗りつぶしてから外へ出す … 人物検出は各人物の境界ボックスの座標を信頼度スコアと共に返します。 その領域を塗ってから生成AIへ渡し、信頼度の低い検出も塗る側に倒します。塗り残しが疑われる写真は比較不能として人へ回します
- 人物検出が何をしないかも確かめておく … 公式には、人物検出はある顔を別の顔と区別したり、顔の属性を予測または分類したり、顔テンプレートを作成したりすることはないとされています
- 生成AI側でも人物の名指しは行われない … 公式には、画像に写った人物の名前を挙げる用途には使えず、そうした指示は拒否されるとされています。それでも塗りつぶしは省きません
- 写真の外部送信の範囲を決めておく … 生成AI側では、画像は処理後に自動的に削除され、モデルの学習には使用されないとされています。それでも、どの現場の写真を外へ出すかは発注者との契約条件を確認してください
- 発注者へ提出する書類には使わない … 出来形管理や工事写真の提出は別の基準で行われます。この構成が出すのは社内の進捗把握の材料までです
- 出来高と金額をAIに決めさせない … 出来高は請負金額の支払に直結します。AIが出した数値がそのまま残る経路を作りません
- 遅れの理由を書かせない … 理由の推測は、協力会社や担当者の評価に直結します
- 近隣の写り込みの扱いを決める … 外せない場合は塗りつぶす対象に加えます
誤りのリスクは、進んでいないものを進んでいると読むことと、見え方の違いを遅れと読むことの2つです。 前者は比較不能の写真を無理に判定させると起き、後者は見え方の欄を分けないと起きます。
10まず何から始めるか
1週目:撮影位置を決めて、台帳を作る
現場を1つ選び、撮影位置を3か所から5か所決めます。立つ位置に目印を付け、そこから撮った1枚を基準写真として台帳に残します。
2週目:作業名の対応表を作る
工程表の作業名を書き出し、写真から読める状態を1行ずつ書きます(第7章の表の形)。所長の頭の中にあるものを紙に出す作業で、AIの有無にかかわらず価値があります。
3週目:6枚で試す
先月と今月の写真を撮影位置ごとに2枚ずつ用意し、手元のAIサービスで見比べさせます。当時の所見と突き合わせ、割合や理由を書いていないかを最優先で見ます。
4週目:Azure側の呼び出しとマスクをつなぐ
タグ、物体、人物、領域の境界ボックスを取り、人物を塗りつぶすところまでを自動にします。 この時点では工程表とつなぎません。
2か月目: 画角ずれの判定を足し、比較不能を先に外します。撮影位置ごとの比較不能率を毎週数え、目印とチェックリストを直します。 3か月目以降: 工程表とつなぎ、予定との一致・不一致を出します。遅れが分かるまでの日数を実測し、月末の進捗会議より早く分かるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 最大10か所の領域と境界ボックス・信頼度。キャプションが英語のみで特定リージョン限定 | キャプション | 2026-09-25 |
| 4.0が非推奨で2028年9月25日に廃止予定。入力形式・20MB未満・50×50から16,000×16,000の要件。東日本が4.0のキャプションに非対応 | 画像分析 | 2026-09-25 |
boundingBox と confidence。5%未満と近接した物体は通常検出されない。タグと物体検出の分類に正式な関係が無い | 物体検出 | 2026-09-25 |
| 境界ボックスと信頼度。顔を区別せず属性を予測・分類せず顔テンプレートを作らない | 人の検出 | 2026-09-25 |
複数画像と Image 1: のラベル。視覚トークンは28×28ピクセルの区画。人物の名指し不可、座標や個数は概算。画像は処理後に自動削除され学習に使われない | Vision | 2026-09-25 |
output_config.format にスキーマを渡す形。数値・文字列の制約と pattern は不可、additionalProperties は false。最初の1回が遅く24時間キャッシュ | 構造化出力 | 2026-09-25 |
進捗の判断と出来高の確定は、現場代理人と工事所長が行ってください。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0243)についてのご相談はこちらから。
