Media > AI活用ユースケース > 営業 > 生協が組合員から回収する手書きの注文用紙を Azure AI Document Intelligence で読み、商品番号と数量を注文データに転記して、読み取りの怪しい欄を確認に回す

生協が組合員から回収する手書きの注文用紙を Azure AI Document Intelligence で読み、商品番号と数量を注文データに転記して、読み取りの怪しい欄を確認に回す

実装ステータス:構成例 技術的に実現可能な構成として設計したもの。自社未検証

配達担当が回収した手書きの注文用紙を読み取り、商品番号と数量を注文データに転記します。その週の企画に無い番号や、読み取りに自信のない欄だけを事務の確認に回します。

サマリー
AIサービス
AWS Textract/Azure AI/Google Document AI
連携・自動化
Google Apps Script/Make/Power Automate/Python
対象業界
EC/その他/小売
対象部門
営業
対象業務
データ入力・転記/内容確認・チェック
主な課題
人手が足りない/入力作業が多い/確認ミスが多い
AIで行う処理
読み取り(OCR)
主な効果
入力漏れ削減/対応スピード向上/工数削減
導入難易度
★★☆☆☆
実装レベル
本格構成
費用感
API連携(中)
人間の確認
条件付き
現在工数
120h/月
AI導入後
40h/月
想定削減
67%
年間削減
960h
モデル条件による試算値です。実在企業の実績ではありません。

01導入前 / 導入後の業務フロー

導入前(Before)
  1. 配達担当が配達のときに注文用紙を回収し、コースごとの袋に入れてセンターへ持ち帰る
  2. 事務の担当が袋を開け、組合員コードの順に並べる
  3. 受注システムの入力画面を開き、組合員コードを打ち込む
  4. 用紙を見ながら、商品番号と数量を1行ずつ打ち込む
  5. その週の企画に無い番号でエラーが出たら、カタログをめくって似た番号を探す
  6. 見つからない、または字が読めないものは付箋を貼り、配達担当に組合員への確認を頼む
  7. 打ち込みが終わった用紙は、別の担当が画面と読み合わせる(全件はできず、行の多い用紙を中心に)
導入後(After)
  1. 人事務の担当が回収した注文用紙を、センターの複合機でコースごとにまとめてスキャンする
  2. 自動保存をきっかけに処理が動き、PDFを1枚ずつに分け、向きと解像度を確かめる
  3. 自動Document Intelligence のカスタム テンプレート モデルが、組合員コード・企画の回・40行の商品番号と数量・「今週は注文しない」の印と、それぞれの信頼度を返す
  4. 自動組合員コードを組合員の台帳と照らし、企画の回がその週のものかを確かめる
  5. 自動行ごとに、商品番号をその週の企画の一覧と照らし、数量を購入の上限と照らす
  6. 自動行ごとに `ok` / `low_confidence` / `not_in_catalog` / `over_limit` / `ambiguous` を付け、`ok` だけの用紙は注文データの取り込みファイルに書き出す
  7. 人事務の担当が、`ok` 以外の行を、用紙の該当部分の画像と並べて確かめ、直す
  8. 人確かめても決められない行は、配達担当に組合員への確認を頼む
  9. 自動確かめた用紙の注文データを取り込みファイルに書き出し、受注システムに取り込む
各工程の詳しい説明を読む
  1. 配達担当が配達のときに注文用紙を回収し、コースごとの袋に入れてセンターへ持ち帰る
  2. 事務の担当が袋を開け、組合員コードの順に並べる
  3. 受注システムの入力画面を開き、組合員コードを打ち込む
  4. 用紙を見ながら、商品番号と数量を1行ずつ打ち込む
  5. その週の企画に無い番号でエラーが出たら、カタログをめくって似た番号を探す
  6. 見つからない、または字が読めないものは付箋を貼り、配達担当に組合員への確認を頼む
  7. 打ち込みが終わった用紙は、別の担当が画面と読み合わせる(全件はできず、行の多い用紙を中心に)

(a)読み違いは、届いてから分かる。 1と7、4と9、0と6は、急いで書かれた数字ほど見分けにくくなります。番号を1桁読み違えても、それが企画に存在する別の商品の番号なら、受注システムはエラーを出しません。 組合員の手元に違う商品が届き、返品と再配達の手配が発生します。

(b)エラーが出たときの探し方が、担当者ごとに違う。 5番目で似た番号を探すとき、ある担当者は「1桁違い」を探し、別の担当者は「前の週に頼んだ商品」を探します。どちらで探したかは記録に残らず、見つけた番号が正しかったかも分かりません。

