学生服の販売店が採寸のときに手書きする学校ごとの採寸・注文票を Azure AI Document Intelligence で読み、品目・サイズ・数量を発注の一覧に転記して、採寸値とサイズの食い違いを拾う
採寸のときに手書きされた学校ごとの採寸・注文票を読み取り、品目・サイズ・数量を発注の一覧に転記します。採寸値から離れたサイズや裾上げの書き漏れは、発注の前に店長へ回します。
- AIサービス
- AWS Textract/Azure AI/Google Document AI
- 連携・自動化
- Google Apps Script/Make/Power Automate/Python
- 対象業界
- その他/小売
- 対象部門
- 営業
- 対象業務
- データ入力・転記/内容確認・チェック
- 主な課題
- 入力作業が多い/期限・対応漏れが起きる/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/工数削減/機会損失防止
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 店頭や学校で、採寸係が採寸値を書き、保護者が品目・サイズ・数量を書く
- 店長が注文票を回収し、その日のうちに店のトレーに入れる
- 事務が注文票を学校ごとに分け、販売管理のシステムに受注を打ち込む
- 品目・サイズ・数量を、メーカーごとの発注の一覧に書き写す
- 採寸値を見て、選ばれたサイズが合っているかを目で確かめる。裾上げの寸法があるかを見る
- 疑問があれば店長に聞き、店長が保護者に電話する
- 発注の一覧をメーカーに送る
- 人店頭や学校で、採寸係と保護者が注文票を書く
- 人店長がその日の注文票を、店の複合機でまとめてスキャンする
- 自動保存をきっかけに処理が動き、カスタム分類モデルが1ページずつ学校の様式を判定する
- 自動学校の様式ごとに、合成モデルの中の学校別のテンプレート モデルが、採寸値・品目・サイズ・数量・裾上げの寸法と信頼度を返す
- 自動品目を学校の指定品目の表と照らし、サイズを採寸値とメーカーのサイズの表で照らす
- 自動裾上げの寸法・数量・保護者の連絡先の空欄を確かめる
- 自動欄ごとに判定を付け、発注の一覧の下書きと、生徒ごとの引き渡しの票の下書きを作る
- 人店長が、印の付いた欄だけを注文票の画像と並べて確かめ、必要なら保護者に電話する
- 人事務が発注の一覧の下書きを確かめ、メーカーに送る
各工程の詳しい説明を読む
- 店頭や学校で、採寸係が採寸値を書き、保護者が品目・サイズ・数量を書く
- 店長が注文票を回収し、その日のうちに店のトレーに入れる
- 事務が注文票を学校ごとに分け、販売管理のシステムに受注を打ち込む
- 品目・サイズ・数量を、メーカーごとの発注の一覧に書き写す
- 採寸値を見て、選ばれたサイズが合っているかを目で確かめる。裾上げの寸法があるかを見る
- 疑問があれば店長に聞き、店長が保護者に電話する
- 発注の一覧をメーカーに送る
(a)学校ごとに見る場所が違う。 25校の注文票は品目の並びがばらばらで、事務は学校が変わるたびに、どの欄に何があるかを探し直します。 慣れた学校は速く、年に数枚しか来ない学校は遅くなります。
(b)採寸値とサイズの食い違いが、届いてから分かる。 5番目の確認は、急ぐ日ほど省かれます。身長155の生徒に175のブレザーが発注され、届いてから交換になることがあります。交換の分は再発注になり、着る日に間に合わないこともあります。
(c)裾上げの寸法の書き漏れで、納品が止まる。 スラックスの裾上げは股下の寸法が要りますが、採寸係が測ったのに注文票に書き忘れることがあります。書き漏れはメーカーから問い合わせが来て初めて分かり、そこから保護者に聞き直します。
(d)指定品目にない品目が書かれる。 兄や姉の学校の注文票の書き方で、その学校には無い品目(別の学校のネクタイなど)が書かれることがあります。事務が気づかなければ、そのまま発注されます。
- 【人】 店頭や学校で、採寸係と保護者が注文票を書く
- 【人】 店長がその日の注文票を、店の複合機でまとめてスキャンする
- 【自動】 保存をきっかけに処理が動き、カスタム分類モデルが1ページずつ学校の様式を判定する
- 【自動】 学校の様式ごとに、合成モデルの中の学校別のテンプレート モデルが、採寸値・品目・サイズ・数量・裾上げの寸法と信頼度を返す
- 【自動】 品目を学校の指定品目の表と照らし、サイズを採寸値とメーカーのサイズの表で照らす
- 【自動】 裾上げの寸法・数量・保護者の連絡先の空欄を確かめる
- 【自動】 欄ごとに判定を付け、発注の一覧の下書きと、生徒ごとの引き渡しの票の下書きを作る
- 【人】 店長が、印の付いた欄だけを注文票の画像と並べて確かめ、必要なら保護者に電話する
- 【人】 事務が発注の一覧の下書きを確かめ、メーカーに送る
3番目で学校を振り分けてから読むのが、この設計の分かれ目です。 25校の様式を1つのモデルで読ませると、品目の並びの違いを吸収しきれず、ある学校のブレザーの欄を別の学校のシャツの欄として読むことが起きえます。様式ごとにモデルを分ければ、それぞれは決まった枠を読むだけになります。
8番目で電話をするのは店長です。 採寸に立ち会った店長なら、生徒の体格と保護者の希望を覚えていることが多く、確かめるのが速くなります。
02今回想定するシステム構成
採寸・注文票(紙・手書き。学校ごとに様式が違う) │ 店の複合機でその日の分をまとめてスキャン(300dpi、PDF) ▼【トリガー】Azure Blob Storage の受付のコンテナーへの保存 Python(Azure Functions) ▼ Azure AI Document Intelligence ├─ カスタム分類モデル(25校+その他、1ページずつ判定) └─ 合成モデル(学校ごとのカスタム テンプレート モデル) │ 採寸値・品目・サイズ・数量・裾上げの寸法と信頼度 ▼ Python ── 指定品目の表・メーカーのサイズの表との照合、空欄の検出 ▼ 発注の一覧の下書き(メーカーごと) 引き渡しの票の下書き 確認の一覧 ▼ 【店長が印の付いた欄を確かめ、事務がメーカーへ送る】
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | Azure AI Document Intelligence(カスタム分類モデル+学校ごとのカスタム テンプレート モデルの合成モデル) | Google Document AI(Form Parser)。AWS Textract は日本語の手書きを読めないため対象外 |
| 連携 | Python(Azure Functions。保存を起点に読み取りを呼び、照合と下書きを作る) | Power Automate、Make |
| 差異計算 | Python(指定品目・サイズの表との照合、採寸値とサイズの差、空欄の検出) | Google Apps Script |
| 保管 | Azure Blob Storage(注文票の画像と読み取りの結果) | 社内のファイルサーバー |
販売管理のシステムとメーカーへの発注の一覧は、新しく足すものではありません。 この構成が作るのは下書きまでで、メーカーへ送るのも受注を確定するのも人です。
読み取りの中心は、学校ごとのカスタム テンプレート モデルです。 公式の説明では、テンプレート モデルは決まった見た目の様式を持つ文書から、レイアウトの手がかりで値を取り出すモデルで、キーと値、選択マーク、表、署名、選択した領域に対応します。様式が変わると正確さが下がるので、様式ごとに5枚以上の見本でモデルを作り、合成することが勧められています。25校の様式はまさにこの形です。
v4.0(2024-11-30)の合成モデルは、明示的に学習させた分類モデルを使います。 公式の説明では、以前の暗黙の振り分けに代えて分類の段を明示し、信頼度の閾値で振り分けを制御できるようになり、1つの合成モデルに最大500のカスタム モデルを割り当てられるとされています。
分類モデルには、少なくとも2つの区分と、区分ごとに5枚以上の見本が要ります。 公式の説明では、学習の区分に無い文書が来ることが見込まれるなら、分類の信頼度に閾値を置くか、「other」の区分に代表的な見本を入れることが勧められています。この構成では、体操服だけの注文票や、別の店の書類が混ざることを見込んで「その他」の区分を作ります。
日本語の手書きも対象です。 カスタム テンプレート モデルの手書きの対応言語に日本語が含まれ、v4.0 の分類モデルの対応言語にも日本語が含まれています。
03どうやって実装するのか
処理の起点を決める
店長がその日の注文票を複合機でスキャンし、PDF が Blob Storage の受付のコンテナーに保存されたことを起点にします。 1日の分をまとめて1つの PDF にし、店舗ごとに保存先のフォルダを分けます。 保存されると Azure Functions の処理が動きます。
スキャンは閉店の前に行います。 翌朝には店長の確認の一覧が出ているので、保護者への電話を午前のうちに済ませ、その日のうちにメーカーへ送れます。 学校での採寸の日は、店に戻ってからその日の分をスキャンします。
処理が終わった PDF は処理済みのコンテナーへ移します。移すのは、全ページの分類と読み取りと照合が終わったときだけにします。 受付のコンテナーに残っている数が、未処理の数になります。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 注文票の PDF | その日の分をまとめたもの。スキャンした日時と店舗 | Blob Storage の受付のコンテナー |
| 分類の結果 | ページごとの学校の様式(docType)と信頼度 | Azure AI Document Intelligence |
| 読み取り結果 | 採寸値、品目ごとのサイズと数量、裾上げの寸法、連絡先、欄ごとの信頼度 | Azure AI Document Intelligence |
| 学校ごとの指定品目の表 | 学校、品目、メーカー、品番、選べるサイズ、裾上げの要否 | 店が作る表 |
| メーカーのサイズの表 | 品目ごとのサイズと、対応する身長・胸囲・胴囲の範囲 | メーカーのカタログから店が作る表 |
質を決めるのは、下の2つの表です。 指定品目の表が無ければ、その学校に無い品目かどうかを判断できません。メーカーのサイズの表が無ければ、採寸値とサイズの照合ができません。どちらも学校やメーカーの改訂のたびに直す決まりにします。
採寸値とサイズの照合には、身長と胸囲(上衣)、胴囲(下衣)を使います。 どの採寸値をどの品目に使うかも、メーカーのサイズの表に持たせます。
データの取得方法を決める
読み取りは、Azure Functions から Document Intelligence の REST API で合成モデルを1回呼びます。 v4.0 の合成モデルは分類モデルと学校ごとのテンプレート モデルをまとめたもので、1ページずつ分類され、その学校のモデルで読まれた結果が返ります。 API のバージョンは 2024-11-30 に固定します。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 学校の様式 | 結果の docType と分類の信頼度 | どの学校の表で照合するか |
| 学年・生徒の名前・連絡先 | テンプレート モデルのフィールド | 引き渡しの票、確認の電話 |
| 採寸値 | フィールド(身長・胸囲・胴囲・股下など) | サイズとの照合、裾上げ |
| 品目ごとのサイズ | 選択マーク(丸印)またはフィールド(数字) | 発注の一覧 |
| 数量・裾上げの寸法 | フィールド | 発注の一覧、メーカーへの指示 |
| 信頼度 | フィールドと選択マークの confidence | 確かめる欄の絞り込み |
分割の設定は「1ページずつ」にします。 公式の説明では、v4.0 の分類モデルは既定では文書を分けず(splitMode の既定は none)、perPage を指定すると1ページずつを別の文書として分類するとされています。注文票は1人1枚なので、1日分の PDF を1ページずつ分類させます。
分類の信頼度にも閾値を置きます。 学校の様式の判定を誤ると、別の学校のモデルで読まれ、欄の対応がすべてずれます。 閾値を下回ったページは読み取りの結果を使わず、店長に回します。
指定品目の表とメーカーのサイズの表は、店の共有のフォルダの表計算のファイルを Python で読みます。照合の順は、学校が先、品目が後、サイズが最後です。
AIへ渡す前に整形する
- ページの向きと白紙の確認 … 上下が逆のページを直し、白紙のページを除きます
- 解像度の確認 … 取り出す文字の高さの下限は、1024×768の画像で12ピクセル(150dpiで約8ポイントの文字)とされています。採寸値の欄は小さいので、300dpiに固定します
- ページ数とサイズの確認 … PDF は最大2,000ページ、有料(S0)のレベルで500MBまでとされています
- 裏面の確認 … 注文票の裏に保護者のメモが書かれていることがあります。裏面は読み取りの対象にせず、画像として保存だけします
- 重複の確認 … 同じ学校・同じ生徒の名前・同じ日の注文票が既にあれば、上書きせずに店長に確かめます
2番目を軽く見ないでください。 採寸値は「82.5」のように小数点を含み、小数点が読めないと「825」になります。 解像度が足りないと、小数点は最初に消えます。
AIに処理させる
させるのは、注文票を学校の様式に振り分け、その学校の枠に書かれた値と丸印を読み、信頼度を返すことだけです。 照合と判定は Python が規則で行います。
| 読むもの | 読み方 | 決められないときの扱い |
|---|---|---|
| 学校の様式 | 分類モデルの docType | 信頼度が閾値を下回れば、ページごと unclassified |
| 採寸値 | 数字を文字列のまま(小数点を含む) | 信頼度が低ければ low_confidence |
| サイズ(丸印) | 品目ごとの選択マークのどれに印があるか | 2つ以上に印、または消した跡があれば ambiguous |
| サイズ(数字) | 書かれた数字を文字列のまま | 信頼度が低ければ low_confidence |
| 数量 | 数字を文字列のまま | 空欄なのにサイズに印があれば missing |
| 裾上げの寸法 | 数字を文字列のまま | 裾上げの要る品目で空欄なら missing |
Python が行う照合は、次の4つです。
| 照合 | 条件 | 結果 |
|---|---|---|
| 指定品目 | その学校の指定品目の表に無い品目に書き込みがある | not_designated |
| サイズの範囲 | その品目で選べるサイズに無い | invalid_size |
| 採寸値との差 | 採寸値から引いたサイズと、選ばれたサイズが2段階以上離れている | size_gap |
| 裾上げ | 裾上げの要る品目で、股下か裾上げの寸法が無い | missing |
size_gap を「2段階以上」にしているのは、1段階は普通のことだからです。 成長を見込んで1サイズ大きめを選ぶのはよくあることで、そこまで店長に回すと、確認の一覧が埋まって本当の書き違いが埋もれます。 何段階からを回すかは、店の経験で決めて設定に持ちます。
size_gap は「誤り」ではなく「確かめる理由」です。 体格に合わせて保護者が意図して選ぶこともあります。この構成はサイズを直さず、店長が採寸に立ち会った記憶と保護者への確認で決めます。
| させないこと | 理由 |
|---|---|
| 採寸値からサイズを決めて書き換える | 成長の見込みと保護者の希望は採寸値に出ない |
| 読めない採寸値を前後の欄から推し量る | 小数点の有無だけで1サイズ以上違う |
| 指定品目にない品目を、似た品目に寄せる | 別の学校の品目を発注することになる |
| 裾上げの寸法を股下から計算して埋める | 裾上げの好みは保護者が決める |
| 信頼度の付け直し | 読み取りが返した値をそのまま使う |
指示内容を固定する
この構成では生成AIを使わないため、プロンプトの代わりに分類モデルとテンプレート モデルの学習の指示を示します。
【分類モデル】
- 区分:25校それぞれの様式(学校のコードを区分の名前にする)+「その他」
- 各区分に、実際に書かれた注文票を5枚以上(年に数枚しか来ない学校も5枚そろえる)
- 「その他」には、体操服だけの注文票、別の店の書類、
旧様式の注文票など、振り分けたくないものを入れる
- 学校の様式が改訂されたら、新しい様式の見本を足して学習し直す
(v4.0 は既存の分類モデルに見本や区分を足す学習に対応)
【学校ごとのテンプレート モデル】
- 学習のモード(buildMode)は template
- 1校につき、ラベル付けした見本を5枚以上
- 次のばらつきを入れる
・サイズを丸印で付けたものと、数字で書いたもの
・採寸係と保護者の筆跡が混ざったもの
・裾上げの欄が空欄のもの、品目が1つだけのもの
- フィールドの名前は学校をまたいで同じ名前にそろえる
(身長、胸囲、胴囲、股下、品目ごとのサイズと数量、裾上げ)
- 1つの枠を2つのフィールドに割り当てない(重なり合うフィールドは使えない)
【合成】
- 分類モデルの区分と、学校ごとのテンプレート モデルを対応づけて合成する
- 「その他」の区分は、どのモデルにも対応づけない
- 分類の信頼度の閾値を決める
「フィールドの名前を学校をまたいでそろえる」が、照合を1つにする工夫です。 学校ごとに様式は違っても、読み取った結果の項目名がそろっていれば、Python の照合は学校に関係なく同じ処理で済みます。 違うのは、照合に使う指定品目の表だけになります。
「その他」の区分をどのモデルにも対応づけないのは、読ませないためです。 公式の説明では、合成モデルは信頼度の閾値を置いたり、区分をどの抽出モデルにも対応づけなかったりすることで、特定の文書の種類を無視できるとされています。振り分けたくない書類を、無理に学校のモデルで読ませないための設定です。
判定の基準値は、処理の側の設定として持ちます。 初期値は、分類の信頼度の閾値0.85、採寸値とサイズの数字の信頼度の下限0.85、選択マークの下限0.80とし、最初の1か月で店長が直した欄の分布を見て見直します。
出力形式を固定する
注文票1枚ごとに、次の形のJSONを作ります。
{
"sheet_id": "S2-20261015-012",
"school": "C07",
"class_conf": 0.96,
"student": { "grade": "1", "name": "", "contact": "" },
"measures": {
"height": { "value": "158", "conf": 0.97 },
"chest": { "value": "82.5", "conf": 0.93 },
"waist": { "value": "68", "conf": 0.95 },
"inseam": { "value": "", "conf": 0.90 }
},
"items": [
{ "item": "ブレザー", "size": "165A", "qty": "1", "conf": 0.94,
"suggested_size": "160A", "check": "ok" },
{ "item": "スラックス", "size": "W70", "qty": "2", "conf": 0.91,
"hem": "", "check": "missing" }
],
"needs_review": true
}
1つ目の理由は、品目ごとに check を持てることです。 店長が見るのは、ok 以外の品目だけになります。
2つ目は、suggested_size を並べて持つことです。 採寸値から引いたサイズを、選ばれたサイズとは別の項目に入れ、size は書き換えません。 1段階の差は ok のまま、2段階以上で size_gap になります。
3つ目は、class_conf を残すことです。 学校の振り分けの信頼度が低い注文票は、品目の照合が正しくても、欄の対応がずれている可能性があります。 店長の確認の一覧では、この値の低い順に並べます。
発注の一覧の下書きは、確かめ終わった品目をメーカーごと・品番ごと・サイズごとに集計し、生徒ごとの引き渡しの票には学校・学年・名前・品目・サイズ・数量・裾上げを並べます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 複合機 → Blob Storage | 複合機の保存先を店舗ごとのフォルダにする | その日の分をまとめた PDF |
| Azure Functions | Blob Storage への保存を起点に動く | 合成モデルの呼び出し、照合、下書きの作成 |
| Azure AI Document Intelligence | REST API(2024-11-30) | 分類と学校ごとの読み取り |
| 指定品目の表・サイズの表 | 共有のフォルダの表計算のファイルを読む | 照合の元 |
| 発注の一覧 | メーカーごとの下書きのファイルを作る | 事務が確かめてメーカーへ送る |
| 販売管理のシステム | 受注の取り込み用のファイルを作る | 事務が取り込む |
メーカーへの送信は、事務が下書きを確かめてから行います。 発注は取り消しのきかないことが多く、誤った発注は在庫と交換の手間になって戻ってきます。
指定品目の表とサイズの表は読むだけです。 表に無い品目やサイズが出ても書き足さず、学校やメーカーの改訂を店長が確かめてから表を直します。
人が確認する
店長が見るのは、確認の一覧で印の付いた注文票と品目だけです。 印の無い注文票は、学校ごとの枚数を流し見ます。
unclassifiedを先に見る … 学校の振り分けができなかったページ。画像を見て学校を決め、その学校のモデルで読み直しますmissingを見る … 裾上げの寸法と数量の書き漏れ。採寸の記録が手元にあれば補い、無ければ保護者に電話しますsize_gapを見る … 採寸値と選ばれたサイズを並べて見ます。採寸に立ち会った店長が、保護者の希望を覚えていればそのまま、迷えば電話しますnot_designatedとinvalid_sizeを見る … 別の学校の品目や、選べないサイズ。保護者に確かめます- 直した内容を記録する … どの欄を、何から何に直したか、保護者に確かめたかを残します
3番目は、直すことより「確かめた」と残すことが大事です。 意図して大きめを選んだ保護者に何度も電話をすると、かえって手間になります。確かめた結果「そのまま」なら、その記録が次の買い替えのときの参考になります。
目標は、400枚をならして1枚1.5分です。 印の付く注文票が3割前後という想定で、それより多い日は、学校の振り分けの閾値か、スキャンの設定を疑います。
例外に対処する
| 起きること | 対応 |
|---|---|
| 学校の振り分けの信頼度が低い | unclassified。読み取りの結果を使わず、店長が学校を決めて読み直す |
| 学校の様式が改訂された | 旧様式は「その他」に入りやすい。新しい様式の見本で学習し直す |
| 新しい取引校が増えた | 分類モデルに区分を足し、その学校のテンプレート モデルを作って合成し直す |
| 1枚に兄弟2人分が書かれている | 様式の想定外。店長が手で分ける |
| 採寸値の小数点が読めない | low_confidence。採寸の記録と照らす |
| 指定品目の表が古い | not_designated が急に増える。学校の改訂を確かめて表を直す |
| Document Intelligence が応答しない | PDF を受付のコンテナーに残す。処理済みへ移すのは成功したときだけ |
| 同じ注文票を二度スキャンした | 学校・名前・日付で照合し、二重に発注の下書きを作らない |
上から3行は、取引校の変化に伴う作業です。 学校の制服のモデルチェンジや新しい取引校は、分類とテンプレートの両方を直す必要があります。 v4.0 の分類モデルは、既存のモデルに見本や区分を足す学習に対応しているので、全部を作り直さずに済みます。
記録を残す
- 元の PDF と、ページごとの画像、スキャンした日時と店舗
- 分類と読み取りの JSON の全文と、使った合成モデル・分類モデルの ID と API のバージョン
- 照合の結果(
check、suggested_size)と、そのとき参照した指定品目の表とサイズの表の版 - 店長が直した記録と、保護者に確かめた記録
- メーカーへ送った発注の一覧と、送った日時
- 納品の後に交換になった品目と、その注文票の判定の記録
3つ目で表の版を残すのは、学校の指定品目が年度で変わるためです。 版が残っていないと、not_designated だった理由を後から説明できません。
最後の行が、この構成の精度を測る物差しです。 ok で流した品目から交換が出たら、その品目の信頼度と、採寸値とサイズの差を見ます。同じ型が続くなら、閾値か size_gap の段階を見直します。
04実装レベルの3段階
最小構成では、店の流れは変わりません。 上位5校だけで、この注文票が読めるかを確かめる段階です。 半自動化で、1枚7.5分が4分程度になります。 振り分けと読み取りは自動になりますが、照合と発注の一覧への書き分けが手作業で残ります。本格構成で照合と下書きが自動になり、1.5分になるのがこの記事の想定です。 25校を一度にそろえる必要はありません。 注文票の多い学校から順にモデルを作り、モデルの無い学校は「その他」として今までどおり手で打ちます。 学校が増えるほど、手で打つ枚数が減っていきます。
05工数削減シミュレーション
導入後 400件 × 1.5分 ÷ 60 = 10 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 地域の複数の中学校・高校の指定販売店として制服・体操服を扱い、学校ごとに違う様式の採寸・注文票を手書きで受け付けて、事務がメーカーごとの発注の一覧に打ち直している学生服の販売店。転入生・買い替え・夏服と冬服の追加注文で、採寸と注文が毎月続く場合。学校ごとの指定品目とメーカーのサイズの表が手元にある場合。
- 注文をウェブの申込に切り替え済みで、紙の注文票が無い場合。取引校が1〜2校で、様式も品目も少ない場合。採寸の結果を採寸係がタブレットで直接入力している場合。なお、成長を見込んでどのサイズを選ぶか、指定品目以外の注文を受けるかの判断は、この構成では代替できません。
07最小構成で試す方法
- 注文票の多い上位5校を選び、各校の注文票を15枚ずつ集める(うち数枚は、交換になった注文の注文票を入れる)
- その注文票の、発注の一覧に入った内容を書き出しておく(これを正解とする)
- Document Intelligence Studio で、各校10枚にラベルを付けて学校ごとのテンプレート モデルを学習させる
- 残りの各校5枚を、学校のモデルで読み取らせ、正解と突き合わせる
- 採寸値の小数点、サイズの丸印、裾上げの寸法が合っているかを見る
最初は分類モデルを作らず、学校が分かっている注文票で試します。 読み取りそのものがうまくいくかを先に確かめ、分類と合成は、読める見込みが立ってから足します。
| 出てきた内容 | 判断 |
|---|---|
| 読み違えた欄が、すべて信頼度の低い側にあった | 分類と合成に進む |
| 採寸値の小数点が落ちる | スキャンの設定が先。 解像度を見直す |
| 丸印の読み違いが多い | 丸印の見本を足す。丸の大きさのばらつきを入れる |
| 学校によって正確さが大きく違う | その学校の見本を足す。様式の枠の細さを疑う |
交換になった注文票を必ず入れてください。 当時の目視で見落とした食い違いを、この照合で拾えるかが、構成を進めるかどうかの判断材料です。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 学校の振り分けを誤り、欄の対応がすべてずれる | 分類の信頼度に閾値を置く。 下回ったら読み取りの結果を使わない |
| 振り分けたくない書類が学校のモデルで読まれる | 「その他」の区分を作り、どのモデルにも対応づけない |
| 1サイズ大きめまで店長に回して一覧が埋まる | size_gap の段階を店の経験で決める |
| 採寸値の小数点が落ちる | 300dpi に固定する |
| 採寸値からサイズを直したくなる | suggested_size は別の項目。 size を書き換えない |
| 裾上げの寸法を股下から埋めたくなる | 裾上げの好みは保護者が決める。missing で回す |
| 学校の改訂で精度が落ちる | 新しい様式の見本で学習し直す。分類にも見本を足す |
| 指定品目の表が古いまま | not_designated が急に増えたら、まず表を疑う |
| フィールドの名前が学校ごとに違う | 名前をそろえる。 照合の処理を1つにする |
上の2行が、この構成の失敗のほとんどです。 振り分けを誤ると、その後の読み取りと照合はすべて別の学校の枠で行われます。読み取りの信頼度が高くても、振り分けの信頼度が低ければ使わないという順を守ってください。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 生徒の名前、学校と学年、身長・胸囲・胴囲などの採寸値、保護者の名前と電話番号です。18歳未満の生徒の体格の情報で、とくに慎重に扱う情報です。
- 採寸値の閲覧を限る … 注文票の画像と JSON の閲覧は、店長と事務に限ります。採寸値は発注と引き渡しに要る範囲だけで使い、ほかの目的には使いません
- 保存の期間を決める … 注文票の画像と読み取りの結果を、いつまで残すかを決めます。交換や買い替えの参考になる期間を過ぎたら削除します
- 処理する場所を決める … Document Intelligence のリソースを作る地域を、店の個人情報の取り扱いの決まりに照らして選びます。国内の地域を選べるかを最初に確かめます
- 学習の見本の扱いを決める … 見本には実際の生徒の名前と採寸値が載っています。学習の後に保管するか削除するかを決め、ラベル付けをする人を限ります
- 生成AIの機能を組み込まない … 読み取りと照合は決まった規則で行い、採寸値や生徒の情報を生成AIのサービスに渡しません。 18歳未満が関わる情報を生成AIで扱う場合の利用の条件は、サービスごとに確かめる必要があります
- 保護者への連絡を自動で送らない … 確かめるのは店長の電話です。自動の通知は作りません
誤りが起きた場合のリスクは、着られないサイズを発注することと、着る日までに届かないことの2つです。 前者は振り分けとサイズの照合で、後者は裾上げの書き漏れの検出と翌朝の確認で防ぎます。どちらも、生徒が制服を着る日から逆算して、発注の前に気づけるかで重さが変わります。
10まず何から始めるか
1週目:2つの表を作る
注文の多い上位5校について、指定品目の表(品目、メーカー、品番、選べるサイズ、裾上げの要否)と、メーカーのサイズの表(サイズと身長・胸囲・胴囲の範囲)を作ります。あわせて、size_gap として回す段階を店長で決めます。
2週目:上位5校で試す
各校15枚の注文票を集め、10枚で学校ごとのテンプレート モデルを学習させ、5枚で読み取りを確かめます。採寸値の小数点とサイズの丸印が読めているかを最優先で見ます。
3週目:分類モデルと合成モデルを作る
上位5校と「その他」の区分で分類モデルを学習させ、学校ごとのテンプレート モデルと合成します。分類の信頼度の閾値を決めます。
4週目:スキャンから確認の一覧までをつなぐ
Blob Storage への保存を起点に合成モデルを呼び、空欄と信頼度の低い欄を店長の確認の一覧に出すところまで作ります。事務は今までどおり打ち込みながら、一覧と見比べます。
2か月目: 指定品目とサイズの表との照合を足し、学校を10校に増やします。3か月目以降: 発注の一覧と引き渡しの票の下書きを足し、1枚7.5分が何分になったかを実測します。交換になった品目を毎月見て、閾値と size_gap の段階を見直す流れができた時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
カスタム テンプレート モデルが決まった見た目の様式からレイアウトの手がかりで値を取り出し、キーと値・選択マーク・表・署名・選択した領域に対応し、重なり合うフィールドに対応しないこと。様式が変わると正確さが下がり、様式ごとに5枚以上の見本でモデルを作って合成すること。入力の条件(PDF と TIFF は最大2,000ページ、S0 で500MB、文字の高さの下限が1024×768の画像で12ピクセル)。学習のモードが template であること | Microsoft Learn: Custom template document model | 2026-10-15 |
カスタム分類モデルの学習に2つ以上の区分と区分ごとに5枚以上の見本が要ること。v4.0 で splitMode の既定が none で、perPage で1ページずつ分類すること。学習の区分に無い文書が見込まれるなら閾値を置くか「other」の区分を作ること。v4.0 で既存の分類モデルに見本や区分を足す学習に対応すること。v4.0 で複数の言語の文書で学習できること | Microsoft Learn: Custom classification model | 2026-10-15 |
| v4.0(2024-11-30)の合成モデルが明示的に学習させた分類モデルを使い、信頼度による振り分けの制御や、区分を抽出モデルに対応づけないことで特定の文書を無視できること。1つの合成モデルに最大500のカスタム モデルを割り当てられること。課金が抽出モデルで読んだページ数と、入力のすべてのページの分類によること | Microsoft Learn: Composed custom models | 2026-10-15 |
| カスタム テンプレート モデルの手書きの対応言語と、v4.0 のカスタム分類モデルの対応言語に日本語が含まれること | Microsoft Learn: Language and locale support for custom models | 2026-10-15 |
指定品目、選べるサイズ、裾上げの扱いは、各学校とメーカーの決まりに従ってください。 本記事は Microsoft Learn で確認できた範囲の仕様だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1704)についてのご相談はこちらから。
