文具店が手書きの客注票を読み取り、問屋ごとの発注の一覧と入荷の連絡の台帳を作る
手書きの客注票の店控えを読み取り、問屋の商品の一覧で品番と色を照らします。問屋ごとの発注の一覧と、入荷したときの連絡の台帳を自動で作ります。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- AWS Textract/Azure AI/Google Document AI
- 連携・自動化
- Google Apps Script/Python
- 対象業界
- その他/小売
- 対象部門
- 購買
- 対象業務
- データ入力・転記/台帳・マスタ管理
- 主な課題
- 入力作業が多い/情報が見つからない/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/対応スピード向上/工数削減
- 導入難易度
- ★☆☆☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 店員がお客様から取り寄せの品を聞き、客注票に書いて、お客様控えを渡す
- 店控えをレジの横の箱に入れる
- 店長か店員が、午前と午後に箱の店控えを取り出し、問屋のカタログや Web の画面で品番と色の番号を調べる
- どの問屋から取るかを決め、問屋ごとの発注のメモに品番・色・数量を書き写す
- 締めの時刻までに、Web の発注の画面に打ち込むか、FAX の発注書を書いて送る
- 入荷の連絡のノートに、品名とお客様の名前・電話番号・連絡の方法を書き写す
- 入荷したら、ノートを見てお客様に連絡する
- 人店員がお客様から取り寄せの品を聞き、客注票に書く(様式は第7章のとおり少し直す)
- 人店員が、書き終えた店控えをレジの横のスマートフォンで撮り、Google ドライブの受付のフォルダに入れる
- 自動毎日10時15分と14時15分と閉店の後に Apps Script が動き、受付のフォルダの画像を Document AI で読み取る
- 自動品番の欄を、問屋の商品の一覧で照らす。1つに決まらなければ、生成AIがメーカー・品名・色の書き方から候補を最大3つ出す
- 自動決まった行に、問屋・入数・余りの数・その問屋の次の締めの時刻を付け、問屋ごとの発注の一覧に入れる
- 自動客注1件ごとに、入荷の連絡の台帳の行を作る。電話番号の桁を確かめる
- 自動品番の決まらない行、色の書かれていない行、余りの出る行、連絡先の読めない行を確認の一覧に出す
- 人店長が締めの前に、確認の一覧を見て候補から選ぶか、お客様に電話で確かめる
- 人店長か店員が、問屋ごとの発注の一覧を見て、Web の発注の画面に打ち込むか FAX の発注書を送る
- 人入荷したら、入荷の連絡の台帳を見てお客様に連絡する
各工程の詳しい説明を読む
- 店員がお客様から取り寄せの品を聞き、客注票に書いて、お客様控えを渡す
- 店控えをレジの横の箱に入れる
- 店長か店員が、午前と午後に箱の店控えを取り出し、問屋のカタログや Web の画面で品番と色の番号を調べる
- どの問屋から取るかを決め、問屋ごとの発注のメモに品番・色・数量を書き写す
- 締めの時刻までに、Web の発注の画面に打ち込むか、FAX の発注書を書いて送る
- 入荷の連絡のノートに、品名とお客様の名前・電話番号・連絡の方法を書き写す
- 入荷したら、ノートを見てお客様に連絡する
(a)品番を調べるのに時間がかかる。 3番で、品名と色の言い方から品番を探します。同じボールペンでも、軸の色と芯の色、芯の太さで品番が分かれ、 カタログを何ページもめくります。
(b)色の番号を取り違える。 「黒」と書かれていても、インクの黒か軸の黒かで品番が違います。色の番号の末尾の1文字の違いで、届いた品をお客様に渡せなくなります。 取り寄せの品は問屋に返せないことが多く、そのまま店の在庫になります。
(c)入数を見ないで頼む。 4番で、お客様の数量をそのまま書き写し、問屋の発注の単位が箱だったことに、届いてから気づきます。
(d)締めの時刻に間に合わない。 午前の店控えの取り出しが遅れると、A社の11時の締めに間に合わず、入荷が1日遅れます。 お客様に伝えた入荷の日がずれ、電話で謝ることになります。
(e)連絡先の写し違い。 6番で電話番号を写し違えると、入荷してもお客様に連絡がつきません。お客様控えには店の電話番号しか書かれていないので、お客様からの問い合わせを待つしかありません。
- 【人】 店員がお客様から取り寄せの品を聞き、客注票に書く(様式は第7章のとおり少し直す)
- 【人】 店員が、書き終えた店控えをレジの横のスマートフォンで撮り、Google ドライブの受付のフォルダに入れる
- 【自動】 毎日10時15分と14時15分と閉店の後に Apps Script が動き、受付のフォルダの画像を Document AI で読み取る
- 【自動】 品番の欄を、問屋の商品の一覧で照らす。1つに決まらなければ、生成AIがメーカー・品名・色の書き方から候補を最大3つ出す
- 【自動】 決まった行に、問屋・入数・余りの数・その問屋の次の締めの時刻を付け、問屋ごとの発注の一覧に入れる
- 【自動】 客注1件ごとに、入荷の連絡の台帳の行を作る。電話番号の桁を確かめる
- 【自動】 品番の決まらない行、色の書かれていない行、余りの出る行、連絡先の読めない行を確認の一覧に出す
- 【人】 店長が締めの前に、確認の一覧を見て候補から選ぶか、お客様に電話で確かめる
- 【人】 店長か店員が、問屋ごとの発注の一覧を見て、Web の発注の画面に打ち込むか FAX の発注書を送る
- 【人】 入荷したら、入荷の連絡の台帳を見てお客様に連絡する
8番目が、この設計の分かれ目です。 店長が見るのは全部の客注票ではなく、品番の決まらない行、色の書かれていない行、余りの出る行、連絡先の読めない行だけです。品番が商品の一覧で1つに決まった行は、そのまま発注の一覧に入ります。
9番目の発注そのものは、人が行います。 問屋の Web の発注の画面に自動で打ち込む仕組みは作りません。発注の一覧が問屋ごと・締めごとにまとまっているので、打ち込みは一覧を上から写すだけになります。
02今回想定するシステム構成
客注票の店控え(B6・1枚1品。手書きの品番・色・数量・連絡先) │ 書き終えたら、レジの横のスマートフォンで撮る ▼ Google ドライブの受付のフォルダ ▼【トリガー】毎日10時15分・14時15分・閉店の後に Apps Script が動く Apps Script(取り込みの処理) ▼ Google Document AI(Form Parser) │ 票のキーと値、連絡の方法と前金のチェック ▼ Apps Script ── 問屋の商品の一覧で品番と色の番号を照らす ▼ Claude API(構造化出力)── 決まらない行だけ、品名と色の書き方から候補を出す ▼ Apps Script ── 入数と余り、締めの時刻、電話番号の桁の確かめ ▼ Google スプレッドシート(客注の表/問屋ごとの発注の一覧/入荷の連絡の台帳/確認の一覧) ▼ 【店長が確認の一覧を見て、締めの前に発注する】
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | Google Document AI(Form Parser) | Azure AI Document Intelligence(レイアウト モデル)、AWS Textract(英文の書類に限る。日本語の客注票には使えない) |
| 生成AI | Claude API(品名と色の書き方から商品の一覧の候補を出す。構造化出力) | OpenAI API、Gemini API |
| 連携 | Google Apps Script(読み取りの呼び出し、商品の一覧の照らし合わせ、スプレッドシートへの書き込み) | Python |
| 集計 | Google Apps Script(問屋ごと・締めごとの発注の一覧) | Python |
| 保管 | Google ドライブ(客注票の画像、問屋の商品の一覧)、Google スプレッドシート | ― |
新しく作るのは、スプレッドシート1つと Apps Script 1本です。 問屋から毎月届く商品の一覧のファイルを、問屋ごとのシートに貼り付けます。列は、問屋、メーカー、品番、品名、色の名前、色の番号、入数、本体の価格、取り寄せの可否です。 問屋によって列の並びが違うので、貼り付けのときに同じ並びにそろえます。
土台は Document AI の Form Parser です。 公式の説明では、Form Parser はキーと値のペア、表、チェックボックスを取り出し、学習済みで追加の学習はできないとされています。公式のプロセッサ一覧では、日本語(ja)は手書きに対応する言語に入っています。客注票の欄はキーと値のペアとして、連絡の方法と前金の有無はチェックボックスとして読みます。
Apps Script から Document AI を呼ぶには、Google Cloud のプロジェクトを用意します。 公式の説明では、Apps Script のプロジェクトはどれも Google Cloud のプロジェクトにつながっていて、既定のプロジェクトから自分で作った標準のプロジェクトに切り替えられます(元には戻せません)。Document AI を有効にした標準のプロジェクトに切り替えてから呼びます。
処理する場所に、日本のリージョンはありません。 公式のプロセッサ一覧では、Form Parser の対応リージョンは us・eu・シンガポール(asia-southeast1)などです。客注票にはお客様の名前と電話番号が載ります。国外で処理することを、店の個人情報の扱いの決まりで整理してから使います。
03どうやって実装するのか
処理の起点を決める
毎日10時15分と14時15分と閉店の後に、Apps Script が動きます。 公式の説明では、時間主導型のトリガーは決まった時刻か決まった間隔で処理を動かせます。10時15分はA社の11時の締めに、14時15分はC社の15時の締めに、閉店の後は翌朝の発注に間に合わせるためです。 締めの前に45分あるので、店長が確認の一覧を見て、発注の画面に打ち込めます。
撮るのは、客注を受けた店員の仕事にします。 客注票を書き終え、お客様控えを渡したら、店控えをレジの横のスマートフォンで撮ります。撮った店控えは、これまでどおりレジの横の箱に入れます。 紙は、入荷して受け渡しが終わるまで元の記録として残します。
急ぎの取り寄せのために、スプレッドシートに「いま読む」のメニューを付けます。 締めの直前に入った客注を、次の時刻を待たずに読めます。処理の終わった画像は月ごとのフォルダへ移し、移すのは客注の表に書き終えたときだけにします。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 客注票の画像 | 受けた日、受けた店員、メーカー、品名、品番、色、数量、お客様の名前、電話番号、メール、連絡の方法(電話・メール・来店を待つ)、前金の有無、受け渡しの希望の日 | 受付のフォルダ |
| 読み取り結果 | キーと値のペア、チェックボックスの状態、文字の位置 | Document AI |
| 問屋の商品の一覧 | 問屋、メーカー、品番、品名、色の名前、色の番号、入数、本体の価格、取り寄せの可否 | 問屋から毎月届くファイル |
| 問屋の決まり | 問屋ごとの締めの時刻、締めの曜日、入荷までの日数の目安、扱うメーカー | 店長が作る表 |
| 書き方の一覧 | 店でよく使う言い方と品番の対応(「〇〇の0.5赤」→品番) | 店長が作る表 |
質を決めるのは、問屋の商品の一覧です。 一覧が無いと、読み取った品番が実在するかも、色の番号が合っているかも確かめられません。毎月届いた一覧を、届いた日に貼り替えます。 古い一覧のまま照らすと、廃番の品を発注の一覧に入れます。
書き方の一覧は、店員が使ってきた言い方を店長がまとめたものです。 「学校の〇〇ノート」「事務所の〇〇さんの替え芯」のように、得意先ごとに決まった品がある場合は、ここに書いておくと品番が一度で決まります。 増えるほど、生成AIに回る行が減ります。
生成AIに渡すのは、メーカー・品名・品番・色の欄の文字と、商品の一覧のうち同じメーカーの行だけです。 お客様の名前、電話番号、メールは渡しません。
データの取得方法を決める
Apps Script から、Document AI の REST の process のメソッドを呼びます。 公式の説明では、processors/PROCESSOR_ID:process に、rawDocument として画像を base64 にした内容と MIME タイプを付けて送ります。トークンは Apps Script の実行しているユーザーの OAuth のトークンを使います。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| メーカー・品名・品番・色・数量 | pages[].formFields の fieldName と fieldValue | 品番の照らし合わせ |
| お客様の名前・電話番号・メール | formFields | 入荷の連絡の台帳 |
| 連絡の方法・前金の有無 | チェックボックスの fieldValue の valueType | 連絡の台帳と発注の可否 |
| 受け渡しの希望の日 | formFields | 締めと入荷の日数との比べ |
| 文字の位置 | textAnchor の startIndex と endIndex | 疑いのある欄の画像の切り出し |
連絡の方法と前金の有無は、四角のチェック欄にします。 公式の説明では、チェックボックスは近くの文字をキーとするキーと値のペアとして取り出され、valueType で印の有無が示されます(filled_checkbox/unfilled_checkbox)。丸で囲む書き方は読めないので、四角に変えます。
品番の欄は、1マスに1文字の枠にします。 品番は英字と数字とハイフンが混ざり、「0」と「O」、「1」と「I」、「5」と「S」が読み違えやすい文字です。枠があると、文字の数で品番の形が合うかを確かめられます。
空いた欄は、空として扱います。 公式の説明では、Form Parser は値の入っていないキーと値のペアを確実には読めないとされています。色の欄が空のときは、色の指定が無いとは見なさず、「色の記載なし」として確認に回します。
AIへ渡す前に整形する
- 1枚1ファイルの確認 … 公式のプロセッサ一覧では、Form Parser の同期の処理は1回15ページまでです。客注票は1枚1ファイルにします
- 向きと傾きの確認 … 横向きや斜めの画像は、向きを直してから送ります
- 品番のそろえ … 全角を半角に、ハイフンの種類を1つにそろえ、空白を除きます
- 読み違えやすい文字の候補 … 品番に「0」「O」、「1」「I」などが入るときは、置き換えた形も作り、商品の一覧にあるものだけを候補に残します
- 商品の一覧で照らす … 品番がそのまま、または4番の置き換えで1つだけ当たれば「決まった」。2つ以上か0なら生成AIに回します
- 色の確かめ … 商品の一覧でその品番に色の違いがあるのに、色の番号も色の名前も書かれていなければ「色の記載なし」にします
- 電話番号の確かめ … 数字の桁が電話番号の形に合うかを見ます。合わなければ「連絡先が読めない」にします
4番目で、読み違えの置き換えは商品の一覧で確かめられたものだけにします。 置き換えた形が一覧に無ければ、候補にしません。一覧に無い品番を作ると、問屋の発注の画面で「該当なし」になるか、似た品番の別の品が届きます。
6番目が、取り寄せでいちばん多い失敗を止める確かめです。 品番の頭の部分は合っていても、色の番号が無ければ品は決まっていません。色をいちばん売れる色に寄せることはしません。
AIに処理させる
品番の照らし合わせ、色の確かめ、入数と余り、問屋と締めの時刻、電話番号の確かめは、Apps Script の規則で行います。 生成AIには、商品の一覧で決まらなかった行について、メーカー・品名・色の書き方から候補を出す仕事だけを渡します。
| 規則で見るもの | 印を付ける条件 |
|---|---|
| 品番 | 商品の一覧で1つに決まらない、または一覧に無い |
| 色 | その品番に色の違いがあるのに、色の記載が無い |
| 取り寄せの可否 | 商品の一覧で取り寄せ不可、または廃番 |
| 入数 | 数量が入数で割り切れず、余りが出る |
| 締めと受け渡しの日 | 次の締めで頼んでも、受け渡しの希望の日に間に合わない目安 |
| 連絡先 | 電話番号の桁が合わない、連絡の方法の印が無い |
| 前金 | 前金を頂く決まりの品なのに、前金の印が無い |
| 生成AIにさせること | 中身 |
|---|---|
| 品名と色の書き方からの候補 | 同じメーカーの商品の一覧の行から、最大3つの候補を、根拠にした語とともに返す |
| 決まったかの区別 | 候補が1つで、品名と色の両方が一覧の語と同じときだけ matched |
| 足りない情報の指摘 | 候補を1つに絞るのに足りない項目(色・太さ・サイズ)を返す |
3つ目は、店長がお客様に電話するときに使います。 「芯の太さが0.5か0.7か」が足りないと分かっていれば、電話で聞くことが1つに絞れます。 生成AIには、足りない項目の名前だけを返させ、どちらかに決めさせません。
| させないこと | 理由 |
|---|---|
| 一覧に無い品番を返す | 似た品番の別の品が届く |
| 色の決めつけ | 違う色の取り寄せは店の在庫になる |
| 問屋の選択 | 扱うメーカーと締めで Apps Script が決める |
| 数量の書き換え | 入数との差は余りとして出し、店長が決める |
| 価格の計算 | 商品の一覧の価格とレジで扱う |
2行目がいちばん起きやすい失敗です。 「〇〇 赤」と書かれた票で、一覧に「赤」と「ピンクレッド」があると、生成AIは名前の近い「赤」を matched にしがちです。 色の候補が2つ以上あれば、必ず candidates にさせます。
指示内容を固定する
あなたは文具店の取り寄せの補助です。
客注票に書かれた品の書き方を、問屋の商品の一覧の行に当ててください。
【渡すもの】
- 客注票のメーカー・品名・品番・色の欄の文字
- 商品の一覧のうち、同じメーカーの行(品番・品名・色の名前・色の番号)
【当て方】
- 品名と色の両方が、一覧の品名と色の名前(または色の番号)と
同じ語で書かれていて、候補が1つなら status を matched に。
- 候補が2つ以上なら status を candidates にし、候補を最大3つ返す。
- 一覧に当たる行が無ければ status を not_found にする。
- 候補ごとに、根拠にした語を evidence にそのまま写す。
【足りない情報】
- 候補を1つに絞るのに足りない項目を missing に入れる。
color(色)、tip_size(芯・ペン先の太さ)、size(サイズ)、
other のどれか。
【厳守事項】
- 一覧に無い品番を返さない。品番を作らない。
- 色が書かれていなければ、色を決めない。よく売れる色に寄せない。
- 「赤」と「ピンクレッド」のように名前の近い色を同じものとして扱わない。
- 数量、価格、問屋について何も書かない。
- 読めない文字は「?」のまま残す。
【客注票の欄】{order_fields}
【商品の一覧(同じメーカー)】{catalog_rows}
「名前の近い色を同じものとして扱わない」を明記しないと、色の近い品を matched にします。 文具の色の名前は、メーカーごとに細かく分かれています。近い色を寄せるのは、お客様が見て「違う」と言う品を頼むことです。
構造化出力で、答えの形を固定します。 公式の説明では、Claude API の構造化出力は output_config.format に type: "json_schema" でスキーマを渡し、オブジェクトには additionalProperties: false が要ります。status と missing の値は enum で決まった値に限ります。候補の数の上限は、スキーマではなく Apps Script の側で確かめます。 公式の説明では、配列の minItems は0か1しか使えません。
出力形式を固定する
{
"status": "candidates",
"candidates": [
{ "code": "XX-500-R", "name": "〇〇 ゲルボールペン 0.5", "color": "赤",
"evidence": "〇〇の0.5 赤" },
{ "code": "XX-500-PR", "name": "〇〇 ゲルボールペン 0.5", "color": "ピンクレッド",
"evidence": "〇〇の0.5 赤" }
],
"missing": ["color"]
}
Apps Script は、この JSON と規則の結果から、客注の表の1行を作り、そこから2つの表を作ります。
| 表 | 1行の単位 | 列 |
|---|---|---|
| 問屋ごとの発注の一覧 | 問屋×締め×品番 | 問屋、締めの時刻、品番、品名、色、客注の数量の合計、入数、発注の数、余り、客注の番号 |
| 入荷の連絡の台帳 | 客注1件 | 客注の番号、品番、品名、色、数量、お客様の名前、連絡先、連絡の方法、前金、受け渡しの希望の日、入荷の日、連絡した日 |
発注の一覧は、締めの時刻ごとに区切って出します。 店長が締めの前に見る画面は、たとえば次のようになります。
【A社 11:00 締め】 10月29日
XX-500-B 〇〇 ゲルボールペン 0.5 黒 客注 3本(2件) 入数 10 → 発注 10・余り 7 ※要判断
YY-B5-30 △△ ノート B5 30枚 青 客注 5冊(1件) 入数 5 → 発注 5
【C社 15:00 締め】
ZZ-F-A4 □□ フラットファイル A4 赤 客注 20冊(1件) 入数 10 → 発注 20
確認待ち:品番未定 2件(色の記載なし 1、候補2つ 1)/連絡先が読めない 1件
同じ品番の客注は、締めごとに足して1行にします。 2件の客注で3本なら、余りは入数との差で1回だけ出ます。余りを店の在庫にするか、次の客注を待つかは、店長が決めます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| Google ドライブ | Apps Script が受付のフォルダを読む | 客注票の画像を集める |
| Document AI | REST の process | 客注票を読み取る |
| 問屋の商品の一覧 | スプレッドシートの問屋ごとのシート | 品番と色の照らし合わせ |
| Claude API | REST | 決まらない行の候補 |
| Google スプレッドシート | Apps Script が書く | 客注の表、発注の一覧、連絡の台帳、確認の一覧 |
| 問屋の発注の画面・FAX | 人が発注の一覧を見て打ち込む | 発注 |
問屋の発注の画面には、仕組みから打ち込みません。 問屋の画面に自動で打ち込む仕組みは、画面が変わると止まり、誤った品番を確認無しに頼む経路にもなります。 発注の一覧を見ながら人が打ち込み、打ち込んだ行に印を付けます。
入荷の連絡も、人が行います。 入荷の連絡の台帳に入荷の日を入れると、その行が「連絡待ち」になります。電話かメールかは、お客様が選んだ方法のとおりにします。 入荷した後の連絡漏れと引き取り漏れを追う仕組みを足すなら、UC-0797 の形が使えます。
人が確認する
- 品番の決まらない行を先に見る … 候補から選べるなら選び、選べなければ店控えを見てお客様に電話します。電話で聞く項目は、
missingに出たものだけにします - 色の記載が無い行を見る … 必ずお客様に確かめます。店員の記憶で決めません
- 余りの出る行を見る … 店の在庫にするか、次の客注を待つか、お客様に入数で買っていただけるかを決めます
- 連絡先の読めない行を見る … 店控えの画像を見て、読めなければ受けた店員に聞きます
- 締めに間に合わない行を見る … 受け渡しの希望の日に間に合わない目安が出たら、お客様に日にちを伝え直します
選んだ候補と、電話で確かめたことは、客注の表の行に残します。 同じ言い方が何度も出るなら、書き方の一覧に足して、次から一度で決まるようにします。
目標は、300件をならして1件2分です。 品番の決まった行を発注の画面に打ち込む時間と、確認の一覧の行を見る時間を合わせた値です。
例外に対処する
| 起きること | 対応 |
|---|---|
| 画像がぼけていて読めない | 読み取りに送らず、スプレッドシートの上に撮り直しの知らせを出す |
| 品番が商品の一覧に無い | 廃番か、ほかの問屋の扱いかを店長が調べる |
| 取り寄せ不可・廃番の品 | 発注の一覧に入れず、お客様に代わりの品を相談する |
| メーカー直送の品(名入れなど) | 問屋の発注の一覧に入れず、メーカーの注文の書類を別に書く |
| 同じ客注票を2回撮った | 受けた日・お客様の電話番号・品番が同じ行を止め、重複か追加の注文かを確かめる |
| 数量の欄が空 | 1とせず、確認に回す |
| 商品の一覧のファイルが古い | 届いた月が前の月なら、照らし合わせの前に知らせる |
| Document AI が応答しない | 受付のフォルダに残し、次の時刻に再び読む。締めの前なら手で調べる |
5行目は、撮り直しのときに起きます。 1枚目がぼけていたので撮り直し、両方が受付のフォルダに残ると、同じ取り寄せが2つ頼まれます。 取り寄せの品は返せないことが多いので、自動では足さずに止めます。
記録を残す
- 客注票の画像と、撮った日時・撮った店員
- Document AI が返した JSON の全文と、使ったプロセッサの版
- 照らし合わせに使った商品の一覧の月と、生成AIの候補
- 店長が選んだ候補と、お客様に確かめたこと
- 発注した日・問屋・締め、入荷の日、連絡した日、受け渡しの日
3つ目で商品の一覧の月を残すのは、品番と色が毎月変わるからです。 届いた品が違ったとき、当時の一覧で正しく照らしていたかを後から確かめられます。
04実装レベルの3段階
半自動化で、1件6分が2分になります。この段階が本記事の想定です。 カタログをめくる作業、発注のメモと連絡のノートへの書き写しが無くなり、店長は確認の一覧と発注の一覧を見るだけになります。 発注の画面への打ち込みは残るので、2分にしています。 本格構成は、問屋が入荷の知らせをデータで出してくれる場合に限ります。 問屋によって知らせの形が違うので、1社ずつつなぎます。
05工数削減シミュレーション
導入後 300件 × 2分 ÷ 60 = 10 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 学校・事務所・個人のお客様から、店頭に無い文具・事務用品・画材の取り寄せを毎月数百件受け、手書きの客注票に書いてから、店員が問屋のカタログで品番を調べ、問屋ごとの発注のメモと入荷の連絡のノートに書き写している町の文具店・画材店・事務用品店。取引のある問屋が2〜4社あり、問屋ごとに発注の締めの時刻と発注の単位が違う場合。問屋から商品の一覧のデータ(品番・品名・色・入数)を受け取れる場合。
- 取り寄せが月に数十件で、店長が1人で覚えていられる店。客注をすでに POS の客注の機能や問屋の受発注のシステムに店頭で打ち込んでいる店。問屋の商品の一覧のデータが手に入らず、紙のカタログしか無い店(品番の照らし合わせができません)。なお、取り寄せを受けるかどうか、前金を頂くかどうか、余った分を店の在庫にするかの判断は、この構成では代替できません。
07最小構成で試す方法
- 先月の客注票の店控えから30枚を選ぶ(品番の書かれていない票、色の書き方が曖昧な票、入数で余りの出る票を入れる)
- その30枚について、当時実際に発注した品番と色を、問屋の発注の記録から出しておく
- 店控えの名前と電話番号を紙で隠して撮り、手元のAIサービスの画面に1枚ずつ貼り付ける
- 問屋の商品の一覧のうち同じメーカーの行を貼り、「この客注票の品を、一覧の行に当ててください。決まらなければ候補を並べ、足りない情報を書いてください。一覧に無い品番を作らないでください。色を決めつけないでください」と指示する
- 出てきた答えを、当時実際に発注した品番と色と突き合わせる
30枚は必ずやってください。 組む前に、「手書きの品番が読めるか」と「色の決まらない票を決まったと言わないか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 当時の発注と同じ品番と色になった | Form Parser と商品の一覧の連携に進む |
| 色の近い品を決まったとして返した | 指示の書き方で直る。構成は有効 |
| 品番の英字と数字を読み違える | 様式が先。 品番の欄を1マス1文字の枠にする |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 色の近い品が決まったことになる | 色の候補が2つ以上なら必ず人へ。指示にも書く |
| 色の欄が空なのに発注の一覧に入る | 色の違いのある品番で色の記載が無ければ止める |
| 品番の「0」と「O」を読み違える | 置き換えた形を作り、商品の一覧にあるものだけ残す |
| 一覧に無い品番を候補にする | 候補は商品の一覧の行からだけ選ばせる |
| 入数の余りに気づかない | 発注の一覧に入数と余りを出す |
| 撮り直しで同じ取り寄せが2つ入る | 日・電話番号・品番が同じ行は自動で足さない |
| 古い商品の一覧で照らす | 届いた月を確かめ、古ければ知らせる |
| 締めの直前の客注が間に合わない | 「いま読む」のメニューで手で動かす |
上の4行が、この構成の失敗のほとんどです。 どれも、品番が「読めた」ことを「決まった」ことと取り違えることから出ています。 商品の一覧で1つに決まったかどうかだけを、発注の一覧に入れる条件にします。
下の4行は、店の決まりごとが表に落ちていないことから出ています。 入数、商品の一覧の月、締めの時刻は、いまは店長の頭の中にあります。表にすると、店長が休みの日でも同じ発注の一覧になります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: お客様の名前、電話番号、メール、取り寄せた品、前金の有無です。学校や事務所の担当者の名前と、事務所で使う品の傾向も載ります。
- 国外のリージョンで処理することを整理する … Form Parser の対応リージョンに日本はありません。店の個人情報の扱いの決まりに照らしてから本番の客注票を回します
- 生成AIに渡す範囲を絞る … メーカー・品名・品番・色の欄の文字と、同じメーカーの商品の一覧の行だけを渡し、お客様の名前と連絡先は渡しません
- スプレッドシートの共有を店の人に限る … 入荷の連絡の台帳は、店長と店員のアカウントだけで共有します
- 問屋の商品の一覧を外に出さない … 問屋から受け取った価格の入った一覧です。問屋との取り決めに沿って扱い、生成AIには価格の列を渡しません
- 発注と連絡を人が行う … 発注の画面への打ち込みと、お客様への連絡は、仕組みから自動では行いません
誤りが起きた場合のリスクは、違う品を取り寄せることと、入荷してもお客様に連絡がつかないことの2つです。 前者は色と品番を決めつけると起き、後者は電話番号を写し違えると起きます。どちらも、決まらないものを決めずに店長へ回すことで防ぎます。
10まず何から始めるか
1週目:商品の一覧をそろえる
問屋3社の商品の一覧を、同じ列の並びにそろえてスプレッドシートに貼ります。問屋ごとの締めの時刻と扱うメーカーの表も作ります。店でよく使う言い方を、書き方の一覧に20〜30行書き出します。
2週目:30枚で試す
先月の店控えを30枚選び、名前と電話番号を隠して手元のAIサービスで候補を出させます。色の近い品を決まったと言っていないかを最優先で見ます。
3週目:様式と Google Cloud を準備する
客注票の品番の欄を1マス1文字の枠にし、連絡の方法と前金を四角のチェック欄にした様式を刷ります。Google Cloud のプロジェクトを作り、Form Parser を用意します。国外で処理することの扱いも、この週に決めます。
4週目:1日3回の処理をつなぐ
Apps Script で受付のフォルダを読み、Form Parser を呼び、商品の一覧で照らして客注の表に書くところまで作ります。この時点では、いまのカタログでの調べ方と並べ、同じ品番と色になるかを見ます。
2か月目: 問屋ごとの発注の一覧と入荷の連絡の台帳を足し、締めの前に店長が見始めます。3か月目以降: 1件6分が何分になったかを数えます。締めの前に慌ててカタログをめくる時間が無くなった時点で、この構成は運用に乗ったと言えます。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
Form Parser の言語の表で、日本語(ja)が手書きに対応とされていること。Form Parser の同期の処理が15ページまでであること。対応リージョンが us・eu・asia-southeast1 などで、日本が含まれないこと | Google Cloud: Processor list | 2026-10-29 |
| Form Parser がキーと値のペア・表・チェックボックスを取り出し、学習済みで追加の学習ができないこと。チェックボックスが近くの文字をキーとするキーと値のペアとして取り出されること。値の入っていないキーと値のペアを確実には読めないこと | Google Cloud: Form Parser | 2026-10-29 |
フォームの項目が formFields の fieldName と fieldValue で返ること。チェックボックスの印の有無が valueType の filled_checkbox/unfilled_checkbox で示されること。文字の位置が textAnchor の startIndex と endIndex で示されること | Google Cloud: Handle the processing response | 2026-10-29 |
オンラインの処理を processors/PROCESSOR_ID:process に送り、rawDocument に base64 にした内容と MIME タイプを渡すこと | Google Cloud: Send a processing request | 2026-10-29 |
| Apps Script のプロジェクトが Google Cloud のプロジェクトにつながり、既定のプロジェクトから標準のプロジェクトに切り替えられ、元には戻せないこと | Google Apps Script: Google Cloud projects | 2026-10-29 |
| 時間主導型のトリガーが、決まった時刻か間隔で処理を動かせること | Google Apps Script: Installable triggers | 2026-10-29 |
Claude API の構造化出力を output_config.format に type: "json_schema" で指定すること。オブジェクトに additionalProperties: false が要ること。配列の minItems が0と1しか使えないこと | Claude Platform Docs: Structured outputs | 2026-10-29 |
問屋との取引の条件、取り寄せの品の返品の可否、前金の決め方は、問屋との取り決めと店の決まりに確かめてください。 本記事は上の公式の情報で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-2244)についてのご相談はこちらから。