(c)締切前の2日間に、打ち込みと確認が重なる。 1枚3分でも、600枚を2日間でさばけば30時間で、事務の担当2名がほぼ丸2日を使います。 7番目の読み合わせは時間が残った分しかできず、忙しい週ほど確認が薄くなります。

(d)数量の書き方がばらつく。 「2」と書く組合員もいれば、「2コ」「正」の字で書く組合員もいます。人が読めば分かりますが、そのまま打ち込むと担当者によって数量の扱いが変わります。

  1. 【人】 事務の担当が回収した注文用紙を、センターの複合機でコースごとにまとめてスキャンする
  2. 【自動】 保存をきっかけに処理が動き、PDFを1枚ずつに分け、向きと解像度を確かめる
  3. 【自動】 Document Intelligence のカスタム テンプレート モデルが、組合員コード・企画の回・40行の商品番号と数量・「今週は注文しない」の印と、それぞれの信頼度を返す
  4. 【自動】 組合員コードを組合員の台帳と照らし、企画の回がその週のものかを確かめる
  5. 【自動】 行ごとに、商品番号をその週の企画の一覧と照らし、数量を購入の上限と照らす
  6. 【自動】 行ごとに ok / low_confidence / not_in_catalog / over_limit / ambiguous を付け、ok だけの用紙は注文データの取り込みファイルに書き出す
  7. 【人】 事務の担当が、ok 以外の行を、用紙の該当部分の画像と並べて確かめ、直す
  8. 【人】 確かめても決められない行は、配達担当に組合員への確認を頼む
  9. 【自動】 確かめた用紙の注文データを取り込みファイルに書き出し、受注システムに取り込む

7番目が、この設計の分かれ目です。人が見るのは「行」で、「用紙」ではありません。 1枚に8行書かれていて1行だけが怪しければ、人が見るのはその1行です。用紙ごと人に回す設計にすると、ほとんどの用紙に1行は怪しい行があるので、結局全部を見ることになります。

6番目で ok の用紙を人に見せずに流すのは、信頼度・企画の一覧・購入の上限の3つを重ねているからです。 それでも残る読み違いは、第7章で残す返品の記録から拾います。

02今回想定するシステム構成

構成図
注文用紙(紙・手書き。組合員コードと企画の回は印字)
   │  センターの複合機でコースごとにスキャン(300dpi、PDF)
   ▼【トリガー】Azure Blob Storage の受付のコンテナーへの保存
Python(Azure Functions)
   ├──▶ ページ分け、向きと解像度の確認
   ▼
Azure AI Document Intelligence(カスタム テンプレート モデル)
   │   組合員コード・企画の回・40行の商品番号と数量
   │   「今週は注文しない」の選択マーク、フィールドと表のセルの信頼度
   ▼
Python ── 組合員の台帳、その週の企画の一覧、購入の上限と照合
   │   ① 信頼度の判定  ② 企画の一覧との照合  ③ 数量の上限
   ▼
判定(ok / low_confidence / not_in_catalog / over_limit / ambiguous)
   ▼
【事務の担当が ok 以外の行だけ画像と並べて確認】
   ▼
注文データの取り込みファイル → 受注システム
役割想定する製品代替候補
OCRAzure AI Document Intelligence(カスタム テンプレート モデル)Google Document AI(Form Parser)。AWS Textract は日本語の手書きを読めないため対象外
連携Python(Azure Functions。保存を起点に読み取りを呼び、結果を照合に渡す)Power Automate、Make
差異計算Python(企画の一覧・購入の上限との照合、行ごとの判定)Google Apps Script
保管Azure Blob Storage(用紙の画像と読み取りの結果)社内のファイルサーバー
確認の画面社内の確認用の画面(行ごとに画像の切り出しと読み取りの値を並べる)共有のスプレッドシート

受注システムは新しく足すものではありません。 インターネット注文と同じ取り込みの経路に、確かめた注文データを渡すだけで、直接書き込む経路は作りません。

生成AIは使いません。 商品番号は5桁の数字、数量は1〜2桁の数字で、言い換えや要約の対象がありません。読めない数字を補う仕組みは、そのまま誤配送の仕組みになります。

読み取りの中心は、カスタム テンプレート モデルです。 公式の説明では、テンプレート モデルはレイアウトの手がかりを使って値を取り出し、決まった見た目の様式を持つ、構造のはっきりした文書に向くとされています。注文用紙は生協で1つに決まった様式で、どの組合員の用紙でも、商品番号の枠は同じ位置にあります。 この性質にいちばん合うのがテンプレート モデルです。

