ユニフォームのレンタル会社が返却品を検品台で撮った写真を Gemini で見て、汚れ・破れ・名札の欠けの候補を拾い、補修と請求の候補の一覧を作る
返却されたユニフォームを洗濯の前に検品台で表と裏から撮り、Gemini API で汚れ・破れ・部品の不良・名札の欠けの候補を返させます。品物の番号と組み合わせて、補修の指示の一覧と請求の候補の一覧を作ります。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Google Apps Script/Python
- 対象業界
- その他/製造/飲食
- 対象部門
- 品質管理
- 対象業務
- データ入力・転記/内容確認・チェック
- 主な課題
- 人手が足りない/入力作業が多い/確認ミスが多い
- AIで行う処理
- 画像認識
- 主な効果
- 入力漏れ削減/品質標準化/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 回収袋を開け、袋の札で取引先と回収の日を確かめる
- 1着ずつ広げて番号を読み、表と裏を見る
- 不良があれば、番号と種類(ほつれ・ボタン・破れ・焼け・汚れ・名札)を紙に控える
- 補修の要るものは補修の箱へ、請求の候補になりそうなものは別の棚へ分ける
- 夕方、控えを補修の伝票と請求の候補の表に打ち込む
- 請求の候補については、写真をスマートフォンで撮り、表に貼る
- 名札の欠けたものは、台帳で着用者を引いて、名札の作り直しの指示を出す
- 人回収袋の札を読み取り、取引先と回収の日を画面に出す
- 人1着ずつ検品台に広げ、番号を読み取ってから、表を置いて足元のボタン、裏返してもう一度ボタンを押す
- 自動検品台の上のカメラが表と裏を1枚ずつ撮る
- 自動サーバーが番号から取引先・着用者・品目・名札の位置を引く
- 自動Gemini API が、汚れ・破れ・部品の不良・名札の欠けの候補を枠と見え方で返す
- 自動サーバーが候補を写真に印として描き、検品台の横の画面に出す
- 人担当が印の所を手で確かめ、補修の箱か取り分けの棚に入れ、画面で直す
- 自動補修の指示の一覧と請求の候補の一覧ができ、請求の候補には表と裏の写真と印が付く
- 人主任が1日の終わりに請求の候補を見て、営業の担当へ回すものを選ぶ
- 人営業の担当が契約書と照らし、取引先と話して請求するかを決める
各工程の詳しい説明を読む
- 回収袋を開け、袋の札で取引先と回収の日を確かめる
- 1着ずつ広げて番号を読み、表と裏を見る
- 不良があれば、番号と種類(ほつれ・ボタン・破れ・焼け・汚れ・名札)を紙に控える
- 補修の要るものは補修の箱へ、請求の候補になりそうなものは別の棚へ分ける
- 夕方、控えを補修の伝票と請求の候補の表に打ち込む
- 請求の候補については、写真をスマートフォンで撮り、表に貼る
- 名札の欠けたものは、台帳で着用者を引いて、名札の作り直しの指示を出す
(a)控えと打ち込みで二度書く。 紙の控えから表へ、番号を1文字ずつ打ち込みます。番号の打ち違いは、別の着用者の服に補修の指示が付く誤りになります。 1袋に不良が数着でも、袋の数が多いので毎日の量になります。
(b)名札の欠けを見落とす。 名札が付いているかは、表を見る手が止まらない程度の確かめです。はがれかけて端が浮いたものは、洗濯の途中で取れて、洗い上がりで持ち主が分からなくなります。 着用者の服が戻らないと、取引先から苦情が来ます。
(c)請求の候補の線が人で違う。 どこまでを「通常の使用」とするかは、担当の経験で分かれます。同じ焼け焦げでも、担当によって請求の候補に入ったり入らなかったりします。 営業の担当は、取引先に説明する根拠が写真しかありません。
(d)写真が後から撮られる。 請求の候補の写真は、夕方に棚から取り出して撮ります。どの品物を撮ったかを取り違えることがあり、 撮り忘れたものは洗濯に回って証拠が消えます。
- 【人】 回収袋の札を読み取り、取引先と回収の日を画面に出す
- 【人】 1着ずつ検品台に広げ、番号を読み取ってから、表を置いて足元のボタン、裏返してもう一度ボタンを押す
- 【自動】 検品台の上のカメラが表と裏を1枚ずつ撮る
- 【自動】 サーバーが番号から取引先・着用者・品目・名札の位置を引く
- 【自動】 Gemini API が、汚れ・破れ・部品の不良・名札の欠けの候補を枠と見え方で返す
- 【自動】 サーバーが候補を写真に印として描き、検品台の横の画面に出す
- 【人】 担当が印の所を手で確かめ、補修の箱か取り分けの棚に入れ、画面で直す
- 【自動】 補修の指示の一覧と請求の候補の一覧ができ、請求の候補には表と裏の写真と印が付く
- 【人】 主任が1日の終わりに請求の候補を見て、営業の担当へ回すものを選ぶ
- 【人】 営業の担当が契約書と照らし、取引先と話して請求するかを決める
7番目で印の無い所も従来どおり見るのは、意図してのことです。 ポケットの中や袖の内側、たたまれた裾は写真に写りません。AIの候補は「ここを先に見る」という順番であって、検品の代わりではありません。
10番目まで、請求するかを機械が決める所はありません。 一覧は営業の担当が取引先と話すための材料で、請求の書類を作るのは営業の担当です。
02今回想定するシステム構成
返却品(回収袋から1着ずつ検品台へ) ▼【トリガー】番号の読み取り+表・裏のボタン 検品台の上のカメラ ── 表と裏を1枚ずつ ▼ 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着の表と裏の2枚を1回の呼び出しにするので、この大きさに収まります。
位置は枠で返させます。 枠は [ymin, xmin, ymax, xmax] の順で、画像の大きさに対して0〜1000に正規化され、元の大きさに戻して使うよう案内されています。
出力は構造化出力で受けます。 /v1beta/interactions に送り、response_format で mime_type を application/json にし、schema にスキーマを入れます。文字列の enum、配列の minItems・maxItems が使えます。minLength・maxLength はエラーにならずに外されるので、文の長さはサーバーで見ます。値が正しいかはアプリ側で検証するよう公式に書かれています。
03どうやって実装するのか
処理の起点を決める
品物の番号を読み取ったあと、担当が足元のボタンを押したときに撮ります。 表を置いて1回、裏返して1回押し、2枚がそろったところで1着分としてAIに渡します。 番号を読まずにボタンを押した写真は、どの服のものか分からないので撮っても渡しません。
連続で撮って動画のように流す形にはしません。 広げる途中の写真や、手のかかった写真が混ざり、同じ破れが2回数えられたり、手の影が汚れとして出たりします。
袋の区切りは、回収袋の札で決めます。 次の袋の札を読んだときに、前の袋の一覧を閉じます。札を読まずに次の袋の服を置いた場合は、品物の番号の取引先が前の袋と違うことでサーバーが気づき、担当に札の読み忘れを知らせます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 表と裏の写真 | 検品台の上から撮った2枚。撮った時刻、検品台の番号 | 固定カメラ |
| 品物の情報 | 番号、取引先、着用者の番号、品目(作業服の上・調理衣・事務服のベストなど)、色、貸し出しの日、名札の位置(左胸・背中) | 品物の番号の台帳 |
| 候補の種類の一覧 | 落ちにくい汚れに見えるもの(塗料・油・インク)、焼け焦げ、破れ・穴、ほつれ、ボタンの欠け、ファスナーの不良、名札が無い、名札のはがれ、取り外し忘れの物(社員証・バッジ) | サーバーに持たせる |
| 取引先の区分 | 業種(工場・飲食・物流・事務)と、請求の扱いの区分(契約書から主任が書き出したもの) | 取引先の表 |
質を決めるのは、台帳の「名札の位置」と「色」です。 名札が左胸にあるはずの服で、左胸に何も写っていなければ「名札が無い」と言えます。位置が分からないと、AIは服全体から名札を探し、ポケットの縫い目や刺しゅうを名札と取り違えます。 色は、紺の作業服の油じみと、白い調理衣の油じみで見え方が違うので添えます。
取引先の業種を添えるのは、汚れの見え方のためです。 工場の作業服の油は洗えば落ちることが多く、塗料は落ちにくい。業種が分かれば、AIは同じ黒いしみを「油に見える」「塗料に見える」と分けて返しやすくなります。 ただし、落ちるかどうかはAIに言わせません。
データの取得方法を決める
写真は、固定カメラからサーバーが直接受け取ります。 カメラの製品によって受け取り方が違うので、使うカメラの連携の機能に合わせて作ります。番号の読み取りと足元のボタンは、同じ端末からサーバーへ送ります。 番号と写真が同じ端末から届くので、取り違えが起きにくくなります。
品物の情報は、番号で台帳から引きます。 取引先・着用者の番号・品目・色・名札の位置を取り出し、着用者の名前はAIに渡しません。 名前は台帳の中にあれば足り、写真の判定には要らないからです。
Gemini API へは、1着の表と裏の写真と品物の情報をまとめて渡します。 「1枚目が表、2枚目が裏」「名札は表の左胸」のように、写真と位置の関係を添えます。
有料の利用枠で使い、store を false にします。 Gemini API の規約では、有料のサービスではプロンプトと応答が製品の改善に使われないとされています。Interactions API は既定でやり取りを保存し(有料の枠で55日、無料の枠で1日)、store=false で保存しない動きにできると案内されています。store=false では前のやり取りを引き継げないので、毎回、写真と品物の情報をそろえて送ります。
AIへ渡す前に整形する
- 枠の切り出し … 検品台の枠の印を手がかりに、服の部分だけを切り出します
- 明るさと色の確認 … 台の隅の灰色の板の色を見て、照明の切れや色のずれを見ます。白い調理衣の黄ばみは色で見るので、ずれた写真は渡しません
- 手の写り込みの確認 … 服の上に手や腕がかかっていれば、撮り直しにします
- 広がり方の確認 … 袖や裾が折れて大きく隠れている写真は、置き直しにします
- 縮小 … 長い辺を1,800ピクセル程度にします。ほつれやボタンの欠けが見える大きさを残します
- 名札の位置の印 … 台帳の位置から、写真のおおよその範囲をサーバーが計算して添えます
4番目を省かないでください。 袖が折れたまま撮ると、袖口のほつれと肘の破れが写らず、AIは何も返しません。 返さなかったことを「傷みが無い」と読むと、補修の要る服がそのまま着用者に戻ります。
6番目の範囲は、品目ごとに置き方を決めてはじめて効きます。 襟を台の上の端の印に合わせ、身頃の中心を台の中心の線に合わせる、と決めておけば、左胸の名札は毎回ほぼ同じ所に写ります。 置き方がばらつく品目は、範囲を広めに取り、not_visible が増えないかを1週間見てから狭めます。
AIに処理させる
させるのは、候補の種類と枠を返すこと、名札の有無を返すこと、写っていない所を返すことだけです。
| 返すもの | 中身 | 判断できないときの扱い |
|---|---|---|
| 候補 | 表か裏か、枠、種類、見え方の短い説明、大きさの目安(硬貨くらい・手のひらくらい・それより大きい) | 汚れか生地の柄・影か分からなければ unclear |
| 名札 | 台帳の位置に present(付いて見える)/peeling(端が浮いて見える)/missing(付いて見えない) | 位置が折れて隠れていれば not_visible |
| 取り外し忘れの物 | 社員証・バッジ・ペンなど、服に付いたままに見える物 | 種類を書かず、位置だけを返す |
| 写っていない所 | 折れて隠れた袖・裾・襟の裏 | hidden_parts として返す |
名札を「位置を指定して、3つのどれか」で返させるのが、この構成の要です。 「名札がありますか」とだけ聞くと、AIは胸のポケットの縁や会社のロゴの刺しゅうを名札と答えます。台帳の位置を渡し、そこに付いて見えるかだけを答えさせれば、取り違えが減ります。 peeling を分けるのは、はがれかけが洗濯の途中で取れるからです。
大きさの目安を返させるのは、請求の候補の材料にするためです。 契約書に「通常の使用を超える」としか書かれていなくても、主任が「手のひらより大きい焼け焦げは候補にする」と決めておけば、サーバーがその目安で一覧に振り分けられます。
| させないこと | 理由 |
|---|---|
| 取引先に請求するかの判断 | 契約と取引先との関係で決まる。営業の担当が決める |
| 洗えば落ちるかの判断 | 洗濯の工程と薬品で決まる。洗濯の担当が見る |
| 廃棄するかの判断 | 補修の費用と残りの貸し出しの期間で決まる。主任が決める |
| 名札の名前を読むこと | 着用者の名前は要らない。番号で台帳から引く |
| 汚れの原因や、着用者の使い方を書くこと | 取引先とのやり取りで、人を責める文になってしまう |
| 血液や薬品など、衛生上の扱いが要るかを書くこと | 写真からは分からない。見つけた担当が社内の手順で扱う |
1行目がいちばん起きやすい失敗です。 大きな焼け焦げがあると、AIは「通常の使用を超える損傷のため、請求の対象です」と書きたがります。その言葉が一覧に入ると、営業の担当は契約書を確かめる前に請求の前提で話してしまいます。 返すのは見え方と大きさの目安までにします。
指示内容を固定する
あなたはユニフォームのレンタル会社で、洗濯の前の返却品の写真を見る手伝いをする係です。
品目は {作業服の上着}、色は {紺}、取引先の業種は {金属加工の工場} です。
1枚目が表、2枚目が裏です。名札は {表の左胸} に付いているはずで、
写真のおおよその範囲は {1枚目の [120, 520, 260, 760]} です。
【やること】
1. 次の種類の候補を探し、表か裏か、枠を [ymin, xmin, ymax, xmax] の順で、
0〜1000 に正規化して返す。見え方を短く書き、大きさの目安を選ぶ。
paint_like(塗料に見える汚れ)、oil_like(油に見える汚れ)、ink_like(インクに見える汚れ)、
scorch(焼け焦げ)、tear_hole(破れ・穴)、fraying(ほつれ)、
button_missing(ボタンの欠け)、zipper_fault(ファスナーの不良)
大きさの目安は coin / palm / larger のどれかにする。
2. 名札の位置に、present / peeling / missing / not_visible のどれかを選ぶ。
3. 服に付いたままに見える物があれば、attached_items に位置だけを書く。
4. 折れて隠れている所があれば、hidden_parts に書く。
【厳守事項】
- 名札の名前を読まないでください。文字について何も書かないでください。
- 名札の位置の範囲の外にある刺しゅうやロゴを、名札として扱わないでください。
- 汚れか、生地の柄・影・しわか分からないものは unclear にしてください。
- 請求するか、廃棄するか、洗えば落ちるかを書かないでください。
- 汚れの原因や、着用者の使い方について書かないでください。
- 衛生上の扱いが要るかについて書かないでください。
- 候補が無いとき、傷みが無い、問題ない、と書かないでください。
「名札の名前を読まない」を最初に置くのは、要らない個人情報を作らないためです。 何も言わないと、AIは親切に「名札には『田中』と書かれています」と返し、その文字が一覧とログに残ります。 名前は台帳にあれば足ります。
「位置の範囲の外の刺しゅうを名札として扱わない」は、取り違えを防ぐ線です。 作業服には会社のロゴや部署の刺しゅうがあり、範囲を渡さないと、名札が無い服を present と答えます。
請求の候補の説明の文は、別の呼び出しで作ります。 担当が確かめた候補と写真の番号だけを渡し、「見え方と大きさだけを書く」「請求の対象だ、通常の使用を超える、と書かない」「着用者について書かない」を入れます。営業の担当が取引先に見せる材料なので、判断の言葉を混ぜません。
出力形式を固定する
1着ごとに、次の形の JSON で受け取ります。 kind、size、name_tag は enum で決まった文字列に絞ります。
{
"item_no": "U-0482-117",
"findings": [
{ "side": "front | back", "box_2d": [610, 300, 720, 455],
"kind": "paint_like | oil_like | ink_like | scorch | tear_hole | fraying | button_missing | zipper_fault | unclear",
"size": "coin | palm | larger",
"note": "右の裾の上に、灰色の固まったような汚れが手のひらほどの広さで見える" }
],
"name_tag": "present | peeling | missing | not_visible",
"attached_items": [ { "side": "front", "box_2d": [140, 300, 210, 360] } ],
"hidden_parts": ["左の袖口が折れて見えない"]
}
1つ目の理由は、品物の番号と候補が1つの記録になることです。 紙の控えから打ち込む工程が無くなり、番号の打ち違いで別の着用者の服に補修が付く誤りが消えます。
2つ目は、サーバーが規則で一覧に振り分けられることです。
| 条件 | 行き先 |
|---|---|
fraying・button_missing・zipper_fault、name_tag が peeling か missing | 補修の指示の一覧(名札は作り直しの指示も) |
scorch・tear_hole・paint_like で size が主任の決めた目安以上 | 請求の候補の一覧(写真と印つき) |
unclear、not_visible、hidden_parts があるもの、attached_items があるもの | 担当が手で確かめる印 |
要は、AIの答えを一覧の都合で書き換えないことです。 請求の目安を変えても、JSON を読み直すだけで一覧を作り直せます。
3つ目は、請求の候補に表と裏の写真がそのまま付くことです。 洗濯の前の写真が番号と一緒に残るので、洗ったあとで証拠が消える(d)がなくなります。
| 取引先 | 品物の番号 | 着用者の番号 | 種類 | 大きさの目安 | 写真 | 担当の確かめ |
|---|---|---|---|---|---|---|
| A製作所 | U-0482-117 | 0482-031 | 塗料に見える汚れ | 手のひら | 表・裏 | 手で触れて固まりを確かめた |
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 固定カメラと読み取りの端末 | サーバーが受け取る | 品物の番号と表・裏の写真 |
| 品物の番号の台帳 | 読み取り | 取引先、着用者の番号、品目、色、名札の位置 |
| Gemini API | API呼び出し(/v1beta/interactions、store=false) | 候補と名札の有無、請求の候補の説明の文の下書き |
| 検品台の画面 | サーバーが表示する | 印を描いた写真と、直す操作 |
| 補修の伝票 | 書き込み | 担当が確かめた補修の指示 |
| 請求の候補の表 | 書き込み | 担当が確かめた候補と写真。営業の担当が見る |
台帳と契約書へは書き込みません。 廃棄や品物の入れ替えを台帳に反映するのは主任で、請求の結果を書くのは営業の担当です。
人が確認する
- 印の所を手で確かめる … 赤の印から順に、触れて確かめ、補修の箱か取り分けの棚に入れます
- 印の無い所も従来どおり見る … ポケットの中、袖の内側、襟の裏を見て、写らなかった傷みは画面で足します
unclear・not_visible・取り外し忘れの物を必ず見る … 取り外し忘れの物は取引先に返す箱へ入れます- 主任が請求の候補を選ぶ … 1日の終わりに写真を見て、営業の担当へ回すものを選びます
- 営業の担当が契約書と照らす … 取引先と話してから請求するかを決めます
2番目を省かないでください。 ポケットの中のペンのインク漏れや、襟の裏のほつれは、手に取ったときにしか分かりません。 印の無い所を見ない運用にすると、一覧は速く出ても、着用者に戻る服の質が下がります。
目標は、900袋をならして1袋2分です。 不良の少ない事務服の袋は1分ほどで済み、工場の作業服の袋は汚れの候補が多く、数分かかります。
例外に対処する
| 起きること | 対応 |
|---|---|
| 番号が読めない(タグの破れ・バーコードのかすれ) | 撮っても渡さず、担当が番号を手で入れる。タグの付け直しを補修の一覧に入れる |
| 番号が台帳に無い、取引先が袋と違う | 渡さずに主任へ知らせる。他社の服の混入を疑う |
| 灰色の板の色が範囲を外れた・手が写った | 撮り直す |
| 名札の位置が台帳に無い | 名札は not_visible として担当が見る。台帳に位置を足す |
| 血液や薬品のように見えるものがある | AIの印にかかわらず、見つけた担当が社内の手順で扱う |
| 指示に反して「請求の対象」や名札の名前を書いた | その出力を保存せずに捨て、呼び直す |
JSON の値が enum に無い | 候補を出さず、担当が目で見る |
| API が応答しない | 写真を残し、その間は従来どおり紙に控える |
上から3行目までが大半を占めます。 どれもAIの精度の問題ではなく、タグと置き方と照明の問題です。 6行目は、note に「請求」「通常の使用」の言葉や、名札の範囲の文字が入っていないかをサーバーで見ます。
記録を残す
- 1着ごとの表と裏の元の写真と、AIに渡した写真
- 渡した品物の情報(着用者の名前は含めない)と、Gemini API が返した JSON
- 担当が直した内容(外した印・足した傷み・名札の判定の直し)
- 補修の指示と、請求の候補として主任が選んだもの、営業の担当の結論
- 名札の作り直しの指示と、作り直した名札が付いた日
3つ目が、請求の目安と撮り方を直す材料になります。 unclear が特定の品目の柄で続くなら、その品目の見本を足します。取引先ごとの請求の候補の数も出せますが、営業の担当が取引先と話す前の数であることを、表に書いておきます。
04実装レベルの3段階
最小構成では件数がさばけません。 1日に1,000着前後を手で貼るのは無理です。確かめるための段階です。 ここで見るのは速さではなく、写真から名札と傷みが拾えるかどうかだけです。 半自動化で、1袋5分が3分程度になります。 打ち込みは減りますが、写真が後でまとめて処理されるので、検品台で印を見られず、担当の控えと一覧を突き合わせる作業が残ります。 本格構成で2分になり、この段階が本記事の想定です。 段階を飛ばさないでください。 半自動化の1か月で、どの品目で柄を汚れと言うか、どの取引先で名札の位置が台帳と違うかが分かります。
05工数削減シミュレーション
導入後 900件 × 2分 ÷ 60 = 30 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 工場・飲食店・物流の会社などの取引先に、着用者ごとの名札を付けたユニフォームを貸し出し、毎週の回収のたびに洗濯の前の検品で傷みを見ている会社。品物ごとにバーコードやICタグの番号があり、検品の担当が不良を紙や端末に手で控え、補修の伝票と取引先への請求の候補を別に作っている場合。契約に、通常の使用を超える破損や汚損の扱いが書かれている場合。
- 品物に番号が付いておらず、どの取引先のどの着用者の服かを機械で引けない場合。回収の量が少なく、検品の担当が手に取って控えても時間が足りている場合。においや生地の傷み具合、薬品の付着など、写真に写らない点の確認が中心の場合。なお、取引先に請求するかどうか、廃棄するかどうか、衛生上の扱いが要る汚れかどうかの判断は、この構成では代替できません。
07最小構成で試す方法
- 先月の回収から30袋分の不良品を選ぶ(うち数着は、取引先と請求で話がこじれた服と、名札が取れて持ち主が分からなくなった服を入れる)
- その30袋について、当時の控えと請求の候補の表を書き出す
- 服を広げてスマートフォンで表と裏を撮り、品目と名札の位置の説明と一緒に手元の Gemini の画面に貼り付ける
- 「汚れ・破れ・部品の不良の候補を、見え方と大きさの目安で答えてください。名札が決まった位置に付いて見えるかを答えてください。名札の名前を読まないでください。請求するかを書かないでください」と指示する
- 出てきた結果を、当時の控えと主任が改めて見た結果と突き合わせる
30袋は必ずやってください。 カメラを固定する前に、「今の照明と広げ方で、ほつれと名札のはがれが写真に出るのか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 当時の控えにある傷みと名札の欠けが候補に出た | 固定カメラとサーバーの作成に進む |
| 名札の名前を読んだ、請求の対象と書いた | 指示の書き方で直る。構成は有効 |
| 紺の作業服の汚れが見えず、候補が出ない | 照明と撮る高さが先。 AIの問題ではない |
3行目が出ることは珍しくありません。 失敗ではなく、担当が服を光にかざして見ていた理由が1つ分かったということです。 照明を斜めからも当てて、同じ30袋を撮り直してください。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 「請求の対象です」と一覧に載る | 見え方と大きさの目安までにし、請求は営業の担当が決める |
| ロゴの刺しゅうを名札と答える | 台帳の位置と写真の範囲を渡し、範囲の外を名札として扱わせない |
| 名札の名前が一覧とログに残る | 名前を読ませず、note の文字をサーバーで見る |
| 袖が折れて傷みが写らない | 置き直しにし、hidden_parts を返させる |
| 候補が無い服を「問題なし」と扱う | 印の無い所も従来どおり見る。 候補が無いことは良品の意味ではない |
| 照明で白い調理衣が黄ばんで見える | 灰色の板で色を見て、外れた写真は渡さない |
| 番号の読み忘れで写真が宙に浮く | 番号を読まないと撮った写真を渡さない |
| 他社の服が袋に混ざる | 番号の取引先が袋と違えば主任に知らせる |
| 血液や薬品の扱いをAIに寄せる | 見つけた担当が社内の手順で扱う |
| 請求の候補の数が取引先の評価に使われる | 営業の担当が話す前の数だと表に書く |
上の2行が、この構成の失敗のほとんどです。 どちらも、AIに写真から言える以上のことを言わせることから出ています。見え方と判断を分け、名札は決まった位置の有無だけを聞くのが、指示と規則の両方で守る線です。
5行目も、早く効いてきます。 候補の出ない服を見なくなると、ポケットの中のインク漏れが、洗濯で同じ袋の服に移ります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 返却品の写真、品物の番号と台帳の情報、取引先の契約書の扱い、補修と請求の候補です。写真には着用者の名札が写り、台帳には着用者の番号がつながっています。
- 名札の名前を個人情報として扱う … 個人情報保護委員会のガイドラインは、個人情報の例の最初に本人の氏名を挙げています。名札の名前はAIに読ませず、一覧とログに残しません。 着用者は台帳の番号で扱い、名前は台帳の中だけに置きます
- 取引先の情報を外に広げない … 着用者の数やサイズ、請求の候補は取引先ごとの情報です。一覧を見られる人を品質管理と営業の担当に限り、取引先には自社の分だけを見せます
- 請求の判断を機械に寄せない … 請求するかは契約と取引先との話し合いで決まります。一覧に「請求の対象」と書かせないのは、取引先との話を写真の1枚で決めないためです
- 取り外し忘れの物を記録しすぎない … 社員証やバッジには名前や顔写真があります。AIには位置だけを返させ、種類や文字を書かせません。 物は取引先に返す箱へ入れます
- 使うのは社内の担当だけにする … Gemini API の規約は、18歳以上であることを利用の条件とし、18歳未満の人に向けた、または使う見込みのあるアプリでの利用を認めていません。検品台の画面を使うのは社内の担当だけにし、取引先や着用者がAIに触れる画面は作りません
- AI側にやり取りを残さない … 有料の利用枠で使い、
store=falseを付けます
誤りが起きた場合のリスクは、根拠の弱い請求で取引先との関係を損なうことと、名札の欠けを見落として着用者の服が戻らなくなることの2つです。 前者は請求の判断をAIの言葉に寄せると起き、後者は名札を位置なしで聞くと起きます。どちらも、見え方と判断を分けることから外れたときに起きるので、そこを設計で守ります。
10まず何から始めるか
1週目:名札の位置と請求の目安を決める
台帳の品目ごとに名札の位置を書き足します。主任が取引先の契約書を読み、どの種類と大きさから請求の候補にするかを書き出します。回収の多い上位20社から始めます。
2週目:30袋で試す
先月の不良品を30袋分そろえ、手元の Gemini の画面で答えさせます。名札の名前を読んでいないか、「請求の対象」と書いていないかを最優先で見ます。
3週目:照明と広げ方を決める
検品台の上にカメラと照明を仮に固定し、灰色の板を置きます。紺の作業服と白い調理衣の両方で、汚れとほつれが写る照明の当て方を決めます。 袖と裾の広げ方を担当で決めます。
4週目:まとめて一覧を出す
担当が撮った写真を番号つきでまとめて API に渡し、補修と請求の候補の一覧を作るところまで作ります。この時点では検品台に画面を置かず、紙の控えと並べて見ます。
2か月目: 検品台の画面と足元のボタンを足し、担当が印を直す操作を入れます。3か月目以降: 請求の候補の説明の下書きを足し、1袋5分が何分になったかを実測します。営業の担当が、洗濯の前の写真で取引先と話すようになった時点で、この構成は完成です。
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 が使えること。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 |
| 個人情報に該当する事例として、本人の氏名、本人が判別できる映像情報が挙げられていること | 個人情報保護委員会: 個人情報の保護に関する法律についてのガイドライン(通則編) | 2026-10-29 |
取引先に請求するか、どの服を廃棄するかは、取引先ごとの契約と自社の決まりに合わせて主任と営業の担当が決めてください。 本記事は上の公式の情報で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-2268)についてのご相談はこちらから。
