工務店が現場に届いた建材と納品書の写真を Gemini で見て、品番・数量の表示と破損の候補を読み、発注と照らした検収の記録を作る
現場に建材が届いたときに大工や監督が撮った荷姿・ラベル・納品書の写真を Gemini API で見て、品番・入数・表示と、見えている梱包の数、破損の候補を返させます。発注の明細と突き合わせ、検収の記録と建材店への連絡の下書きを作ります。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Google Apps Script/Python
- 対象業界
- 不動産/建設
- 対象部門
- 購買
- 対象業務
- 内容確認・チェック/比較検討
- 主な課題
- 入力作業が多い/期限・対応漏れが起きる/確認ミスが多い
- AIで行う処理
- 画像認識
- 主な効果
- 入力漏れ削減/対応スピード向上/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 購買の担当がチャットを開き、現場ごとに届いた写真を探す
- その現場の発注の明細を開き、どの発注の納品かを見当をつける
- 写真を拡大して、ラベルの品番・入数と、納品書の品番・数を読み、明細と見比べる
- 束や箱の数を写真で数え、納品書の数と合っているかを見る
- 角の欠け、割れ、濡れ、梱包の破れが無いかを見る
- 違いや破損があれば、建材店に電話かメールで連絡し、現場の監督にも知らせる
- 検収の記録の表に、納品の日、品目、数、違いの有無を打ち込む
- 人受け取った大工や職人が、決まった順で荷姿・ラベル・納品書を撮り、チャットの現場の部屋に送って「納品終わり」を押す
- 自動サーバーが写真を受け取り、現場の番号から発注の明細のうち、その日に届く予定の行を引く
- 自動Gemini API が、写真ごとにラベルと納品書の文字、梱包の数、破損の候補を返す
- 自動サーバーが品番を発注の明細と文字列で突き合わせ、数を「入数×束の数」で出して比べる
- 自動写真の足りない品目があれば、現場の部屋に撮り直しを頼む
- 自動品番の違い・数の違い・破損の候補があれば、購買の担当と監督にすぐ知らせる
- 人購買の担当が候補を写真で確かめ、建材店への連絡の下書きを直して送る
- 自動担当が確かめた結果で検収の記録ができ、納品書の写真が添えられる
- 人月末に、検収の記録と建材店からの請求を突き合わせる
各工程の詳しい説明を読む
- 購買の担当がチャットを開き、現場ごとに届いた写真を探す
- その現場の発注の明細を開き、どの発注の納品かを見当をつける
- 写真を拡大して、ラベルの品番・入数と、納品書の品番・数を読み、明細と見比べる
- 束や箱の数を写真で数え、納品書の数と合っているかを見る
- 角の欠け、割れ、濡れ、梱包の破れが無いかを見る
- 違いや破損があれば、建材店に電話かメールで連絡し、現場の監督にも知らせる
- 検収の記録の表に、納品の日、品目、数、違いの有無を打ち込む
(a)見比べる場所が3つある。 写真のラベル、写真の納品書、発注の明細を行き来し、品番の数字と記号を1文字ずつ見比べます。 フローリングの色違いや、サッシの左右違いは、品番の末尾の1文字だけが違います。
(b)気づくのが施工の直前になる。 写真を見るのが夕方や翌日になり、大工が梱包を開けた施工の当日に、色違いや割れが分かることがあります。 取り寄せ直しの数日が、そのまま工程の遅れになります。
(c)写真がそろっていない。 ラベルが写っていない、納品書が斜めで読めない、荷物の一部しか写っていない。担当が現場に撮り直しを頼むころには、荷物はもう片付けられています。
(d)検収の記録を手で打ち込む。 見比べた結果を、もう一度表に打ち込みます。打ち込みが溜まると、月末の請求との突き合わせで「検収の記録が無い納品」が出てきます。
- 【人】 受け取った大工や職人が、決まった順で荷姿・ラベル・納品書を撮り、チャットの現場の部屋に送って「納品終わり」を押す
- 【自動】 サーバーが写真を受け取り、現場の番号から発注の明細のうち、その日に届く予定の行を引く
- 【自動】 Gemini API が、写真ごとにラベルと納品書の文字、梱包の数、破損の候補を返す
- 【自動】 サーバーが品番を発注の明細と文字列で突き合わせ、数を「入数×束の数」で出して比べる
- 【自動】 写真の足りない品目があれば、現場の部屋に撮り直しを頼む
- 【自動】 品番の違い・数の違い・破損の候補があれば、購買の担当と監督にすぐ知らせる
- 【人】 購買の担当が候補を写真で確かめ、建材店への連絡の下書きを直して送る
- 【自動】 担当が確かめた結果で検収の記録ができ、納品書の写真が添えられる
- 【人】 月末に、検収の記録と建材店からの請求を突き合わせる
5番目で撮り直しをすぐ頼むのが、この構成の分かれ目です。 写真が足りないと分かるのが翌日では、荷物は片付けられ、撮り直しようがありません。 受け取った人がまだ現場にいるうちに頼みます。
4番目を機械の突き合わせにしているのも、意図してのことです。 AIは写真の文字を写すだけにし、発注と合っているかは文字列の一致で決めます。 似た品番を「同じ製品の別の表記」と読む判断を、AIにさせないためです。
02今回想定するシステム構成
現場に届いた建材(大工・職人が受け取る) │ 荷姿・ラベル・納品書を決まった順で撮る ▼【トリガー】チャットの「納品終わり」 Python のサーバー ├── 現場の番号から、その日に届く予定の発注の行を引く ├── 写真の向き・明るさ・ぶれの確認、人の顔の塗りつぶし ▼ Gemini API(画像の理解・構造化出力)── 写真と、届く予定の品目の一覧 │ ラベル・納品書の文字、梱包の数、破損の候補と枠 ▼ Python ── 品番の文字列の突き合わせ、入数×束の数、写真の足りない品目 ▼ 違い・破損・写真の不足 → 購買の担当と監督へすぐ知らせる/現場へ撮り直しの依頼 ▼ 【人】購買の担当が確かめる → 建材店への連絡(下書きを直して送る) ▼ 検収の記録(納品書の写真つき)→ 月末に請求と突き合わせ
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 処理 | Gemini API(ラベル・納品書の文字と梱包の数、破損の候補を返し、建材店への連絡の下書きを作る) | Claude API、OpenAI API |
| 連携 | Python(写真の受け取り、発注の明細の引き当て、前処理、呼び出し、突き合わせ、知らせ、記録の組み立て) | Google Apps Script |
| 発注 | 現場ごとの発注の明細(表計算) | - |
| 連絡 | 現場の写真を送るチャット | - |
新しく足すのは、Python のサーバーと Gemini API の契約です。 発注の明細、検収の記録の表、チャットは今のものを使い、発注の明細に「届く予定の日」の列を足す作業が加わります。
写真を見る土台は、Gemini API の画像の理解です。 公式の案内では、対応する形式は PNG、JPEG、WEBP、HEIC、HEIF で、画像を直接入れる場合は、指示の文などを合わせたリクエスト全体が20MBまでです。1回の納品の写真は十数枚なので、縮めてから1回の呼び出しにまとめます。
位置は枠で返させます。 枠は [ymin, xmin, ymax, xmax] の順で、画像の大きさに対して0〜1000に正規化され、元の大きさに戻して使うよう案内されています。破損の候補と、数えた束の位置に使います。
出力は構造化出力で受けます。 /v1beta/interactions に送り、response_format で mime_type を application/json にし、schema にスキーマを入れます。文字列の enum、配列の minItems・maxItems、数の minimum・maximum が使えます。minLength・maxLength はエラーにならずに外されるので、品番の文字の長さはサーバーで見ます。値が正しいかはアプリ側で検証するよう公式に書かれています。
03どうやって実装するのか
処理の起点を決める
受け取った人が、チャットの現場の部屋で「納品終わり」を押したときに、1回の納品分をまとめて動かします。 写真が1枚届くたびに動かすと、まだ撮っていない品目を「写真が無い」と返し、撮り直しの依頼が無駄に飛びます。 「納品終わり」はチャットの決まった言葉か、写真を送る画面のボタンにします。
届く予定の日の夕方に、写真の届いていない納品を数えます。 発注の明細で今日届く予定の行のうち、写真が来ていないものを購買の担当に知らせます。納品が遅れているのか、写真の送り忘れなのかを、その日のうちに分けられるようにします。
違いや破損の知らせは、検収の記録を待たずにすぐ送ります。 建材店への連絡が早いほど、取り寄せ直しが工程に食い込みません。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 荷姿の写真 | 届いた荷物の全体。束・箱・パレットが分かるもの | チャットの現場の部屋 |
| ラベルの写真 | 束や箱のラベルを近くで撮ったもの(品番、品名、色・柄、寸法、入数、ロット、ホルムアルデヒドの等級などの表示) | 同上 |
| 納品書の写真 | 建材店の納品書。品番・品名・数・単位 | 同上 |
| 届く予定の品目 | 現場の番号、発注の番号、品番、品名、数、単位、入数、届く予定の日、建材店 | 発注の明細 |
| 現場の情報 | 現場の名前、監督、届け先の決まり(置き場所) | 現場の台帳 |
質を決めるのは、発注の明細の「入数」と「単位」です。 発注が「石膏ボード 40枚」で、ラベルが「入数 4枚」なら、束が10あれば合います。明細に入数が無いと、写真の束の数から枚数を出せず、比べる数がそろいません。 単位が「枚」「束」「ケース」「坪」でばらばらな明細は、品目ごとに枚数へ直せる列を足してから使います。
届く予定の品目だけをAIに渡すのも、質を決める部分です。 現場の発注の全部を渡すと、写真のラベルと似た品番の、別の日に届く品目にAIが寄せて答えます。 その日の予定の行に絞れば、写真の品目と予定の行の結び付けが速くなります。
データの取得方法を決める
写真は、チャットの現場の部屋からサーバーが受け取ります。 写真と一緒に、送った人、送った時刻を受け取ります。チャットの製品によって写真の受け取り方が違うので、使っている製品の連携の機能(ボットやWebhookなど)に合わせて個別に作ります。
発注の明細と現場の台帳は、サーバーが表計算から読みます。 現場の番号で明細を引き、届く予定の日が今日と前後1日の行を取り出します。納品の日がずれることがあるので、前後の日も入れます。
Gemini API へは、1回の納品分の写真と届く予定の品目の一覧をまとめて渡します。 写真には番号を振り、どの写真が荷姿・ラベル・納品書かは、AIに分けさせます。 撮る順を決めていても、守られない日があるからです。
有料の利用枠で使い、store を false にします。 Gemini API の規約では、有料のサービスではプロンプトと応答が製品の改善に使われないとされています。Interactions API は既定でやり取りを保存し(有料の枠で55日、無料の枠で1日)、store=false で保存しない動きにできると案内されています。store=false では前のやり取りを引き継げないので、撮り直しの写真が届いたら、最初の写真と合わせて送り直します。
AIへ渡す前に整形する
- 向きの補正 … スマートフォンの写真の向きの情報で回転しているだけのものは、画素を回転させます
- ぶれと暗さの確認 … ラベルや納品書の写真がぶれているもの、夕方の暗い現場で撮ったものは、AIに渡さずに撮り直しの候補にします
- 縮小 … 荷姿の写真は長い辺を1,600ピクセル程度に縮めます。ラベルと納品書の写真は、品番の文字が読める大きさを残します
- 塗りつぶし … 運転手や職人の顔、隣の家や通りの人を塗りつぶします
- 大きさの確認 … 1回分の写真と指示の文が20MBを超えないかを見て、超えるときは品目ごとに分けて呼びます
- 重複の確認 … 同じ写真が二度送られていれば、1枚にします
3番目を軽く見ないでください。 品番の末尾の1文字で色や左右が変わる建材では、縮めすぎた写真は「読めない」と「違う文字」の区別がつきません。 ラベルの写真は縮めないか、ラベルの部分だけを切り出して大きく渡します。
AIに処理させる
させるのは、ラベルと納品書の文字をそのまま写すこと、梱包の数を返すこと、破損の候補を返すことだけです。
| 返すもの | 中身 | 判断できないときの扱い |
|---|---|---|
| 写真の種類 | overview(荷姿)/label(ラベル)/delivery_note(納品書)/other | 分からなければ other |
| ラベルの文字 | 品番、品名、色・柄、寸法、入数、ロット、等級などの表示を、印刷されたとおりに | 読めない文字は ? にし、legible を partly か no にする |
| 納品書の行 | 品番、品名、数、単位 | 手書きの直しがあれば、直しの前と後を両方写す |
| 梱包の数 | 品目ごとの、見えている束・箱の数 | 重なって数えられなければ countable を no |
| 破損の候補 | 写真の番号、枠、種類(角の欠け、割れ、濡れ・しみ、梱包の破れ、曲がり)、見え方の短い説明 | 汚れか傷か分からなければ unclear |
ラベルの文字を「印刷されたとおりに」写させるのが、この構成の要です。 AIは読めなかった文字を、届く予定の品目の品番で埋めたがります。埋めた瞬間、色違いの品番が「発注どおり」に見えます。 読めない文字は ? のまま返させ、? の入った品番はサーバーが突き合わせに使いません。
梱包の数の countable を分けるのは、数の誤りを数字の形で出さないためです。 重なった束を「おそらく10」と返させると、それが検収の記録に「10」と残ります。数えられないなら数えられないと返させ、現場の人に聞きます。
| させないこと | 理由 |
|---|---|
| 発注どおりかの判断 | サーバーが文字列と数で突き合わせる。似た品番を同じと読ませない |
| 検収してよいかの判断 | 購買の担当が決める |
| 建材の性能や内装の制限に合っているかの判断 | 設計の担当が図書で確かめるもの |
| 破損が施工に差し支えるかの判断 | 監督と大工が現物で決める |
| 返品・値引きを求めるかを書くこと | 建材店との取り決めで決まる。購買の担当が決める |
| 受け取った人について書くこと | 写真の撮り方への評価になってしまう |
3行目は、ラベルの等級の表示を読ませることと混ぜないでください。 建築基準法には居室の化学物質の発散に対する衛生上の措置があり、施行令にホルムアルデヒドに関する建築材料の技術的基準があります。この構成が返すのは、ラベルに印刷された等級の表示の文字までです。 その表示が設計の仕様に合っているかは、発注の明細に設計の担当が書いた等級と文字列で比べ、合わなければ設計の担当に回します。
指示内容を固定する
あなたは工務店の購買で、現場に届いた建材の写真を見る手伝いをする係です。
現場は {K-0318 の新築}、今日届く予定の品目は次のとおりです。
{1: 石膏ボード 9.5mm 910×1820(入数4枚), 2: 構造用合板 12mm 910×1820(入数20枚),
3: 住宅用断熱材 グラスウール(入数6枚)}
写真の番号は 1〜12 です。
【やること】
1. 写真ごとに、overview / label / delivery_note / other のどれかを選ぶ。
2. label の写真から、品番、品名、色・柄、寸法、入数、ロット、等級などの表示を、
印刷されたとおりに写す。どの予定の品目のラベルかを番号で示す。
3. delivery_note の写真から、行ごとに品番、品名、数、単位を写す。
4. overview の写真から、予定の品目ごとに見えている束・箱の数を返す。
束の位置を [ymin, xmin, ymax, xmax] の順で、0〜1000 に正規化して返す。
5. 角の欠け、割れ、濡れ・しみ、梱包の破れ、曲がりの候補を探し、写真の番号と枠と
種類を返す。見え方を短く書く。
【厳守事項】
- 読めない文字は ? にしてください。予定の品目の品番で埋めないでください。
- 印刷された文字を、より正しそうな表記に直さないでください。
- 束が重なって数えられないときは countable を no にし、数を書かないでください。
- 予定の品目に無いラベルが写っていたら、予定の品目に当てはめずに other_items に写してください。
- 発注どおりか、検収してよいか、施工に差し支えるかを書かないでください。
- 等級の表示が仕様に合っているかを書かないでください。
- 人について何も書かないでください。
「予定の品目の品番で埋めない」と「より正しそうな表記に直さない」を並べているのは、どちらも同じ失敗を防ぐためです。 何も言わないと、AIは予定の一覧を手がかりにラベルを読み、末尾の1文字が違う色違いの品番を、予定の品番に直して返します。 直された品番は突き合わせを通り、施工の当日まで気づかれません。
「予定に無いラベルを当てはめない」は、届いてはいけない物を拾うための線です。 別の現場の建材が紛れて届くことがあり、当てはめさせると、別の現場の品目が今日の品目として数えられます。
建材店への連絡の下書きは、別の呼び出しで作ります。 購買の担当が確かめた違いと写真の番号だけを渡し、「違いは品番・数・見え方の事実だけを書く」「返品や値引きを求める言葉を書かない」「施工の日は渡した日付を写すだけにする」を入れます。
出力形式を固定する
1回の納品ごとに、次の形の JSON で受け取ります。 type、legible、kind は enum で決まった文字列に絞り、photos は渡した写真の数を minItems・maxItems で求めます。
{
"site": "K-0318",
"photos": [ { "no": 4, "type": "overview | label | delivery_note | other" } ],
"labels": [
{ "photo": 5, "planned_item": 1, "product_code": "GB-R95-91?8", "name": "石膏ボード",
"size": "9.5×910×1820", "pieces_per_pack": "4", "grade_mark": "F☆☆☆☆", "legible": "yes | partly | no" }
],
"note_lines": [ { "photo": 11, "product_code": "", "name": "", "qty": "", "unit": "" } ],
"packs": [ { "planned_item": 1, "visible_packs": 10, "countable": "yes | no" } ],
"damage": [
{ "photo": 4, "box_2d": [520, 140, 610, 300],
"kind": "corner_chip | crack | wet_stain | wrap_torn | bent | unclear",
"note": "手前の束の右下の角が欠けて、白い芯が見える" }
],
"other_items": []
}
1つ目の理由は、product_code を文字列のまま突き合わせに使えることです。 サーバーは、ラベルと納品書と発注の明細の品番を3つ並べ、1文字でも違えば「品番の違い」、? が入れば「読めない」として担当に回します。
| 突き合わせの結果 | 条件 | 行き先 |
|---|---|---|
| 一致 | ラベル・納品書・明細の品番が同じで、入数×束の数が明細の数と同じ | 検収の記録の候補(担当が流し見る) |
| 品番の違い | 3つのどれかが1文字でも違う | 担当と監督へすぐ知らせる |
| 数の違い | 入数×束の数、または納品書の数が明細と違う | 担当へ知らせ、現場に数を聞く |
| 読めない・数えられない | ? がある、legible が no、countable が no | 現場へ撮り直しを頼む |
| 破損の候補 | damage が1件以上 | 担当と監督へすぐ知らせる |
2つ目は、grade_mark を明細の等級と文字列で比べられることです。 合わなければ設計の担当に回し、合っているかの結論はAIにもサーバーにも出させません。
3つ目は、other_items で紛れた荷物が分かることです。 予定に無いラベルが写っていれば、別の現場の建材が届いていないかを、担当が建材店に確かめます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| チャットの現場の部屋 | サーバーが受け取る・投稿する | 写真の受け取り、撮り直しの依頼 |
| 発注の明細・現場の台帳 | 読み取り | 届く予定の品目、入数、単位、等級、監督 |
| Gemini API | API呼び出し(/v1beta/interactions、store=false) | 文字・梱包の数・破損の候補、建材店への連絡の下書き |
| 担当と監督への知らせ | チャットかメール | 品番・数の違い、破損の候補、等級の不一致 |
| 検収の記録の表 | 書き込み | 担当が確かめた後の結果と、納品書の写真 |
発注の明細へは書き込みません。 取り寄せ直しや発注の変更を明細に反映するのは購買の担当です。自動で書き換えると、読み違いが発注そのものを動かします。
建材店への連絡は、下書きまでにします。 担当が写真を確かめ、言葉を直してから送ります。
人が確認する
- 品番の違いと破損の候補を先に見る … 写真を開き、ラベルの文字と破損の見え方を確かめ、監督と施工に使えるかを話します
- 数の違いを確かめる … 現場の人に数を聞き、納品書の数と比べます
- 一致の納品を流し見る … 一覧で品目と数を見て、検収の記録に入れます
- 建材店への連絡を直して送る … 下書きの事実と写真の番号を確かめます
- 月末に請求と突き合わせる … 検収の記録の無い請求の行を探します
3番目の流し見を省かないでください。 一致と出た納品でも、ラベルが別の束のものを撮っていたことがあります。荷姿の写真とラベルの写真が同じ束を写しているかを、一覧の縮小写真で見ます。
目標は、360件をならして1件3分です。 一致の納品は1分ほどで済み、違いや破損のある納品は、建材店への連絡まで含めて10分近くかかります。
例外に対処する
| 起きること | 対応 |
|---|---|
| ラベルや納品書の写真が無い・読めない | 受け取った人がまだ現場にいるうちに撮り直しを頼む |
| 束が重なって数えられない | 現場の人に数を聞く。答えを検収の記録に「現場の申告」として残す |
| 予定の日に写真が届かない | 夕方に担当へ知らせ、建材店に納品の状況を確かめる |
| 予定に無いラベルが写っている | 担当が建材店に、別の現場の荷物の紛れを確かめる |
| 納品書に手書きの直しがある | 直しの前と後を両方残し、担当が建材店に確かめる |
| 指示に反して品番を予定に寄せた・「検収可」と書いた | その出力を保存せずに捨て、呼び直す |
JSON の値が enum に無い | その納品は担当が写真を見る |
| API が応答しない | 写真を残したまま時間をおいて呼び直す |
上から2行目までが大半を占めます。 どれもAIの精度の問題ではなく、撮り方と積み方の問題です。 6行目は、ラベルの品番が予定の品番と完全に一致しているのに、legible が partly になっているものをサーバーが疑わしいとして担当に回します。
記録を残す
- 1回の納品分の元の写真と、塗りつぶして AI に渡した写真
- 渡した届く予定の品目の一覧と、Gemini API が返した JSON
- 突き合わせの結果と、担当が確かめた後の結論(一致・違い・破損と、その対応)
- 現場の人に聞いた数と、撮り直しの依頼と応答
- 建材店への連絡と返事、取り寄せ直しの日
3つ目が、撮り方の決まりと発注の明細を直す材料になります。 同じ品目で countable が no になり続けるなら、その建材の積み方では束が数えられません。建材店ごとの違いの件数も出せますが、建材店との話し合いに使うかは、担当が決めます。
04実装レベルの3段階
最小構成では件数がさばけません。 1日に十数件の納品を手で貼るのは続きません。確かめるための段階です。 半自動化で、1件10分が6分程度になります。 見比べは減りますが、写真の足りない納品に気づくのが翌日になり、撮り直しを頼めないまま現場に電話で聞く作業が残ります。 本格構成で3分になり、この段階が本記事の想定です。 段階を飛ばさないでください。 半自動化の1か月で、どの建材で品番が読めないか、どの建材店の納品書で行が読み違えられるかが分かります。
05工数削減シミュレーション
導入後 360件 × 3分 ÷ 60 = 18 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 同時に20〜30の現場を動かし、建材店やメーカーから現場へ直接届く建材を、届いたときに大工や監督が撮った写真で購買の担当が検収している工務店。発注の明細を表や発注のシステムで持ち、写真と納品書を見比べて検収の記録を手で作っている場合。品番の違いや破損に気づくのが施工の直前になり、取り寄せ直しで工程が遅れたことがある場合。
- 建材をいったん自社の倉庫に入れ、倉庫の担当が手に取って検収している場合。現場が少なく、監督が全部の納品に立ち会えている場合。建材の性能が仕様に合っているか、内装の制限に合っているかの判断を写真で済ませたい場合(その判断は設計の担当が図書で行うもので、この構成の範囲ではありません)。なお、検収してよいか、返品や値引きを求めるかの判断は、この構成では代替できません。
07最小構成で試す方法
- 先月の納品から30件を選ぶ(うち数件は、色違いや割れが施工の当日に分かった納品を入れる)
- その30件について、当時の検収の記録と、後で分かった違いを書き出す
- 写真と、その日に届く予定だった品目の一覧を、手元の Gemini の画面に貼り付ける
- 「ラベルと納品書の品番・入数を印刷されたとおりに写してください。読めない文字は ? にしてください。予定の品番で埋めないでください。束の数を数え、数えられなければそう答えてください」と指示する
- 出てきた品番を、自分で発注の明細と1文字ずつ見比べ、当時の検収の記録と後で分かった違いと突き合わせる
30件は必ずやってください。 サーバーを作る前に、「今の撮り方の写真から、品番の末尾まで読めるのか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 後で分かった色違いの品番が、そのまま写された | サーバーと突き合わせの作成に進む |
| 読めない文字を予定の品番で埋めた | 指示の書き方で直る。構成は有効 |
| ラベルの写真が遠く、品番が読めない納品が多い | 撮り方の決まりが先。 AIの問題ではない |
3行目が出ることは珍しくありません。 失敗ではなく、担当が写真を拡大して時間をかけていた理由が1つ分かったということです。 「ラベルは手のひら1つ分の距離で撮る」を決まりに足して、次の納品から撮り直してください。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 読めない文字を予定の品番で埋める | ? のまま返させ、? のある品番は突き合わせに使わない |
| 似た品番を同じものとして通す | 突き合わせはサーバーが文字列の完全一致で行う |
| 重なった束を「おそらく10」と数える | countable を分け、数えられなければ現場に聞く |
| 写真の不足に翌日気づく | 「納品終わり」で動かし、現場にいるうちに撮り直しを頼む |
| 別の現場の荷物が今日の品目に数えられる | 予定に無いラベルは other_items に分ける |
| 等級の表示が仕様に合うかをAIに聞く | 表示の文字を写すだけにし、仕様との比べは設計の担当に回す |
| 明細の単位がばらばらで数が比べられない | 枚数に直せる列を足してから使う |
| 縮めすぎて末尾の文字が読めない | ラベルと納品書は大きめに残すか切り出す |
| 運転手や近所の人が写る | 塗りつぶしてから渡す |
| 返品や値引きの言葉が連絡に入る | 事実だけを書かせ、担当が直して送る |
上の2行が、この構成の失敗のほとんどです。 どちらも、AIが「こうであるはずだ」に寄せて読むことから出ています。写すことと照らすことを分け、照らすのは機械の規則にするのが、指示と設計の両方で守る線です。
4行目も、早く効いてきます。 撮り直しを翌日に頼む運用では、荷物が片付けられて撮りようがなく、結局は現場への電話に戻ります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 現場の写真、建材の品番と数、建材店ごとの納品書と仕入れの単価、現場の名前と住所です。写真には運転手や職人、施主の家族、隣の家や通りが写り込むことがあります。
- 現場と施主の情報を外に広げない … 現場の名前や住所、建物の作りが写真と記録に残ります。写真と記録を見られる人を工務部に限り、建材店への連絡には、その建材店の納品に関わる写真だけを添えます
- 写り込んだ人を塗りつぶす … 前処理で顔を塗りつぶしてから渡し、人について何も書かせません。 撮るときに、荷物だけを写す向きを選ぶ決まりも伝えます
- 建材の性能の判断を写真に寄せない … 国土交通省は、建築基準法に基づくシックハウス対策として、居室内の化学物質の発散に対する衛生上の措置(建築基準法第28条の2)と、ホルムアルデヒドに関する建築材料・換気設備の技術的基準(施行令第20条の5〜第20条の9)、関係する告示を示しています。この構成が読むのはラベルの表示の文字までで、使ってよい材料かの判断は設計の担当が図書で行います
- 検収の判断を機械に寄せない … 検収してよいか、返品や値引きを求めるかは、購買の担当が建材店との取り決めで決めます。記録に「検収可」と書かせないのは、写真の1枚で受け取りを確定させないためです
- 使うのは社内の担当だけにする … Gemini API の規約は、18歳以上であることを利用の条件とし、18歳未満の人に向けた、または使う見込みのあるアプリでの利用を認めていません。AIの結果を見るのは購買の担当と監督だけにし、施主や職人がAIに触れる画面は作りません。 現場の人が送るのは写真だけです
- AI側にやり取りを残さない … 有料の利用枠で使い、
store=falseを付けます
誤りが起きた場合のリスクは、品番の違いや破損を見落として施工してしまうことと、合っている納品を違うと言って建材店に無駄な確認をさせることの2つです。 前者は読めない文字を埋めさせると起き、後者は数えられない束を数えさせると起きます。どちらも、写真から言える範囲を超えて答えさせたときに起きるので、そこを設計で守ります。
10まず何から始めるか
1週目:発注の明細をそろえる
発注の明細に、届く予定の日、入数、枚数に直せる単位、等級の列を足します。全部の現場を一度にそろえる必要はありません。これから着工する現場から始めます。
2週目:30件で試す
先月の納品から30件を選び、手元の Gemini の画面でラベルと納品書の文字を写させます。読めない文字を予定の品番で埋めていないか、束の数を当て推量で書いていないかを最優先で見ます。
3週目:撮り方を決める
荷姿・ラベル・納品書を撮る順と、ラベルを撮る距離を決めます。大工や職人に伝え、チャットの「納品終わり」の押し方を決めます。
4週目:まとめて突き合わせの一覧を出す
担当が1日分の写真をまとめて API に渡し、発注の明細との突き合わせの一覧を作るところまで作ります。この時点では知らせも撮り直しの依頼も出さず、担当の見比べと並べて見ます。
2か月目: 「納品終わり」のトリガーと、撮り直しの依頼、違いと破損のすぐの知らせを足します。3か月目以降: 検収の記録と建材店への連絡の下書きを足し、1件10分が何分になったかを実測します。施工の当日に色違いや割れが分かる納品が無くなった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
対応する画像の形式が PNG・JPEG・WEBP・HEIC・HEIF であること。画像を直接入れる場合は指示の文などを合わせたリクエスト全体が20MBまでであること。位置が [ymin, xmin, ymax, xmax] の順で0〜1000に正規化されて返り、元の大きさに戻して使うこと。例が /v1beta/interactions に送る形で書かれていること | Google AI for Developers: Image understanding | 2026-10-29 |
構造化出力を /v1beta/interactions の response_format(mime_type に application/json、schema)で指定すること。enum、minItems・maxItems、minimum・maximum が使えること。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 |
| シックハウス対策に係る法令等が平成15年7月1日に施行されたこと。建築基準法第28条の2(居室内における化学物質の発散に対する衛生上の措置)、施行令第20条の5〜第20条の9(ホルムアルデヒドに関する建築材料・換気設備の技術的基準など)、平成14年国土交通省告示第1113号ほかの関係告示が示されていること | 国土交通省: 建築基準法に基づくシックハウス対策について | 2026-10-29 |
検収してよいか、使ってよい材料か、建材店に何を求めるかは、設計の図書と建材店との取り決めに合わせて購買・設計・監督の担当が決めてください。 本記事は上の公式の情報で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-2269)についてのご相談はこちらから。