テンプレート モデルが扱える項目は、キーと値、選択マーク、表、署名、選択した領域です。 40行の商品番号と数量は表のフィールドとして、「今週は注文しない」は選択マークとして取ります。重なり合うフィールドには対応していないとされているので、1つの枠を2つのフィールドに割り当てないようにラベルを付けます。

日本語の手書きも対象です。 カスタム テンプレート モデルの対応言語の表では、手書きの文字の対応言語に日本語が含まれています。 この構成で読む手書きは数字が中心ですが、数量の欄に「2コ」のような書き込みがあることも想定しておきます。

03どうやって実装するのか

Step1

処理の起点を決める

スキャンした PDF が Blob Storage の受付のコンテナーに保存されたことを起点にします。 センターの複合機の保存先を受付のコンテナーにつながるフォルダにしておき、コースごとに1つの PDF にまとめてスキャンします。保存されると Azure Functions の処理が動き、PDF を用紙1枚ずつに分けて読み取りに回します。

夜にまとめて動かすのではなく、保存のたびに動かします。 午前にスキャンしたコースの確認を、午後のスキャンの前に終わらせられることが効きます。

処理が終わった PDF は処理済みのコンテナーへ移します。移すのは、全ページの読み取りと照合が終わったときだけにします。 途中で止まった PDF は受付のコンテナーに残り、残っている数がそのまま未処理の数になります。 夕方には配達のコースの一覧と突き合わせ、PDF が届いていないコースを一覧にします。

Step2

入力データを集める

データ中身取得元
注文用紙の PDFコースごとにまとめてスキャンしたもの。スキャンした日時とコースBlob Storage の受付のコンテナー
読み取り結果組合員コード、企画の回、40行の商品番号と数量、選択マークの状態、フィールド・単語・表のセルの信頼度Azure AI Document Intelligence
組合員の台帳組合員コード、氏名、配達のコースと曜日、紙の注文の利用の有無組合員の台帳(毎晩の書き出し)
その週の企画の一覧企画の回、商品番号、商品名、規格、1回あたりの購入の上限受注システムの企画の書き出し
前週までの注文組合員ごとの直近の注文の商品番号と数量受注システムの注文の書き出し

質を決めるのは、その週の企画の一覧です。 商品番号は企画の回ごとに割り当てが変わることがあり、先週の一覧で照合すると、読み違えた番号が ok になります。

前週までの注文は、確認の材料として画面に出すだけです。 前週の注文から番号を埋めることはしません。

Step3

データの取得方法を決める

読み取りは、Azure Functions から Document Intelligence の REST API でカスタム テンプレート モデルを呼びます。API のバージョンは 2024-11-30(v4.0 の GA)に固定します。 カスタム モデルのフィールドに単語の信頼度が含まれるのも、表・行・セルの信頼度が返るのも、このバージョンからとされています。

取るものどこから何に使うか
組合員コード・企画の回テンプレート モデルのフィールド(印字)組合員の特定、照合に使う企画の一覧の特定
商品番号・数量表のフィールド(40行 × 2列)注文データの行
「今週は注文しない」選択マークのフィールド注文なしの用紙を分ける
フィールドの信頼度各フィールドの confidence欄ごとの判定
単語の信頼度ページの単語の confidence数字1文字ずつの読みの確からしさ
表・行・セルの信頼度表のフィールドの信頼度確かめる行の絞り込み

信頼度は2つの層を合わせて見ます。 公式の説明では、フィールドの信頼度は取り出した値の位置についての確からしさを表し、文字そのものの確からしさは単語の信頼度として別に返るとされています。2つのうち低いほうを、その欄の信頼度として扱います。

表の信頼度は、表全体から順に見ます。 公式の説明では、表全体、行、セルの順に上から見ていくことが勧められ、決まった行数の表ではセルの信頼度を見るだけでもかなりのことが分かるとされています。注文用紙は40行の決まった表なので、セルの信頼度を中心に、行の信頼度で行ごとの漏れを補います。

組合員の台帳と企画の一覧は、毎晩の書き出しのファイルを Python で読みます。照合の順は、企画の回が先、商品番号が後です。 企画の回を取り違えると、それ以降の照合がすべてずれます。

Step4

