干物の加工所が乾燥のあとの製品の写真を Gemini で見て、焼け・割れ・形の不良の候補を拾い、ロットごとの検品の記録を作る
乾燥機から出した開き干しのすのこを、検品台の上の固定カメラで撮り、Gemini API で魚1枚ずつの焼け・割れ・形の不良の候補を返させます。ロットごとの検品の記録と、規格外の数の集計を作ります。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Google Apps Script/Python
- 対象業界
- その他/商社/製造
- 対象部門
- 品質管理/生産
- 対象業務
- 内容確認・チェック/記録・議事録作成
- 主な課題
- 人手が足りない/書類作成に時間がかかる/確認ミスが多い
- AIで行う処理
- 画像認識
- 主な効果
- 入力漏れ削減/品質標準化/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 乾燥機からすのこを出し、ロットの番号の札と一緒に検品台へ並べる
- 選別の担当が1枚ずつ見て、不良の魚を外して規格外の箱へ入れる
- 外しながら、焼け・割れ・形・その他を正の字で数える
- ロットが終わったら、数を検品の記録の用紙に書き写し、魚種・サイズ・取引先・担当名を書く
- 取引先の規格書で迷ったものは、主任を呼んで見てもらう
- 夕方、用紙の数を表計算に入力し、取引先ごと・魚種ごとの規格外の率を出す
- 月末に、取引先に出す規格外の報告を作り、目立った不良の写真をスマートフォンで撮ってあれば添える
- 人すのこを検品台の決まった枠に置き、ロットの番号の札を読み取り台にかざす
- 自動固定カメラが、すのこを置くたびに上から1枚撮る
- 自動サーバーがロットの番号から魚種・サイズ・取引先・規格書の区分を引く
- 自動Gemini API が、魚1枚ずつに候補を枠で返し、写っていない部分や判断のつかない魚を分ける
- 自動サーバーが候補を写真に印として描き、検品台の横の画面に出す
- 人選別の担当が、印の魚を手に取って確かめ、外すものを外す。印の無い魚も、従来どおり目で流し見る
- 人外さなかった印と、印の無かった不良を画面で直す
- 自動ロットが終わると、規格書の区分ごとの数と写真の付いた検品の記録ができる
- 人主任が1日の終わりに記録を見て、迷いの多かったロットだけ写真を開く
- 【自動/人】 月末に、取引先ごとの規格外の集計と写真の組から報告の下書きを作り、主任が直して送る
各工程の詳しい説明を読む
- 乾燥機からすのこを出し、ロットの番号の札と一緒に検品台へ並べる
- 選別の担当が1枚ずつ見て、不良の魚を外して規格外の箱へ入れる
- 外しながら、焼け・割れ・形・その他を正の字で数える
- ロットが終わったら、数を検品の記録の用紙に書き写し、魚種・サイズ・取引先・担当名を書く
- 取引先の規格書で迷ったものは、主任を呼んで見てもらう
- 夕方、用紙の数を表計算に入力し、取引先ごと・魚種ごとの規格外の率を出す
- 月末に、取引先に出す規格外の報告を作り、目立った不良の写真をスマートフォンで撮ってあれば添える
(a)数えている間、選別が止まる。 正の字をつけるたびに手が止まり、次のすのこが乾燥機の前で待ちます。 忙しい日は数えるのを後回しにし、ロットの終わりに「だいたいこのくらい」と書くことになります。
(b)見る目が人ごとに違う。 薄い黄ばみを焼けとするか、浅い割れを外すかは、担当の経験で分かれます。同じ取引先の同じ魚でも、担当によって規格外の率が違います。 取引先から「先月より率が上がった理由」を聞かれても、魚が悪かったのか、見る人が変わったのかを分けられません。
(c)記録に写真が残らない。 用紙に残るのは数だけで、どんな割れだったのかは後から分かりません。 取引先から店頭での苦情が来たとき、出荷の時点でどう見えていたかを示す材料がありません。
(d)書き写しで数がずれる。 正の字から用紙へ、用紙から表計算へと2回写すので、ロットの番号の取り違えや数の写し間違いが、月の集計に紛れ込みます。
- 【人】 すのこを検品台の決まった枠に置き、ロットの番号の札を読み取り台にかざす
- 【自動】 固定カメラが、すのこを置くたびに上から1枚撮る
- 【自動】 サーバーがロットの番号から魚種・サイズ・取引先・規格書の区分を引く
- 【自動】 Gemini API が、魚1枚ずつに候補を枠で返し、写っていない部分や判断のつかない魚を分ける
- 【自動】 サーバーが候補を写真に印として描き、検品台の横の画面に出す
- 【人】 選別の担当が、印の魚を手に取って確かめ、外すものを外す。印の無い魚も、従来どおり目で流し見る
- 【人】 外さなかった印と、印の無かった不良を画面で直す
- 【自動】 ロットが終わると、規格書の区分ごとの数と写真の付いた検品の記録ができる
- 【人】 主任が1日の終わりに記録を見て、迷いの多かったロットだけ写真を開く
- 【自動/人】 月末に、取引先ごとの規格外の集計と写真の組から報告の下書きを作り、主任が直して送る
6番目で印の無い魚も見るのは、意図してのことです。 写真には裏側と、すのこに重なった部分が写りません。AIの候補は「ここを先に見る」という順番であって、選別の代わりではありません。
7番目で人が直した結果だけが、記録に残る数になります。 AIの数をそのまま記録にすると、焼けと影の見分け違いがそのまま率になります。
02今回想定するシステム構成
乾燥機から出したすのこ(検品台の決まった枠に置く) ▼【トリガー】すのこの置き終わり(重さの台か、担当のボタン) 固定カメラ(検品台の上)── 1枚撮る ▼ Python のサーバー ├── ロットの番号から魚種・サイズ・取引先・規格書の区分を引く ├── 写真の切り出し(すのこの枠)、明るさの確認、人の手の写り込みの確認 ▼ Gemini API(画像の理解・構造化出力)── すのこ1枚の写真と規格書の区分 │ 魚1枚ずつの枠、候補の種類、判断のつかない魚、写っていない部分 ▼ Python ── 印を描いて検品台の画面に出す ▼ 【人】選別の担当が外す・印を直す ▼ ロットの検品の記録(区分ごとの数+写真)→ 月末の取引先への報告の下書き
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 処理 | Gemini API(魚1枚ずつの候補を枠で返し、月末の報告の文の下書きを作る) | 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枚ずつ動かします。 合図は、検品台に重さの台を入れて重さが落ち着いたときか、担当が足元のボタンを押したときにします。連続で撮って動画のように流す形にはしません。 手が写った写真や、置く途中の傾いた写真が混ざり、同じ魚が2回数えられます。
ロットの区切りは、番号の札で決めます。 乾燥機から出すたびに、担当が札のバーコードを読み取り台にかざします。札をかざさずに置いたすのこは、前のロットに入れず、「ロット不明」として画面に出します。 魚種や取引先の取り違えは、そのまま検品の記録の誤りになるからです。
ロットの最後のすのこのあとに、担当が「ロット終了」を押します。 これを合図にサーバーがロットの集計を作ります。押し忘れのまま次の札がかざされたら、前のロットを閉じて、主任に「終了の押し忘れ」として知らせます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| すのこの写真 | 検品台の上から撮った1枚。撮った時刻、検品台の番号 | 固定カメラ |
| ロットの情報 | ロットの番号、魚種、サイズの区分、製法(開き・みりん干し)、取引先、乾燥機と乾燥の時間 | 製造の指図書 |
| 規格書の区分の表 | 取引先ごとに、規格外とする不良の種類と程度の言葉(例:身割れは長さ2センチ以上、焼けは色の変化が目で分かるもの) | 規格書を書き直した表 |
| 候補の種類の一覧 | 油焼けに見える変色、身割れ、腹の破れ、開きのゆがみ、尾・ひれの欠け、皮のはがれ、血のにじみ、大きさの外れに見えるもの、異物に見えるもの | サーバーに持たせる |
| 比べる見本の写真 | 取引先ごとの「規格内の限度」と「規格外」の見本を数枚 | 主任が選んで登録 |
質を決めるのは、規格書を区分の表に直す部分です。 規格書の「品質に問題のないこと」のような言葉のままでは、AIも人も同じ線を引けません。「どの種類の不良を、どの程度から外すか」を取引先ごとに1行ずつ書き出します。 長さや面積のように写真から測りにくい基準は、見本の写真で線を見せます。
見本の写真は、取引先ごとに数枚に絞ります。 多く入れるほど呼び出しが重くなり、見本と製品の写真を取り違える答えも増えます。「ここまでは規格内」の限度の見本がいちばん効きます。
データの取得方法を決める
写真は、固定カメラからサーバーが直接受け取ります。 カメラの製品によって受け取り方が違うので、使うカメラの連携の機能に合わせて作ります。スマートフォンを台に固定して撮る形でも始められます。 その場合は、撮った写真を決まったフォルダに送る仕組みを作ります。
ロットの情報は、製造の指図書の表から引きます。 札の番号で行を引き、魚種・サイズ・取引先を取り出します。規格書の区分の表は取引先の名前で引き、その日の版を写しておきます。 規格書が改まったときに、どの版で数えた記録かが分かるようにするためです。
Gemini API へは、すのこ1枚の写真、そのロットの規格書の区分、見本の写真をまとめて渡します。 魚が並んでいる向きと列の数も添えます。列と行の数が分かると、AIが返す魚の数が写真の魚の数と合っているかを、サーバーで確かめられます。
有料の利用枠で使い、store を false にします。 Gemini API の規約では、有料のサービスではプロンプトと応答が製品の改善に使われないとされています。Interactions API は既定でやり取りを保存し(有料の枠で55日、無料の枠で1日)、store=false で保存しない動きにできると案内されています。store=false では前のやり取りを引き継げないので、毎回、写真と区分と見本をそろえて送ります。
AIへ渡す前に整形する
- 枠の切り出し … 検品台の枠の印を手がかりに、すのこの部分だけを切り出します。台の外の手元や箱を写真から外します
- 明るさと色の確認 … 照明の切れや、窓からの光で色が変わっていないかを、台の隅に置いた灰色の板の色で見ます。焼けは色で見るので、色がずれた写真は渡しません
- ぶれの確認 … 置く途中で撮れたぶれた写真は、撮り直しにします
- 手の写り込みの確認 … すのこの上に手や道具がかかっていれば、撮り直しにします
- 縮小 … 長い辺を2,000ピクセル程度にします。小ぶりのアジが並ぶすのこでは、割れが見える大きさを残します
- 向きの確認 … すのこの向きが決まった向きでなければ、回転させます
2番目を省かないでください。 夕方の西日や、照明の一部が切れただけで、白身の魚が全部黄ばんで見え、焼けの候補が一度に増えます。 灰色の板の色が決まった範囲を外れたら、その写真はAIに渡さず、担当の画面に「照明を確かめてください」と出します。
AIに処理させる
させるのは、魚1枚ずつの位置を返すこと、候補の種類と程度の言葉を返すこと、判断のつかない魚を分けることだけです。
| 返すもの | 中身 | 判断できないときの扱い |
|---|---|---|
| 魚の位置 | すのこの上の魚1枚ずつの枠と、列・行の番号 | 重なって境目が分からなければ overlapped |
| 候補 | 魚の番号、候補の種類、規格書の区分の言葉に当てた程度(限度より軽く見える/限度に近い/限度を超えて見える) | 影か変色か分からなければ unclear |
| 写っていない部分 | すのこの端で切れた魚、重なって隠れた部分 | not_visible として返す |
| 異物に見えるもの | 魚の上やすのこの上の、魚でないように見えるもの | 種類を書かず、必ず人に回す印にする |
程度を「限度より軽く見える/限度に近い/限度を超えて見える」の3つで返させるのが、この構成の要です。 外すかどうかを直接答えさせると、規格書の線より手前の魚まで「規格外」と返し、外す数が人の目より多くなります。 3つに分ければ、サーバーが取引先ごとに「限度に近い」を外すか残すかを決められます。
4行目の異物は、別の扱いにします。 毛髪、うろこの塊、プラスチックの破片のように見えるものは、AIが何であるかを言い当てる必要はありません。 印を出して人が手に取り、従来の異物の手順に回します。AIが何も返さなかったことを、異物が無いことの根拠にしません。
| させないこと | 理由 |
|---|---|
| 出荷してよいかの判断 | 規格書と取引先との取り決めで決まる。主任が決める |
| 異物の有無の断定 | 衛生上の危害に関わる。従来の確認と機器を残す |
| 塩の効き、身の締まり、鮮度、においを書くこと | 写真には写らない |
| 不良の原因(原料・乾燥の時間)を断定すること | 写真からは分からない。主任が製造の記録と見比べる |
| 選別の担当の腕や責任について書くこと | 検品の記録が人への評価になってしまう |
1行目がいちばん起きやすい失敗です。 すのこの魚に候補が無いと、AIは「全数が規格内で出荷可能です」と書きたがります。その言葉が検品の記録に入ると、裏側を見ていない写真1枚で出荷を保証することになります。 返すのは見え方までにし、出荷の可否は記録に書かせません。
指示内容を固定する
あなたは干物の加工所で、乾燥のあとの製品の写真を見る手伝いをする係です。
写真はすのこ1枚を上から撮ったもので、魚は {アジの開き} が {6列×5行} 並んでいます。
取引先の規格書の区分は次のとおりです。
{身割れ:長さ2センチ以上を規格外 / 焼け:色の変化が目で分かるものを規格外 /
尾の欠け:規格外 / 開きのゆがみ:左右の身の大きさが目で分かるほど違えば規格外}
限度の見本の写真を {2} 枚つけます(1枚目:規格内の限度、2枚目:規格外)。
【やること】
1. 魚1枚ずつの位置を [ymin, xmin, ymax, xmax] の順で、0〜1000 に正規化して返す。
列と行の番号もつける。重なって境目の分からない魚は overlapped にする。
2. 次の種類の候補を探し、魚の番号と種類と程度を返す。
oil_burn(油焼けに見える変色)、split(身割れ)、torn_belly(腹の破れ)、
misshapen(開きのゆがみ)、tail_fin_missing(尾・ひれの欠け)、
skin_peeled(皮のはがれ)、blood_spot(血のにじみ)、size_off(大きさの外れ)
程度は below_limit / near_limit / over_limit のどれかにする。
3. すのこの端で切れた魚、隠れた部分は not_visible に書く。
4. 魚でないように見えるものがあれば、foreign_like に位置だけを書く。
【厳守事項】
- 候補が無い魚について、規格内だ、出荷できる、と書かないでください。
- 影・すのこの網目・照明の反射か、変色か分からないものは unclear にしてください。
- 魚の裏側、塩の効き、鮮度、においについて何も書かないでください。
- 魚でないように見えるものが何かを言い当てないでください。位置だけを返してください。
- 不良の原因を書かないでください。
- 人の手や道具が写っていても、それについて何も書かないでください。
- 魚の数を、写真に写っている数より増やしたり減らしたりしないでください。
「候補が無い魚について、規格内だと書かない」を置くのは、記録の言葉を守るためです。 何も言わないと、AIは候補の無い魚を「良品」と書き、その言葉がサーバーの集計で「良品の数」として残ります。 候補の無い魚は、記録の上でも「写真で候補の無かった魚」です。
「魚の数を増やしたり減らしたりしない」は、列と行の数と組みで効きます。 返ってきた魚の数が6列×5行の30と合わなければ、サーバーが呼び直します。数が合わないまま集計すると、規格外の率の分母がずれます。
月末の報告の文は、別の呼び出しで作ります。 主任が直した後の1か月分の集計だけを渡し、「数は渡した表から写す」「原因を断定しない」「改善を約束する言葉を書かない」を入れます。数そのものはサーバーが入れ、AIには文のつなぎだけを書かせます。
出力形式を固定する
すのこ1枚ごとに、次の形の JSON で受け取ります。 kind、degree は enum で決まった文字列に絞り、fish は列×行の数を minItems・maxItems で求めます。
{
"lot_no": "L-1029-14",
"tray": 3,
"fish": [
{ "no": 12, "row": 2, "col": 6, "box_2d": [310, 820, 455, 985], "status": "seen | overlapped | not_visible" }
],
"findings": [
{ "fish_no": 12,
"kind": "oil_burn | split | torn_belly | misshapen | tail_fin_missing | skin_peeled | blood_spot | size_off | unclear",
"degree": "below_limit | near_limit | over_limit",
"note": "腹の側の縁に、黄色っぽい変色が親指ほどの幅で見える" }
],
"foreign_like": [ { "box_2d": [600, 140, 640, 190] } ]
}
1つ目の理由は、魚の番号が画面の印と記録の鍵になることです。 担当が画面で「12番は外さない」と直せば、その魚の候補だけが記録から消えます。何を直したかが番号で残るので、AIと人の見え方の違いを後から数えられます。
2つ目は、degree を取引先ごとの規則で読めることです。
| 取引先の区分 | 印を赤にする条件 | 印を黄にする条件 |
|---|---|---|
| ギフト(厳しい) | near_limit 以上 | below_limit |
| 量販店(標準) | over_limit | near_limit |
| 共通 | unclear と overlapped、foreign_like はすべて人が手に取る | - |
要は、degree を区分で書き換えないことです。 ギフトの取引先でも、AIの答えはそのまま残し、色を決めるのはサーバーの規則だけです。 取引先の区分を付け間違えても、JSON を読み直すだけで記録をやり直せます。
3つ目は、ロットの集計をそのまま検品の記録にできることです。
| ロット | 魚種・サイズ | 取引先 | 撮った魚 | 規格外として外した数(人が確かめた後) | 主な種類 |
|---|---|---|---|---|---|
| L-1029-14 | アジ・中 | 量販店A | 300 | 9 | 身割れ5、焼け3、尾の欠け1 |
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 固定カメラ | サーバーが受け取る | すのこ1枚ごとの写真 |
| 製造の指図書 | 読み取り | ロットの魚種・サイズ・取引先・乾燥機 |
| 規格書の区分の表 | 読み取り | 取引先ごとの不良の種類と程度、見本の写真 |
| Gemini API | API呼び出し(/v1beta/interactions、store=false) | 魚の位置と候補、月末の報告の文の下書き |
| 検品台の画面 | サーバーが表示する | 印を描いた写真、直すための操作 |
| 検品の記録 | 書き込み | 人が直した後のロットごとの数と写真 |
製造の指図書へは書き込みません。 検品の結果で指図を変えるのは主任の仕事で、自動で書き戻すと、AIの見え方が製造の計画を動かします。
取引先への報告は、下書きまでにします。 主任が読み直し、写真を選んでから送ります。
人が確認する
- 印の魚を手に取る … 赤の印から順に、裏返して確かめ、外すものを外します
- 印の無い魚も流し見る … 従来どおり目で見て、印の無かった不良は画面で足します
unclear・overlapped・foreign_likeを必ず手に取る … 異物に見えるものは従来の手順に回します- ロットの終わりに数を見る … 画面の数と規格外の箱の中の数が大きく違わないかを見ます
- 主任が1日の終わりに記録を見る … 人が直した数の多かったロットだけ写真を開きます
2番目を省かないでください。 写真に写らない裏側の割れや、すのこに張りついた皮のはがれは、手に取ったときにしか分かりません。 印の無い魚を見ない運用にすると、記録の数は速く出ても、出荷する魚の質が下がります。
目標は、600ロットをならして1ロット2分です。 候補の少ないロットは1分ほどで済み、脂の乗った時期のサバや、ギフト向けのロットは数分かかります。
例外に対処する
| 起きること | 対応 |
|---|---|
| 灰色の板の色が範囲を外れた | AIに渡さず、照明を確かめてから撮り直す |
| 手や道具が写った・ぶれた | 撮り直す。3回続けば担当が目で数える |
| 返ってきた魚の数が列×行と合わない | 呼び直す。2回合わなければ、そのすのこは人が数える |
| 札をかざさずにすのこを置いた | 「ロット不明」として出し、札をかざすまで集計に入れない |
| 規格書の区分の表に、その取引先が無い | 候補は出すが色は付けず、主任に区分の追加を頼む |
| 指示に反して「出荷可」「良品」や原因を書いた | その出力を保存せずに捨て、呼び直す |
JSON の値が enum に無い | 候補を出さず、担当が目で見る |
| API が応答しない | 写真を残し、その間は従来どおり正の字で数える |
上から3行目までが大半を占めます。 どれもAIの精度の問題ではなく、照明と置き方の問題です。 6行目は、note に「出荷」「良品」「原因」の言葉が入っていないかをサーバーで見ます。最後の行のために、正の字の用紙は検品台から片付けません。
記録を残す
- すのこごとの元の写真と、切り出してAIに渡した写真
- 渡した規格書の区分の表の版と、Gemini API が返した JSON
- 魚の番号ごとに担当が直した内容(外した・外さなかった・足した)
- ロットごとの集計と、主任の確認の記録
- 月末の報告の下書きと、送った報告
3つ目が、規格書の区分の表と見本の写真を直す材料になります。 同じ取引先で「限度に近い」を担当が外さないことが続くなら、見本の写真が厳しすぎます。担当ごとの直し方の違いも出せますが、評価に使うかは別に話し合って決めます。
04実装レベルの3段階
最小構成では件数がさばけません。 1日30ロットのすのこを1枚ずつ貼るのは無理です。確かめるための段階です。 半自動化で、1ロット6分が4分程度になります。 数え上げと書き写しは減りますが、写真がロットの後にまとめて処理されるので、選別の場で印を見ることができず、人が数えた数と後で突き合わせる作業が残ります。 本格構成で2分になり、この段階が本記事の想定です。 段階を飛ばさないでください。 半自動化の1か月で、どの魚種で影を焼けと言うか、どの取引先の見本が線を引けていないかが分かります。
05工数削減シミュレーション
導入後 600件 × 2分 ÷ 60 = 20 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 開き干し・みりん干し・一夜干しを1日に数十ロット作り、乾燥のあとに人が目で選別して、ロットごとの検品の記録を紙や表に手で書いている水産加工所。量販店・生協・ギフトの取引先ごとに、サイズ・色・割れの許容を書いた規格書があり、規格外の数と理由を報告している場合。乾燥機から出したすのこを検品台に置く場所が決まっていて、上から撮るカメラを固定できる場合。
- 1日の製造が数ロットで、担当が全部を手に取って見ても時間が足りている場合。製品を袋に詰めてから検品していて、魚の表面が写真に写らない場合。においや身の締まり、塩の効き具合など、写真に写らない点の確認が中心の場合。なお、出荷してよいかの判断、異物や衛生上の危害の確認、HACCPに沿った衛生管理の記録の責任は、この構成では代替できません。
07最小構成で試す方法
- 先月のロットから30件を選ぶ(うち数件は、取引先から規格外の多さを聞かれたロットを入れる)
- その30件について、当時の検品の記録の数と、規格外の箱の中身の写真があれば集める
- すのこをスマートフォンで上から撮り、取引先の規格書の言葉と一緒に手元の Gemini の画面に貼り付ける
- 「魚1枚ずつに、焼け・割れ・形の不良の候補を、限度より軽い・限度に近い・限度を超える、で答えてください。候補の無い魚を規格内だと書かないでください」と指示する
- 出てきた結果を、当時の担当の数と、主任が改めて見た結果と突き合わせる
30件は必ずやってください。 カメラを固定する前に、「今の照明と撮り方で、焼けと割れが写真に出るのか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 主任が外す魚が、候補の「限度に近い」以上に出た | 固定カメラとサーバーの作成に進む |
| 候補の無い魚を「規格内」と書いた | 指示の書き方で直る。構成は有効 |
| 影や網目を焼け・割れと言う候補が多い | 照明と撮る高さが先。 AIの問題ではない |
3行目が出ることは珍しくありません。 失敗ではなく、担当がすのこを傾けて見ていた理由が1つ分かったということです。 照明を上からの散った光にして、同じ30件を撮り直してください。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 候補の無い魚が「良品」と記録に残る | 指示で禁じ、記録では「写真で候補の無かった魚」と書く |
| 印の無い魚を見なくなる | 裏側は写らない。印は順番で、選別の代わりではない |
| 照明で白身が黄ばみ、焼けの候補が増える | 灰色の板で色を見て、外れた写真は渡さない |
| すのこの網目の影を割れと言う | 上からの散った光にし、unclear を許す |
| 外す・外さないを直接答えさせて数が増える | 程度を3つで返させ、取引先ごとの規則で色を決める |
| 異物が無いことの根拠にAIを使う | 異物は従来の確認を残す。 印は人が手に取るためだけ |
| 魚の数が合わず率の分母がずれる | 列×行の数を渡し、合わなければ呼び直す |
| ロットの取り違え | 札をかざさないすのこは集計に入れない |
| 規格書の言葉が曖昧で線が引けない | 区分の表と限度の見本の写真に直してから AI をつなぐ |
| 担当の直し方が評価に使われる | 人について書かせず、評価に使うかは別に決める |
上の2行が、この構成の失敗のほとんどです。 どちらも「写真に候補が無い」を「良品だ」と読むことから出ています。候補が無いことと、規格内であることを分けて扱うのが、指示と運用の両方で守る線です。
下の2行も、早く効いてきます。 規格書の言葉のままでは、AIの候補と担当の目が合っているかを確かめる基準がありません。 区分の表が先です。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 製品の写真、ロットと製造の情報、取引先ごとの規格書、規格外の率です。写真には選別の担当の手や腕が写り込むことがあります。
- 規格書と規格外の率を外に広げない … 取引先ごとの規格書と率は、取引先との取り決めそのものです。写真と記録を見られる人を品質管理と主任に限り、報告はその取引先にだけ送ります
- 異物と衛生の確認を置き換えない … 厚生労働省は、令和3年6月1日から原則としてすべての食品等事業者にHACCPに沿った衛生管理に取り組むことを求め、営業者が衛生管理計画を作り、実施の状況を記録して保存し、計画を定期的に検証して見直すことを挙げています。この構成の検品の記録は品質の記録で、衛生管理の記録の代わりにはしません。 異物の確認や金属の検出の手順は、今のまま残します
- AIの候補を出荷の可否にしない … 出荷を決めるのは主任です。記録に「出荷可」と書かせないのは、写真の1枚で出荷を保証しないためです
- 人を写さない・評価に使わない … 撮る範囲をすのこの枠に絞り、手や腕が写れば撮り直します。担当の直し方の違いを評価に使うかは、AIの導入とは別に話し合って決めます
- 使うのは社内の担当だけにする … Gemini API の規約は、18歳以上であることを利用の条件とし、18歳未満の人に向けた、または使う見込みのあるアプリでの利用を認めていません。検品台の画面を使うのは社内の担当だけにし、取引先や消費者がAIに触れる画面は作りません。 選別の場に18歳未満のアルバイトが入る場合は、画面の操作を担当に限る形にします
- AI側にやり取りを残さない … 有料の利用枠で使い、
store=falseを付けます
誤りが起きた場合のリスクは、規格外の魚を出荷してしまうことと、規格内の魚を外しすぎることの2つです。 前者は印の無い魚を見なくなると起き、後者は外す・外さないをAIに直接答えさせると起きます。どちらも、見え方と判断を分けることから外れたときに起きるので、そこを設計で守ります。
10まず何から始めるか
1週目:規格書を区分の表に直す
主任と担当で、取引先ごとにどの種類の不良を、どの程度から外すかを1行ずつ書き出します。限度の見本にする魚を選んで撮っておきます。出荷の多い上位3社から始めます。
2週目:30件で試す
先月のロットの写真か、新しく撮ったすのこの写真を30件分そろえ、手元の Gemini の画面で候補を答えさせます。候補の無い魚を「規格内」と書いていないか、影を焼けと言っていないかを最優先で見ます。
3週目:照明と撮る高さを決める
検品台の上にカメラと照明を仮に固定し、灰色の板を置きます。西日の入る時間と、照明を落とした時間で同じすのこを撮り、色が変わらない置き方を決めます。
4週目:まとめて候補の一覧を出す
担当が1日分の写真をまとめて API に渡し、ロットごとの候補の一覧と印の付いた写真を作るところまで作ります。この時点では選別の場に画面を置かず、担当の正の字の数と並べて見ます。
2か月目: すのこを置くたびに動かすトリガーと検品台の画面を足し、担当が印を直す操作を入れます。3か月目以降: 月末の報告の下書きを足し、1ロット6分が何分になったかを実測します。取引先からの問い合わせに、出荷時の写真で答えるようになった時点で、この構成は完成です。
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 |
| 令和3年6月1日から原則としてすべての食品等事業者がHACCPに沿った衛生管理に取り組むこと。営業者が衛生管理計画を作成し、実施状況を記録・保存し、定期的に検証して見直すこと。水産業における食品の採取業は制度化の対象外であること | 厚生労働省: HACCP(ハサップ) | 2026-10-29 |
どの不良をどの程度から外すか、出荷してよいかは、取引先の規格書と自社の品質の決まりに合わせて主任が決めてください。 本記事は上の公式の情報で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-2266)についてのご相談はこちらから。
