自動車整備工場が受付で手書きする整備の依頼書を Azure AI Document Intelligence で読み、車両・依頼内容・預かり日と納車の予定を工程表に転記して、書き漏れと署名の欠けを拾う
フロントが受付で手書きした整備の依頼書を読み取り、車両・依頼内容・預かり日と納車の希望を工程表と整備管理システムに転記します。台帳との食い違いや署名の欠けは、作業に入る前に返します。
- AIサービス
- AWS Textract/Azure AI/Google Document AI
- 連携・自動化
- Google Apps Script/n8n/Power Automate/Python
- 対象業界
- その他/小売
- 対象部門
- 生産
- 対象業務
- データ入力・転記/内容確認・チェック
- 主な課題
- 入力作業が多い/引き継ぎができていない/期限・対応漏れが起きる
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/対応スピード向上/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- フロントが受付で依頼書に手書きし、お客様に署名してもらう
- 3枚目を車のダッシュボードに置き、車を預かりの場所へ移す
- 手が空いたときに、整備管理システムの受付の画面に、登録番号から車両を呼び出して打ち込む
- 工場長が依頼書の1枚目を見て、作業の区分と時間の見当を付け、工程表のピットの枠に書き込む
- 納車の希望と代車の要否を、工程表の備考に書き写す
- 書き漏れや読めない字があれば、書いたフロントに聞く。フロントが分からなければお客様に電話する
- 人フロントが受付で依頼書に手書きし、お客様に署名してもらう
- 人お客様を見送る前に、フロントが1枚目を受付の脇のスキャナーに通す
- 自動保存をきっかけに処理が動き、Document Intelligence のカスタム ニューラル モデルが、項目・チェック欄・症状の記載・署名の有無と、それぞれの信頼度を返す
- 自動登録番号を車両の台帳と照らし、車名・前回の走行距離・車検の満了日との食い違いを確かめる
- 自動納車の希望・代車の要否・署名の欄が空いていないかを確かめる
- 自動依頼内容のチェックから作業の区分と標準の時間を引き、工程表の下書きの行と、整備管理システムの受付の下書きを作る
- 人フロントが、印の付いた欄だけを依頼書の画像と並べて確かめる。署名の欠けは、お客様がまだいればその場でもらう
- 人工場長が工程表の下書きの行を見て、ピットの枠に入れる
- 人フロントが整備管理システムの受付の下書きを確かめて登録する
各工程の詳しい説明を読む
- フロントが受付で依頼書に手書きし、お客様に署名してもらう
- 3枚目を車のダッシュボードに置き、車を預かりの場所へ移す
- 手が空いたときに、整備管理システムの受付の画面に、登録番号から車両を呼び出して打ち込む
- 工場長が依頼書の1枚目を見て、作業の区分と時間の見当を付け、工程表のピットの枠に書き込む
- 納車の希望と代車の要否を、工程表の備考に書き写す
- 書き漏れや読めない字があれば、書いたフロントに聞く。フロントが分からなければお客様に電話する
(a)打ち直しまでの間、約束は紙にしか無い。 朝に受け付けた車の依頼書が夕方まで打ち直されないと、その間に工場長が組む工程表には、その車の納車の希望が載りません。 「夕方に取りに来る」と約束した車が、翌日の枠に入っていたことに、お客様が来てから気づきます。
(b)登録番号の読み違いで、別の車を開く。 3番目で登録番号から車両を呼び出すとき、手書きの番号を読み違えると、同じ車名の別のお客様の車が出てくることがあります。 前回の整備の履歴や車検の満了日を、別の車のもので見てしまいます。
(c)署名と代車の欄が空いたまま進む。 混む時間の受付では、署名をもらい忘れたり、代車の要否の欄を飛ばしたりします。署名が無いまま追加の作業の連絡をすると、どこまでを了解してもらっていたかで、後から行き違いが起きます。
(d)症状の書き方が人によって違う。 「異音」とだけ書くフロントと、「右前、段差でゴトゴト」と書くフロントがいます。工程表に書き写すとき、工場長がさらに短くまとめるので、整備士に届くころには場所の情報が消えています。
- 【人】 フロントが受付で依頼書に手書きし、お客様に署名してもらう
- 【人】 お客様を見送る前に、フロントが1枚目を受付の脇のスキャナーに通す
- 【自動】 保存をきっかけに処理が動き、Document Intelligence のカスタム ニューラル モデルが、項目・チェック欄・症状の記載・署名の有無と、それぞれの信頼度を返す
- 【自動】 登録番号を車両の台帳と照らし、車名・前回の走行距離・車検の満了日との食い違いを確かめる
- 【自動】 納車の希望・代車の要否・署名の欄が空いていないかを確かめる
- 【自動】 依頼内容のチェックから作業の区分と標準の時間を引き、工程表の下書きの行と、整備管理システムの受付の下書きを作る
- 【人】 フロントが、印の付いた欄だけを依頼書の画像と並べて確かめる。署名の欠けは、お客様がまだいればその場でもらう
- 【人】 工場長が工程表の下書きの行を見て、ピットの枠に入れる
- 【人】 フロントが整備管理システムの受付の下書きを確かめて登録する
2番目で「お客様を見送る前に」スキャンするのが、この設計の分かれ目です。 読み取りと照合は1分ほどで終わるので、署名の欠けや納車の希望の書き漏れが、お客様がまだ受付にいるうちに分かります。 夕方にまとめてスキャンすると、第3章の(c)は電話で取り返すしかありません。
8番目と9番目を人に残すのは、工程を組むのも、受付を登録するのも、工場の判断だからです。 この構成は、判断に要る材料を早くそろえるところまでを受け持ちます。
02今回想定するシステム構成
整備の依頼書(紙・手書き・3枚複写の1枚目) │ 受付の脇のスキャナーで読み取り(300dpi、PDF) ▼【トリガー】Azure Blob Storage の受付のコンテナーへの保存 Python(Azure Functions) ▼ Azure AI Document Intelligence(カスタム ニューラル モデル) │ 登録番号・走行距離・預かり日・納車の希望・代車 │ 依頼内容のチェック(選択マーク)・症状の記載・署名の有無と信頼度 ▼ Python ── 車両の台帳との照合、空欄の検出、作業の区分と標準の時間 ▼ 工程表の下書きの行 整備管理システムの受付の下書き 確認の一覧 ▼ 【フロントが印の付いた欄を確かめ、工場長が工程表に入れる】
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | Azure AI Document Intelligence(カスタム ニューラル モデル) | Google Document AI(Form Parser)。AWS Textract は日本語の手書きを読めないため対象外 |
| 連携 | Python(Azure Functions。保存を起点に読み取りを呼び、照合と下書きを作る) | Power Automate、n8n |
| 差異計算 | Python(車両の台帳との食い違い、前回の走行距離との差、空欄の検出) | Google Apps Script |
| 保管 | Azure Blob Storage(依頼書の画像と読み取りの結果) | 社内のファイルサーバー |
| 工程表 | 拠点ごとの共有のスプレッドシート | 整備管理システムの工程の機能 |
整備管理システムと工程表は、新しく足すものではありません。 この構成が作るのは下書きの行と確認の一覧までで、整備管理システムへの登録と工程表への書き込みは人が行います。
生成AIは使いません。 依頼書の項目は決まっていて、作業の区分はチェック欄から表で引けます。症状の記載は言い換えずに渡すのが目的なので、文章を作る機能の出番がありません。
読み取りの中心は、カスタム ニューラル モデルです。 公式の説明では、ニューラル モデルはレイアウトと言語の特徴を組み合わせ、ラベル付けした項目を取り出す深層学習のモデルで、同じ情報を持ちながらページの構成が違う文書に向くとされています。2拠点の様式の違いと、新旧の様式の混在に、1つのモデルで対応できるのがこの選択の理由です。
v4.0(2024-11-30)のニューラル モデルは、署名の検出に対応しています。 キーと値、選択マーク、表、領域のラベル付けにも対応し、表については表・行・セルの信頼度が返るとされています。依頼書のお客様の署名の欄は、この署名の検出で「あるかどうか」を見ます。
日本語の手書きも対象です。 ニューラル モデルの対応言語の表では、手書きの文字の対応言語に日本語が含まれています。 症状の自由欄の手書きの文や、登録番号のひらがなを読む前提で組めます。
03どうやって実装するのか
処理の起点を決める
フロントが依頼書の1枚目をスキャナーに通し、PDF が Blob Storage の受付のコンテナーに保存されたことを起点にします。 スキャナーの保存先を受付のコンテナーにつながるフォルダにし、1台につき1つの PDFにします。保存されると Azure Functions の処理が動きます。
スキャンするのは、お客様を見送る前です。 受付の脇のスキャナーに通すだけで、フロントの手間は数秒です。読み取りと照合が終わると、受付の画面に確認の一覧が出ます。 署名の欠けや納車の希望の書き漏れがあれば、その場でお客様に聞けます。
処理が終わった PDF は処理済みのコンテナーへ移します。移すのは、読み取りと照合と下書きの作成が終わったときだけにします。 受付のコンテナーに残っている数が、そのまま未処理の数になります。閉店の前には、預かった車の数と処理した依頼書の数を比べ、スキャンの漏れを拾います。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 依頼書の PDF | 1台につき1枚。スキャンした日時と拠点 | Blob Storage の受付のコンテナー |
| 読み取り結果 | 項目ごとの値と信頼度、選択マークの状態、署名の有無、単語の信頼度 | Azure AI Document Intelligence |
| 車両の台帳 | 登録番号、お客様、車名・型式、前回の入庫の日と走行距離、車検の満了日 | 整備管理システムの書き出し |
| 作業の区分の表 | チェック欄ごとの作業の区分と標準の時間、使うピットの種類 | 工場長が作る表 |
| 工程表 | 拠点ごと・日ごとのピットの枠と、空いている時間 | 共有のスプレッドシート |
質を決めるのは、作業の区分の表です。 「車検」に印があれば何時間、「オイル交換」なら何分、リフトが要るか、板金のブースが要るか。この表が無いと、工程表の下書きの行に時間を入れられません。表の時間は工場長の目安で構いません。 下書きを見た工場長が直す前提です。
車両の台帳は、照合のために読むだけです。 前回の走行距離と車検の満了日は、読み取った値が正しいかを確かめる物差しとして使います。
データの取得方法を決める
読み取りは、Azure Functions から Document Intelligence の REST API でカスタム ニューラル モデルを呼びます。API のバージョンは 2024-11-30(v4.0 の GA)に固定します。 署名の検出も、表・行・セルの信頼度も、このバージョンからとされています。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 登録番号・走行距離・預かり日・納車の希望 | ニューラル モデルのフィールド | 車両の特定、工程表の行 |
| 代車の要否 | 選択マークのフィールド(要/不要) | 工程表の備考、代車の手配 |
| 依頼内容のチェック | 選択マークのフィールド(6つ) | 作業の区分 |
| 症状の記載 | 自由欄のフィールド(領域のラベル) | 工程表の備考に原文のまま |
| お客様の署名 | 署名のフィールド | 署名の有無 |
| 信頼度 | フィールドと単語の confidence、選択マークの confidence | 確かめる欄の絞り込み |
選択マークの信頼度は、フィールドの信頼度と合わせて見ます。 公式の説明では、選択マークを含むフィールドでは、フィールドの選択と選択マークの信頼度を合わせたものが、全体の確からしさをよく表すとされています。チェック欄の印が薄いと、フィールドの位置は合っていても印の状態の信頼度が下がります。
症状の自由欄は、領域のラベルで取ります。 公式の説明では、ニューラル モデルの領域のラベルは、指定した領域についてのレイアウトの読み取りの結果を使うとされています。自由欄のどこに書かれていても、欄の中の文字をまとめて取れます。
車両の台帳は、整備管理システムの毎晩の書き出しを Python で読みます。照合の順は、登録番号が先、車名が後です。 車名から先に引くと、同じ車名の車が何十台も出ます。
AIへ渡す前に整形する
- ページの確認 … 1枚目(工場の控え)であることを、様式の見出しの読み取りで確かめます。2枚目・3枚目を誤ってスキャンしたものは、複写の写りが薄いので読み直しを頼みます
- 解像度の確認 … 取り出す文字の高さの下限は、1024×768の画像で12ピクセル(150dpiで約8ポイントの文字)とされています。複写の1枚目でも筆圧が弱いと細くなるので、300dpiに固定します
- 画像の寸法とサイズの確認 … 画像は50×50から10,000×10,000ピクセル、ファイルは有料(S0)のレベルで500MBまでとされています
- 重複の確認 … 同じ登録番号・同じ預かり日の依頼書が既にあれば、上書きせずにフロントに確かめます。 書き直した依頼書を二度スキャンした場合があります
- 拠点の確認 … スキャナーごとに拠点を決めておき、読み取った依頼書の様式と拠点が合うかを見ます
1番目を省かないでください。 3枚複写の2枚目・3枚目は、1枚目より文字が薄く、読み取りの信頼度がまとまって下がります。 誤ってスキャンされると、確認の一覧が印だらけになります。
AIに処理させる
させるのは、依頼書の決まった項目・チェック欄・自由欄・署名の欄を読み取り、信頼度を返すことだけです。 台帳との照合と空欄の検出は、Python が規則で行います。
| 読むもの | 読み方 | 決められないときの扱い |
|---|---|---|
| 登録番号 | 地名・分類番号・ひらがな・一連番号を文字列のまま | 信頼度が低ければ low_confidence |
| 走行距離 | 数字を文字列のまま | 数字以外が混ざれば ambiguous |
| 預かり日・納車の希望 | 書かれたとおりの文字列(「夕方」「土曜午前」も含む) | 空欄なら missing |
| 依頼内容のチェック | 6つの選択マークの状態 | 印が薄い、または消した跡があれば ambiguous |
| 代車の要否 | 要/不要の選択マーク | どちらにも印が無ければ missing |
| 症状の記載 | 欄の中の文字をそのまま | 言い換えない。 読めない部分は読めないまま |
| お客様の署名 | 署名の有無 | 無ければ missing |
Python が行う照合は、次の4つです。
| 照合 | 条件 | 結果 |
|---|---|---|
| 登録番号 | 台帳に無い | not_found(新規のお客様か、読み違い) |
| 車名 | 台帳の車名と読み取った車名が違う | mismatch(読み違いの可能性が高い) |
| 走行距離 | 前回の入庫の走行距離より少ない | mismatch(読み違いか、前回の記録の誤り) |
| 車検の満了日 | 「車検」に印が無いのに、満了日が近い | notice(お客様への案内の材料) |
車名の照合を必ず入れてください。 登録番号の一連番号を1桁読み違えると、台帳に別の車が見つかることがあります。そのとき番号だけで照合すると ok になり、第3章の(b)がそのまま起きます。 車名が合うかを二重に見ることで、別の車を開くのを防ぎます。
作業の区分と標準の時間は、チェック欄から表で引きます。 「一般修理」と「板金」は症状によって時間が大きく変わるので、標準の時間を入れず、工場長が決める枠として下書きに出します。
| させないこと | 理由 |
|---|---|
| 症状の記載の言い換え・要約 | 整備士が確かめる音や場所の情報が消える |
| 納車の希望の解釈(「夕方」を何時にするか) | お客様との約束で、フロントが確かめる |
| 読めない登録番号を台帳の似た番号に寄せる | 別のお客様の車を開く |
| 作業の範囲や追加の整備の提案 | 工場長とお客様が決める |
| 信頼度の付け直し | 読み取りが返した値をそのまま使う |
指示内容を固定する
この構成では生成AIを使わないため、プロンプトの代わりにニューラル モデルの学習の指示と、ラベル付けの決まりを示します。
【見本の集め方】
- 2拠点の現行の様式と、旧様式の依頼書を、実際の受付で書かれたものから集める
- 様式の違いごとに、ラベル付けした見本を5枚以上(できれば各20枚程度)
- 署名のフィールドには、署名がある見本を5枚以上含める
- 次のばらつきを入れる
・フロント3名それぞれの筆跡
・症状の欄が空欄のもの、欄の外まで書き込んだもの
・代車の要否・署名の欄が空いているもの
・チェック欄を二重線で消して付け直したもの
- スキャンの設定は本番と同じ300dpiにそろえる
【ラベルの決まり】
- フィールドの名前は依頼書の言葉で付ける
(登録番号、走行距離、預かり日、納車希望、代車、症状、お客様署名)
- 依頼内容の6つのチェック欄は、それぞれ別の選択マークのフィールドにする
- 症状は自由欄の枠を領域として囲む(文字を選んで囲まない)
- お客様署名は、フィールドの種類を署名にし、欄の領域を1つだけ囲む
- 空欄の見本も、空欄のままラベルを付けて学習させる
【学習】
- 学習のモード(buildMode)は neural
- 学習の時間の上限(maxTrainingHours)を決めて実行する
- ニューラル モデルは学習のときに推定の正確さを返さないので、
学習に使わなかった30枚で正解と突き合わせて評価する
「フィールドの名前は依頼書の言葉で付ける」は、公式の勧めに従ったものです。 公式の説明では、値に関係する名前を付けると取り出しの正確さが上がり、フィールドの名前は文書の言語で付けるのがよいとされています。
「署名のある見本を5枚以上」も公式の説明に沿っています。 署名の検出で正確な結果を得るには、署名にラベルを付けた見本が少なくとも5枚、ばらつきを含めて要るとされています。
最後の3行が、ニューラル モデルを使うときの注意です。 公式の説明では、ニューラル モデルは学習のときに推定の正確さを出さないとされています。学習が終わっても、どのくらい読めるのかは分かりません。評価用の30枚を最初から分けておきます。
判定の基準値は、処理の側の設定として持ちます。 初期値は、登録番号の信頼度の下限0.90、選択マークの下限0.80とし、最初の1か月で、フロントが直した欄の信頼度の分布を見て見直します。
出力形式を固定する
依頼書1枚ごとに、次の形のJSONを作ります。
{
"order_id": "B2-20261015-0031",
"branch": "B2",
"fields": {
"reg_no": { "value": "", "conf": 0, "check": "ok | low_confidence | not_found | mismatch" },
"odometer": { "value": "", "conf": 0, "check": "ok | ambiguous | mismatch" },
"received_at": { "value": "", "conf": 0, "check": "ok | missing" },
"pickup_request": { "value": "", "conf": 0, "check": "ok | missing" },
"loaner": { "value": "要 | 不要 | ", "conf": 0, "check": "ok | missing | ambiguous" },
"signature": { "present": true, "conf": 0, "check": "ok | missing" }
},
"work_items": [
{ "item": "車検", "selected": true, "conf": 0, "std_minutes": 0, "pit": "lift" }
],
"symptom_text": "",
"symptom_conf": 0,
"notices": ["車検の満了日が30日以内"],
"needs_review": true
}
1つ目の理由は、項目ごとに check を持てることです。 確認の一覧には ok 以外の欄だけを出せるので、フロントは依頼書の全体を見直さずに済みます。
2つ目は、pickup_request を文字列のまま持つことです。 「夕方」「土曜午前」を日時に直すと、お客様と話した内容とずれます。 工程表の下書きには原文のまま載せ、何時にするかはフロントが確かめます。
3つ目は、notices を check と分けることです。 車検の満了日が近いという案内は、依頼書の誤りではありません。確認の印と混ぜると、フロントが案内を読み飛ばします。
工程表の下書きの行には、登録番号、車名、作業の区分、標準の時間、納車の希望(原文)、代車、症状(原文)を並べ、needs_review が true の行には印を付けます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| スキャナー → Blob Storage | スキャナーの保存先を受付のコンテナーにつながるフォルダにする | 1台につき1つの PDF |
| Azure Functions | Blob Storage への保存を起点に動く | 読み取りの呼び出し、照合、下書きの作成 |
| Azure AI Document Intelligence | REST API(2024-11-30) | ニューラル モデルで読み取る |
| 整備管理システム | 毎晩の書き出しを読む/受付の下書きを取り込み用のファイルで渡す | 車両の台帳、受付の下書き |
| 工程表 | 共有のスプレッドシートの「下書き」のシートに行を足す | 工場長が見てピットの枠に移す |
| 受付の画面 | 確認の一覧を表示 | フロントが印の付いた欄を確かめる |
工程表には「下書き」のシートを分けて置きます。 ピットの枠のシートに直接書き込むと、工場長が組んだ工程を機械が動かすことになります。 下書きの行を工場長が見て、枠に移す形にします。
整備管理システムへは、取り込み用のファイルを渡すところまでにします。 取り込みの機能が無いシステムなら、フロントが確認の一覧を見ながら打ち込みます。 その場合でも、車両の呼び出しと照合が済んでいる分だけ速くなります。
人が確認する
フロントが見るのは、確認の一覧で印の付いた欄だけです。 印の無い依頼書は、件数と登録番号を一覧で流し見ます。
- 署名と代車の
missingを先に見る … お客様がまだ受付にいれば、その場でもらう・聞く。帰った後なら、預かりの連絡の電話で確かめます - 登録番号の
not_foundとmismatchを見る … 依頼書の画像と並べ、正しい番号を確かめます。新規のお客様なら、整備管理システムに新しく登録します - 納車の希望の原文を見る … 「夕方」「土曜午前」を、お客様と話した内容に合わせて時刻にします
- チェック欄の
ambiguousと症状の読めない部分を見る … 書いたフロント本人が確かめるのがいちばん速いです - 直した内容を記録する … どの欄を、何から何に直したかを残します
工場長が見るのは、工程表の下書きの行です。 作業の区分と標準の時間を見て、ピットの枠に入れるか、時間を直すかを決めます。 「一般修理」と「板金」の行は、症状の原文を見て時間を決めます。
目標は、600台をならして1台1.5分です。 印の付く依頼書が3割前後という想定で、それより多い日は、スキャンした控えの取り違えか、スキャナーの設定を疑います。
例外に対処する
| 起きること | 対応 |
|---|---|
| 2枚目・3枚目の控えをスキャンした | 様式の見出しで判別して読み直しを頼む |
| 旧様式の依頼書 | ニューラル モデルが様式の違いを吸収する前提。信頼度がまとまって低ければ、旧様式の見本を足して学習し直す |
| 登録番号が台帳に無い | 新規のお客様か読み違い。画像を見てフロントが決める |
| 走行距離が前回より少ない | 読み違いか、前回の記録の誤り。どちらも画像と台帳の両方を見る |
| 症状の欄が裏面まで続いている | ニューラル モデルはページの境目をまたぐ値を認識しないとされている。裏面は別のフィールドとして読み、つなげて表示する |
| 1台に2枚の依頼書(追加の依頼) | 登録番号と預かり日で結び、2枚目は追加の依頼として別の行にする |
| Document Intelligence が応答しない | PDF を受付のコンテナーに残す。フロントは今までどおり手で打てる |
| 同じ依頼書を二度スキャンした | 登録番号と預かり日で照合し、二重に下書きを作らない |
下から4行目は、公式の制限から来ています。 症状を裏面まで書き込むお客様の依頼書は少なくありません。表の欄と裏面を別々に読み、表示のときにつなげます。
記録を残す
- 元の依頼書の PDF と、スキャンした日時・拠点・スキャナー
- Document Intelligence が返した JSON の全文と、使ったモデルの ID と API のバージョン
- 照合の結果(
check、notices)と、そのとき参照した車両の台帳の内容 - フロントが直した記録 … どの欄を、何から何に直したか。確かめた人と日時
- 工程表の下書きの行と、工場長が実際に入れた枠と時間
- 納車の希望の原文と、確かめた後の時刻
3つ目で台帳の内容を残すのは、台帳が後から直されるためです。 前回の走行距離が誤っていたと分かって直すと、当時の mismatch の理由が分からなくなります。
最後の行は、お客様との行き違いが起きたときの記録です。 「夕方と言った」「17時と聞いた」のどちらだったかを、依頼書の原文と、フロントが確かめた時刻の両方で残します。
04実装レベルの3段階
最小構成では、受付の流れは変わりません。 1枚ずつ Studio で読ませるので、モデルがこの依頼書を読めるかを確かめる段階です。 半自動化で、1台6分が3分程度になります。 読み取りと書き漏れの検出は自動になりますが、車両の呼び出しと工程表への書き込みが手作業で残ります。本格構成で照合と下書きが自動になり、1.5分になるのがこの記事の想定です。 半自動化の段階でも、第3章の(c)は解けます。 署名と代車の欄の空欄が、お客様を見送る前に分かるからです。照合より先に、スキャンのタイミングを受付の流れに組み込むことを優先してください。
05工数削減シミュレーション
導入後 600件 × 1.5分 ÷ 60 = 15 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 車検・定期点検・一般修理・板金を受ける民間の自動車整備工場やカー用品店のピットで、フロントがお客様と話しながら紙の依頼書に手書きし、あとで事務やフロントが整備管理システムと工程表に打ち直している場合。月に数百台が入庫し、納車の約束や代車の手配が依頼書の書き込みにしか残っていない場合。依頼書の様式が工場で決まっている場合。
- 受付をタブレットで直接入力しており、紙の依頼書が無い場合。月の入庫が数十台で、打ち直しが負担になっていない場合。依頼書を使わず口頭で整備士に伝えている場合(先に依頼書を書く運用が必要です)。なお、作業の範囲や見積の金額をお客様に確かめるか、追加の整備を勧めるかの判断は、この構成では代替できません。
07最小構成で試す方法
- 先月の依頼書の1枚目から80枚を選ぶ(2拠点・新旧の様式・フロント3名の筆跡が入るように)
- その80枚の、整備管理システムに入った受付の内容を書き出しておく(これを正解とする)
- Document Intelligence Studio で、そのうち50枚にラベルを付けてニューラル モデルを学習させる
- 残りの30枚を Studio で読み取らせ、項目と信頼度を書き出す
- 書き出した値と正解を突き合わせ、登録番号と納車の希望と署名の有無が合っているかを見る
30枚の評価を省かないでください。 ニューラル モデルは学習のときに正確さの見込みを出さないので、この突き合わせが唯一の物差しです。
| 出てきた内容 | 判断 |
|---|---|
| 登録番号の読み違いが、すべて信頼度の低い側にあった | 台帳との照合を作る段階に進む |
| 信頼度が高いのに登録番号を読み違えた | 車名の照合で拾えるかを確かめる。見本を足して学習し直す |
| 旧様式だけ信頼度が低い | 旧様式の見本を足す |
| 署名の有無を取り違える | 署名の見本を足す。5枚では足りないことがある |
2行目が出ても、すぐに諦めないでください。 読み違えた番号の車が台帳で別の車名なら、車名の照合でその場で拾えます。 照合を2つ重ねる設計は、この場合のためです。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
登録番号を1桁読み違えて、別の車が ok になる | 車名の照合を重ねる。 番号だけで照合しない |
| 学習が終わっても、どのくらい読めるか分からない | ニューラル モデルは正確さの見込みを出さない。評価用の見本を分けておく |
| 2枚目・3枚目の控えがスキャンされる | 様式の見出しで判別する |
| 症状の記載を整えて工程表に載せたくなる | 原文のまま。 整備士が聞き直す手がかりを消さない |
| 「夕方」を17時に直してしまう | 原文のまま持ち、フロントが確かめてから時刻にする |
| 裏面に続く症状が切れる | ページをまたぐ値は認識されない。裏面を別に読む |
| 署名の検出が安定しない | 署名のある見本を5枚以上、ばらつきを含めて足す |
| 工程表のピットの枠に直接書き込みたくなる | 下書きのシートに分ける。 工場長の工程を機械が動かさない |
| 夕方にまとめてスキャンする | お客様が帰った後では書き漏れを取り返せない。見送る前にスキャンする |
上の2行が、この構成の失敗のほとんどです。 1行目は照合を1つしか置かないときに、2行目は評価をせずに運用に入ったときに起きます。どちらも、読み取りの結果を確かめる物差しを持っているかの問題です。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: お客様の名前と電話番号、登録番号、車の状態と症状、署名の画像です。登録番号と名前が並ぶので、個人を特定できる情報として扱います。
- 読み取りの結果の保存先を絞る … 依頼書の画像と JSON には、名前・電話番号・署名が含まれます。Blob Storage の閲覧はフロントと工場長に限ります
- 処理する場所を決める … Document Intelligence のリソースを作る地域を、社内の決まりに照らして選びます。ニューラル モデルの学習ができる地域は限られていて、公式の一覧に東日本(Japan East)が含まれています。 学習と読み取りを国内の地域で行うかを最初に決めます
- 署名は「あるかどうか」だけを見る … 署名の検出は署名の有無を返すもので、本人の署名かどうかを確かめるものではありません。 この構成でも、署名の真正さは判断しません
- 見本の依頼書の扱いを決める … 学習に使った見本には、お客様の名前と電話番号が載っています。学習の後に保管するか削除するかを決めます
- お客様への連絡を自動で送らない … 署名の欠けや納車の希望の確認は、フロントが電話や対面で行います。 自動の通知は作りません
- 車検の満了日の案内を、営業の目的に流用しない …
noticesは受付の場でお客様に伝える材料です。別の目的で使うなら、お客様への説明を先に決めます
誤りが起きた場合のリスクは、別のお客様の車の履歴で作業を進めることと、お客様との約束が工場に届かないことの2つです。 前者は車名の照合で、後者は見送る前のスキャンと空欄の検出で防ぎます。どちらも、受付の場で気づけるかどうかで重さが変わります。
10まず何から始めるか
1週目:作業の区分の表を作る
工場長が、依頼書の6つのチェック欄ごとに作業の区分、標準の時間、使うピットの種類を表にします。「一般修理」と「板金」は時間を空欄にし、工場長が決める枠とします。あわせて、納車の希望の書き方(「夕方」など)をフロントで確かめる決まりを作ります。
2週目:80枚で試す
先月の依頼書から80枚を選び、50枚で Document Intelligence Studio のニューラル モデルを学習させ、30枚で評価します。登録番号の読み違いが信頼度の低い側に集まっているかを最優先で見ます。
3週目:スキャンのタイミングを決める
受付の脇にスキャナーを置き、お客様を見送る前に1枚目を通す流れを、フロント3名で1週間試します。混む時間に続けられるかを見ます。
4週目:スキャンから確認の一覧までをつなぐ
Blob Storage への保存を起点に読み取りを呼び、空欄と信頼度の低い欄を受付の画面に出すところまで作ります。この時点では照合はせず、フロントは今までどおり打ち直します。
2か月目: 車両の台帳との照合と、車名の二重の照合を足します。3か月目以降: 工程表と整備管理システムの下書きを足し、1台6分が何分になったかを実測します。フロントが直した欄の記録を毎月見て、見本の追加と信頼度の下限を見直す流れができた時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
カスタム ニューラル モデルがレイアウトと言語の特徴を組み合わせてラベル付けした項目を取り出し、同じ情報でページの構成が違う文書に向くこと。v4.0(2024-11-30)で署名の検出、表・行・セルの信頼度、重なり合うフィールドに対応すること。キーと値・選択マーク・表・署名・領域のラベル付けに対応し、領域のラベルが指定した領域のレイアウトの結果を使うこと。署名の検出に署名を付けた見本が5枚以上要ること。様式のばらつきごとに5枚以上の見本を足すこと。フィールドの名前を文書の言語で付けるのがよいこと。ページの境目をまたぐ値を認識しないこと。学習ができる地域に Japan East が含まれること。v4.0 で10時間まで学習が無料で、超えると料金がかかること。入力の条件(文字の高さの下限、画像の寸法、S0 で500MB)。学習のモードが neural であること | Microsoft Learn: Custom neural document model | 2026-10-15 |
| カスタム ニューラル モデルの手書きの文字の対応言語に日本語が含まれること | Microsoft Learn: Language and locale support for custom models | 2026-10-15 |
| 信頼度が0〜1の推定の確率であること。選択マークを含むフィールドでは、フィールドの選択と選択マークの信頼度を合わせたものが全体の確からしさをよく表すこと。カスタム ニューラル モデルは学習のときに推定の正確さを出さないこと。2024-11-30 の API でカスタム モデルのフィールドの信頼度に単語の信頼度が含まれること | Microsoft Learn: Interpret and improve model accuracy and confidence scores | 2026-10-15 |
依頼書の様式、作業の区分、署名をもらう範囲は、各工場の決まりに従ってください。 本記事は Microsoft Learn で確認できた範囲の仕様だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1703)についてのご相談はこちらから。