AIへ渡す前に整形する

  1. ページ分けと向きの確認 … コースごとの PDF を1枚ずつに分け、上下が逆のページを直します。裏返しでスキャンされた白紙のページは除きます
  2. 解像度の確認 … 取り出す文字の高さの下限は、1024×768の画像で12ピクセル(150dpiで約8ポイントの文字)とされています。数量の枠は小さいので、複合機は300dpiに固定します
  3. 画像の寸法の確認 … 50×50から10,000×10,000ピクセルの間である必要があります
  4. 様式の確認 … 読み取り結果の文書の種類の信頼度が低い用紙は、古い様式や別の用紙が混ざった可能性があるので、読み取りの結果を使わずに担当へ回します
  5. 重複の確認 … 同じ組合員・同じ企画の回の用紙が既に処理されていれば、上書きせずに担当に確かめます

2番目を軽く見ないでください。 複合機の既定の設定は文書の読みやすさに合わせてあり、枠の細い線と数字が重なると、数字の一部が線に吸収されます。 1と7の見分けがつかない原因の多くは、組合員の書き方ではなくスキャンの設定です。

4番目は、テンプレート モデルの性質から来ています。 公式の説明では、テンプレート モデルは決まった見た目の様式に頼るため、様式が変わると正確さが下がるとされています。カタログの改訂で用紙の様式が変わった週は、古い用紙と新しい用紙が混ざります。

Step5

AIに処理させる

させるのは、注文用紙の決まった枠に書かれた数字を読み、欄ごとの信頼度を返すことだけです。 企画の一覧との照合、数量の上限、行ごとの判定は、Python が決まった規則で行います。

読むもの読み方決められないときの扱い
組合員コード印字の数字をそのまま台帳に無ければ用紙ごと ambiguous
企画の回印字の数字をそのままその週の回でなければ用紙ごと担当へ
商品番号手書きの5桁を文字列のまま5桁でない、または信頼度が低ければ low_confidence
数量手書きの数字を文字列のまま数字以外の文字があれば ambiguous
「今週は注文しない」選択マークの状態印があるのに商品番号も書かれていれば ambiguous

Python が行う行ごとの判定は、次の順で決めます。

順条件判定
1商品番号も数量も空欄行として扱わない
2片方だけが空欄ambiguous
3商品番号か数量の信頼度が基準を下回るlow_confidence
4商品番号がその週の企画の一覧に無いnot_in_catalog
5数量がその商品の購入の上限を超えるover_limit
6上のどれにも当たらないok

3番目を4番目より先に置くのが、この判定の要です。 信頼度が低い番号を先に照らすと、たまたま企画にある番号に読めた行が ok になります。

not_in_catalog の行には、候補を並べます。 読み取った番号と1桁だけ違う、その週の企画の番号を最大3つまで出し、それぞれの商品名を添えます。選ぶのは担当で、候補を自動で採用することはしません。 第3章の(b)の探し方の違いを、候補の出し方として1つにそろえます。

させないこと理由
読めない番号を企画の番号に寄せる組合員が頼んでいない商品が届く
前週の注文から番号や数量を埋める毎週同じものを頼むとは限らない
「2コ」「正」を数に直して確定させる書き方の解釈は担当がそろえて決める
購入の上限を超えた数量を上限に丸める組合員の意図が分からないまま数量が変わる
信頼度の付け直し読み取りが返した値をそのまま使う

4行目は、善意から起こりやすい失敗です。 上限が3の商品に「5」と書かれていても、「3」の読み違いか、上限を知らずに書いたのかは用紙を見ないと決められません。

Step6

指示内容を固定する

この構成では生成AIを使わないため、プロンプトの代わりにテンプレート モデルの学習の指示と、ラベル付けの決まりを示します。

【見本の集め方】
- 現行の様式の注文用紙を、実際に組合員が書いたものから集める
- ラベル付けした見本は最低5枚。できれば30枚程度を、次のばらつきが入るように選ぶ
  ・行が1〜2行だけの用紙と、40行近く埋まった用紙
  ・数字を枠からはみ出して書いた用紙、二重線で書き直した用紙
  ・「今週は注文しない」に印がある用紙
  ・鉛筆で書かれた薄い用紙、ボールペンで書かれた用紙
- スキャンの設定は本番と同じ300dpiにそろえる

【ラベルの決まり】
- member_code ...... 組合員コードの印字の枠
- issue_no ......... 企画の回の印字の枠
- no_order ......... 「今週は注文しない」のチェック欄(選択マーク)
- order_lines ...... 表のフィールド。40行固定。列は item_no と qty
- item_no .......... 商品番号の5つの枠をまとめて1つの値として囲む
- qty .............. 数量の枠。枠の外へはみ出した書き込みも含めて囲む
- 1つの枠を2つのフィールドに割り当てない(重なり合うフィールドは使えない)
- 空欄の行もラベルの対象にし、値が無いことを学ばせる

【学習と評価】
- 学習のモード(buildMode)は template
- 学習の結果の推定の正確さは80%以上を目安にする。
  注文は届け先と請求に直結するので、100%に近づくまで見本を足す
- 様式の改訂があったら、新しい様式で5枚以上の見本を作り、学習し直す

「空欄の行もラベルの対象にする」を外さないでください。 公式の説明では、任意の項目の空欄について、学習の見本に空欄がどのくらい含まれるかによって、値が無いという予測の信頼度も変わるとされています。注文用紙は40行のうち大半が空欄なので、ここを外すと空欄の扱いが不安定になります。

判定の基準値は、処理の側の設定として持ちます。 初期値は、商品番号の信頼度の下限0.90(フィールドと単語の低いほう)、数量の下限0.85とし、最初の1か月で、直した行の信頼度の分布と返品の記録を見て見直します。

Step7

出力形式を固定する

用紙1枚ごとに、次の形のJSONを作ります。

{
  "sheet_id": "2026-W42-C07-0153",
  "member_code": "1048831",
  "issue_no": "42",
  "no_order": false,
  "sheet_status": "has_review | all_ok | no_order | form_mismatch",
  "lines": [
    { "row": 1, "item_no": "31207", "qty": "2",
      "item_conf": 0.98, "qty_conf": 0.97,
      "check": "ok", "item_name": "", "candidates": [] },
    { "row": 2, "item_no": "47195", "qty": "1",
      "item_conf": 0.71, "qty_conf": 0.95,
      "check": "low_confidence", "item_name": "",
      "candidates": ["17195", "41195"] }
  ],
  "reviewed_by": "",
  "reviewed_at": ""
}

1つ目の理由は、行ごとに check を持てることです。 用紙の単位ではなく行の単位で判定を持つので、確認の画面には ok 以外の行だけを出せます。

2つ目は、読み取った値と直した値を分けて残せることです。 item_no は読み取ったままの値で、担当が直したら別の項目に書き、元の値は消しません。 どの数字がどの数字に読み違えられやすいかは、この差から分かります。candidates は担当が選ぶための材料で、item_no に自動で入ることはありません。

取り込みファイルには、確かめ終わった行だけを、受注システムの取り込みの形式(組合員コード、企画の回、商品番号、数量)で書き出します。

Step8

システムへ連携する

つなぎ先方式内容
複合機 → Blob Storage複合機の保存先を受付のコンテナーにつながるフォルダにするコースごとの PDF を置く
Azure FunctionsBlob Storage への保存を起点に動くページ分け、読み取りの呼び出し、照合
Azure AI Document IntelligenceREST API(2024-11-30)テンプレート モデルで読み取る
組合員の台帳・企画の一覧毎晩の書き出しのファイルを読む照合の元
確認の画面判定の JSON と画像の切り出しを表示担当が行ごとに確かめる
受注システム既存の取り込みの経路確かめた注文データだけを取り込む

受注システムへは、取り込みファイルを渡すところまでにします。 取り込みの操作は担当が行い、取り込んだ件数と、用紙の数・行の数が合っているかを取り込みの画面で確かめます。 自動で取り込む経路を作ると、照合の設定を誤った週にそのまま誤った注文が発注まで進みます。

組合員の台帳と企画の一覧は読むだけです。 台帳に無い組合員コードが出ても書き足さず、担当が確かめます。

Step9

人が確認する

人が見るのは ok 以外の行と、用紙ごと回された用紙だけです。 ok だけの用紙は、コースごとの件数と行の数を一覧で流し見ます。

  1. 用紙ごと回されたものを先に見る … form_mismatch(古い様式・別の用紙)と、組合員コードが台帳に無いもの。多くはスキャンの取り違えか、様式の切り替えの週の混在です
  2. low_confidence の行を、画像の切り出しと並べて見る … 数字が読めれば直し、読めなければ配達担当への確認に回します
  3. not_in_catalog の行を、候補と並べて見る … 候補の商品名と、前週の注文を見て決めます。決めきれなければ、候補を採用せずに確認に回します
  4. over_limit と ambiguous の行を見る … 数量の書き方の解釈は、生協で決めた扱い(「正」の字の数え方など)に従います
  5. 直した内容を記録する … どの行を、何から何に直したかを残します

3番目で「決めきれなければ確認に回す」を守ってください。 候補が1つしかなく、前週も同じ商品を頼んでいると採用したくなりますが、組合員に聞くほうが返品より安く済みます。 発注の締切に間に合わない行は、その週の注文から外し、組合員に伝えます。

目標は、2,400枚をならして1枚1分です。 確認の要る行が用紙の3割前後に1行ずつ出るという想定で、それより多い週は、スキャンの設定か、企画の一覧の取り込みを疑います。

Step10

例外に対処する

起きること対応
古い様式の用紙が混ざる文書の種類の信頼度が低ければ form_mismatch。読み取りの結果を使わず、担当が手で打つ
別の週の企画の回が印字されている前の週の用紙の出し忘れ。その週の注文として扱わず、担当に回す
1枚の用紙が2ページにまたがる組合員が2枚目を付けた場合。組合員コードで結び、2枚目は担当が確かめる
用紙のコピーに書かれている印字の組合員コードが読めないことがある。台帳と照らして、無ければ用紙ごと担当へ
商品番号が4桁や6桁書き漏れか書き過ぎ。low_confidence として担当へ
「今週は注文しない」に印があり、商品番号も書かれているambiguous。どちらを優先するかは組合員に確かめる
数字が枠の外に書かれているテンプレート モデルの枠の外の書き込みは取れないことがある。空欄と出た行に書き込みが無いかを、画像の縮小表示で流し見る
Document Intelligence が応答しないPDF を受付のコンテナーに残す。処理済みへ移すのは成功したときだけ
同じ用紙が二度スキャンされる組合員コードと企画の回で照合し、二重に作らない

下から3行目は、テンプレート モデルの性質から来ています。 枠の位置に頼って読むので、枠を大きくはみ出して書かれた数字は、どのフィールドにも入らないことがあります。 空欄と出た行の数が、用紙の見た目と合わないときは疑います。

Step11

記録を残す

  • 元の PDF と、用紙1枚ごとの画像、スキャンした日時とコース
  • Document Intelligence が返した JSON の全文と、使ったモデルの ID と API のバージョン
  • 行ごとの判定(check、信頼度、candidates)と、照合に使った企画の一覧の版
  • 担当が直した記録 … どの行を、何から何に直したか。確認した担当と日時
  • 配達担当に確認を頼んだ行と、その結果
  • 届けた後に返品・交換になった注文と、その行の判定の記録

3つ目で企画の一覧の版を残すのは、欠品で商品が週の途中で差し替わることがあるためです。 版が残っていないと、ok だった理由を後から説明できません。

最後の行が、この構成の精度を測るいちばん確かな物差しです。 ok で流した行から返品が出たら、その行の信頼度と、読み取った数字と、正しい数字の組み合わせを見ます。同じ組み合わせが続くなら、下限の値か学習の見本を見直します。

04実装レベルの3段階

最小構成:Studio で学習させたモデルに、用紙を手で読み取らせ、結果を書き出す / 1枚ごとの数字の読み取り
半自動化:上記+スキャンの保存を起点に読み取りを呼び、信頼度で行を分けて一覧に書き出す / 読み取りと、確認の要る行の絞り込み
本格構成:上記+企画の一覧と購入の上限との照合、候補の提示、確認の画面、取り込みファイルの書き出しまで / 転記と照合の全体

最小構成では週600枚はさばけません。 1枚ずつ Studio で読ませるので、モデルがこの用紙を読めるかを確かめる段階です。 半自動化で、1枚3分が1.5分程度になります。 読み取りは自動になりますが、企画の一覧との照合は担当が受注システムのエラーを見ながら行うので、第3章の(b)の探し方の違いが残ります。 本格構成で照合と候補の提示が自動になり、1分になるのがこの記事の想定です。 段階を飛ばさないでください。 半自動化の一覧を1か月見ると、信頼度の下限をどこに置けばよいかが分かります。

05工数削減シミュレーション

前提値(モデル条件)
対象人数
6 名
月間件数
2,400 件
1件あたり現在時間
3 分
1件あたり導入後時間
1 分
現在  2,400件 × 3分 ÷ 60 = 120 時間/月
導入後 2,400件 × 1分 ÷ 60 = 40 時間/月
月間削減時間
80h
削減率
67%
年間削減時間
960h
年間金額換算(時間単価2,000円)
192万円
モデル条件による試算であり、実際の効果は業務内容・運用方法によって異なります。

自社条件で導入効果を整理したい方へ

このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。

AI活用について相談する

06向いている企業・向いていない企業

向いている
  1. 宅配の共同購入・個人宅配で、紙の注文用紙を使い続けている組合員がおり、供給センターの事務が用紙を見ながら商品番号と数量を打ち込んでいる地域の生協。注文用紙の様式が生協で決まっていて、毎週同じ枠に商品番号と数量を書く形になっている場合。注文の締切から発注の締切までの時間が短く、打ち込みが毎週の残業になっている場合。
向いていない
  1. 注文用紙がマークシートで、専用の読み取りの機械が問題なく動いている場合。紙で注文する組合員が数十世帯で、打ち込みが負担になっていない場合。注文用紙の様式が配送の地域ごとにばらばらな場合(先に様式をそろえる必要があります)。なお、読み取れない注文を組合員に確かめるか、前週と同じ注文とみなすかといった判断は、この構成では代替できません。

07最小構成で試す方法

  1. 先週回収した注文用紙から50枚を選ぶ(うち10枚は、打ち込みのときに迷った用紙を入れる)
  2. その50枚の、受注システムに入った注文を書き出しておく(これを正解とする)
  3. Document Intelligence Studio で、そのうち30枚にラベルを付けてテンプレート モデルを学習させる
  4. 残りの20枚を Studio で読み取らせ、商品番号と数量と信頼度を書き出す
  5. 書き出した値と正解を1行ずつ突き合わせ、読み違えた行の信頼度を見る

30枚は、空欄の多い用紙と行の多い用紙を混ぜてください。 学習の見本が行の多い用紙に偏ると、空欄の行で信頼度の低い値を返すようになります。

出てきた内容判断
読み違えた行が、すべて信頼度の低い側にあった照合の仕組みを作る段階に進む
信頼度が高いのに読み違えた行がある見本を足して学習し直す。数字の組み合わせを記録する
空欄の行で値を返す空欄の行のラベルが足りない
数字の一部が欠けて読まれるスキャンの設定が先。 解像度と濃さを見直す

2行目が出たら、その数字の組み合わせを必ず記録してください。 信頼度が高いまま起きる読み違いは、下限の値を上げても拾えません。

08実装時につまずきやすいポイント

問題対策
読み違えた番号が企画にあり、ok になる信頼度で落としてから照合する。 順を逆にしない
先週の企画の一覧で照合してしまう用紙に印字された企画の回で、照合する一覧を選ぶ
空欄の行で値を返す空欄の行もラベルの対象にして学習させる
フィールドの信頼度は高いのに数字が違うフィールドの信頼度は位置の確からしさ。 単語の信頼度と合わせて見る
1と7、4と9が読み違えられる300dpi に固定し、薄い鉛筆の用紙を見本に入れる
枠をはみ出した数字が取れない空欄と出た行の数を用紙の見た目と比べる
様式の切り替えの週に精度が落ちる文書の種類の信頼度で古い様式を分ける。新しい様式で学習し直す
候補を自動で採用したくなる候補は担当が選ぶ。 決めきれなければ組合員に聞く
上限を超えた数量を丸めてしまうover_limit として担当へ回す
「2コ」「正」の扱いが担当ごとに違う生協で扱いを決め、確認の画面に書いておく
受注システムへ自動で取り込みたくなる取り込みファイルまでにし、件数を確かめて人が取り込む

上の4行が、この構成の失敗のほとんどです。 どれも「信頼度」と「照合」のどちらか片方だけに頼ったときに起きます。2つの物差しを順に当てる設計になっているかで、運用に乗るかが決まります。

09セキュリティ・AIガバナンス上の注意点

この構成で扱うデータ: 組合員コード、注文した商品と数量、配達のコースです。注文の中身からは、家族構成、食事の制限、健康の状態がうかがえることがあります。 用紙の余白に、組合員が配達担当への連絡を書き込んでいることもあります。

  1. 読み取りに渡す範囲を、注文の枠に限る … テンプレート モデルは決まった枠だけをフィールドとして返しますが、ページ全体の文字も読み取りの結果に含まれます。余白の書き込みは、保存の対象から外すか、閲覧できる担当を限ります
  2. 処理する場所を決める … Document Intelligence のリソースを作る地域を、生協の情報の取り扱いの決まりに照らして選びます。国内の地域(東日本)を選べるかを最初に確かめます。 Blob Storage も同じ地域にそろえます
  3. 確認の画面の閲覧を、事務の担当に限る … 注文の履歴とあわせて見られる画面なので、閲覧の権限を絞ります
  4. 組合員への確認の記録を残す … 配達担当や電話で確かめた内容は、誰が、いつ、何を確かめたかを残します。問い合わせへの答えの根拠になります
  5. 見本の用紙の扱いを決める … 学習に使った見本は、学習の後に保管するか削除するかを決めます
  6. 自動で注文を確定させない … 読み取りと照合の結果は、取り込みファイルを作るところまでです。注文の確定は担当の操作で行います

誤りが起きた場合のリスクは、頼んでいない商品を届けることと、頼んだ商品を届けないことの2つです。 前者は読み違いを ok として流すと起き、後者は確認の要る行を確認しないまま注文から外すと起きます。前者は信頼度と照合の順で防ぎ、後者は確認に回した行を週ごとに数えて防ぎます。

10まず何から始めるか

1週目:企画の一覧の書き出しをそろえる

受注システムから、企画の回、商品番号、商品名、購入の上限を、毎週決まった形で書き出せるようにします。照合の質はここで決まります。あわせて、「2コ」「正」の字など数量の書き方の扱いを、事務の担当で1枚の紙にまとめます。

2週目:50枚で試す

先週の注文用紙から50枚を選び、30枚で Document Intelligence Studio のテンプレート モデルを学習させ、20枚を読み取らせます。受注システムに入った注文と1行ずつ突き合わせ、読み違えた行の信頼度を最優先で見ます。

3週目:信頼度の下限と、スキャンの設定を決める

読み違えた行が信頼度のどこに集まっているかを見て、商品番号と数量の下限の初期値を決めます。数字の一部が欠けて読まれる用紙があれば、複合機の解像度と濃さを見直します。

4週目:スキャンから一覧までをつなぐ

Blob Storage への保存を起点に読み取りを呼び、信頼度で行を分けて一覧に書き出すところまで作ります。この時点では照合はせず、担当は今までどおり打ち込みながら一覧と見比べます。

2か月目: 企画の一覧との照合と、候補の提示を足します。確認の要る行の数を週ごとに数えます。3か月目以降: 確認の画面と取り込みファイルの書き出しを足し、1枚3分が何分になったかを実測します。ok で流した行から出た返品を毎月見て、下限の値と学習の見本を見直す流れができた時点で、この構成は完成です。


11関連ユースケース

12この仕組みを理解するための記事

13技術仕様の確認日・参考情報

技術仕様確認日:2026-10-15/最終更新:2026-10-23
確認した内容情報源確認日
カスタム テンプレート モデルがレイアウトの手がかりで値を取り出し、決まった見た目の様式を持つ構造のはっきりした文書に向くこと。キーと値・選択マーク・表・署名・選択した領域に対応し、重なり合うフィールドには対応しないこと。様式が変わると正確さが下がり、様式ごとに5枚以上の見本で学習すること。入力の条件(PDF と TIFF は最大2,000ページ、F0 は最初の2ページ、S0 は500MB、画像は50×50〜10,000×10,000ピクセル、文字の高さの下限が1024×768の画像で12ピクセル)。学習の上限がテンプレート モデルで500ページ・50MBであること。学習のモードが template であることMicrosoft Learn: Custom template document model2026-10-15
カスタム テンプレート モデル・カスタム ニューラル モデルの手書きの文字の対応言語に日本語が含まれることMicrosoft Learn: Language and locale support for custom models2026-10-15
信頼度が0〜1の推定の確率であること。2024-11-30 の API でカスタム モデルのフィールドの信頼度に単語の信頼度が含まれ、表・行・セルの信頼度が返ること。フィールドの信頼度が値の位置についての確からしさを表すこと。表は全体・行・セルの順に見ること、決まった行数の表ではセルの信頼度で多くが分かること。空欄の信頼度が見本の空欄の多さに左右されること。テンプレート モデルの学習で推定の正確さが出て、80%以上を目指し、扱いの重いものでは100%に近い値を勧めること。文書の種類の信頼度が低いときは様式の違いを示すことMicrosoft Learn: Interpret and improve model accuracy and confidence scores2026-10-15

注文用紙の様式、購入の上限、数量の書き方の扱いは、各生協の決まりに従ってください。 本記事は Microsoft Learn で確認できた範囲の仕様だけを扱っています。

実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。

自社の業務に使えるAI活用候補を整理します

このユースケース(UC-1702)についてのご相談はこちらから。

AI活用について相談する
目次