めっき工場で作業者が手書きするめっき液の分析・温度・補給の管理記録を読み取り、槽ごとの推移表にそろえて、管理範囲の外れと記入漏れを拾う
作業者がラインで毎日手書きする液管理の記録表を読み取り、槽ごとの温度・pH・分析値・補給の量の推移表にそろえます。管理範囲を外れた値と、書かれていない欄を、その日のうちに生産技術の担当へ返します。
- AIサービス
- Azure AI/Google Document AI
- 連携・自動化
- Python
- 対象業界
- 製造
- 対象部門
- 品質管理/生産
- 対象業務
- データ入力・転記/内容確認・チェック
- 主な課題
- データ分析に時間がかかる/入力作業が多い/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/判断支援/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 作業者がラインの記録表に、朝・昼・夕の温度とpH、朝と夕の分析値、補給の量を書く
- 範囲を外れた値があれば、作業者が補給するか班長に報告する
- 班長が1日の終わりに記録表を見て、確認の印を押す
- 生産技術の担当が週に1回、3ライン分の記録表を回収する
- 1枚ずつ見ながら、表計算の槽ごとのシートに数値を転記する
- 転記しながら、範囲を外れた値と空欄に印を付ける
- 印の付いた値について、作業者と班長に当日のことを聞き取る
- 人作業者がいまどおり記録表に書く(様式は変えない)
- 人班長が1日の終わりに確認の印を押し、ラインの複合機で記録表をスキャンする
- 自動保存をきっかけに、Azure AI Document Intelligence のカスタム テンプレート モデルで記録表を読み取る
- 自動表のセルごとに、値・信頼度・空欄かどうかを取り出し、槽ごとの推移表の1行にする
- 自動槽ごとの管理範囲と照らし、`ok` / `out_of_range` / `missing` / `unreadable` の印を付ける
- 自動補給の欄を薬品・量・時刻に分け、同じ槽の次の分析値と並べる
- 自動印の付いた槽だけを並べた日次の一覧を、生産技術の担当と班長に送る
- 人生産技術の担当が、`unreadable` を画像で直し、`missing` と `out_of_range` を翌朝のうちに班長と確かめる
- 人確かめた内容を推移表に記録し、月末に液の更新の要否を判断する
各工程の詳しい説明を読む
- 作業者がラインの記録表に、朝・昼・夕の温度とpH、朝と夕の分析値、補給の量を書く
- 範囲を外れた値があれば、作業者が補給するか班長に報告する
- 班長が1日の終わりに記録表を見て、確認の印を押す
- 生産技術の担当が週に1回、3ライン分の記録表を回収する
- 1枚ずつ見ながら、表計算の槽ごとのシートに数値を転記する
- 転記しながら、範囲を外れた値と空欄に印を付ける
- 印の付いた値について、作業者と班長に当日のことを聞き取る
(a)外れに気づくのが週に1回になる。 2番の判断は作業者に任されていて、外れた値を書いたのに補給も報告もしなかった日が、生産技術の担当が転記するまで分かりません。気づいたときには数日が過ぎ、そのあいだに流れたロットの確認が要るかを考えることになります。
(b)空欄の意味が分からない。 昼の温度の欄が空なのは、測り忘れか、書き忘れか、昼休みに測る人がいなかったのか。数日後に聞いても、作業者は覚えていません。 空欄は空欄のまま管理表に入ります。
(c)転記の数字の読み違い。 手書きの「1」と「7」、「0」と「6」、小数点の有無。分析値の小数点を1つ読み違えると、範囲の外れが見えなくなるか、外れていないのに外れたことになります。
(d)補給と分析値の関係を追えない。 管理表には数値が並びますが、補給の欄は「ニッケル補給 2L 14:10」のような文字で、数値の列とは別です。補給の量が増えているのに分析値が上がらない、といった兆しは、記録表を何枚もめくらないと分かりません。
- 【人】 作業者がいまどおり記録表に書く(様式は変えない)
- 【人】 班長が1日の終わりに確認の印を押し、ラインの複合機で記録表をスキャンする
- 【自動】 保存をきっかけに、Azure AI Document Intelligence のカスタム テンプレート モデルで記録表を読み取る
- 【自動】 表のセルごとに、値・信頼度・空欄かどうかを取り出し、槽ごとの推移表の1行にする
- 【自動】 槽ごとの管理範囲と照らし、
ok/out_of_range/missing/unreadableの印を付ける - 【自動】 補給の欄を薬品・量・時刻に分け、同じ槽の次の分析値と並べる
- 【自動】 印の付いた槽だけを並べた日次の一覧を、生産技術の担当と班長に送る
- 【人】 生産技術の担当が、
unreadableを画像で直し、missingとout_of_rangeを翌朝のうちに班長と確かめる - 【人】 確かめた内容を推移表に記録し、月末に液の更新の要否を判断する
2番目でスキャンを班長に任せるのが、この設計の要です。 週に1回の回収をやめ、その日の記録表をその日のうちに読み取ります。 空欄の理由を翌朝に聞けば、作業者はまだ覚えています。
5番目の判定は、規則で行います。 管理範囲は槽ごとに決まった数値なので、外れかどうかに判断の余地はありません。AIにさせるのは読み取りまでで、外れの判定はプログラムが範囲の表で行います。
02今回想定するシステム構成
液管理の記録表(ラインごとに1日1枚。行=槽、列=温度・pH・分析値・補給) │ 班長が1日の終わりにラインの複合機でスキャン(300dpi、PDF) ▼【トリガー】決めたフォルダへの保存 Azure Functions ── ライン・日付の確認、向きと解像度の確認 ▼ Azure AI Document Intelligence(カスタム テンプレート モデル。ラインごとの様式を合成) │ 日付・ライン・記入者の欄、固定の表(行=槽、列=測定の欄)の各セルの値と信頼度 ▼ Python(Azure Functions 上)── 推移表への変換と判定 │ ① 槽ごとの管理範囲との照合 ② 空欄と読めない欄の区別 │ ③ 補給の欄の分解と、次の分析値との並べ ▼ 槽ごとの推移表 + 日次の一覧(印の付いた槽だけ) ▼ 【生産技術の担当が unreadable を直し、missing と out_of_range を班長と確かめる】 ▼ 推移表に確認の結果を記録 → 月末に液の更新の要否を判断
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | Azure AI Document Intelligence(カスタム テンプレート モデル。固定の表と手書きの数値の読み取り) | Google Document AI(Form Parser) |
| 集計 | Python(推移表への変換、管理範囲との照合、空欄の区別、補給の欄の分解) | ― |
| 連携 | Azure Functions(保存の検知、読み取りの呼び出し、一覧の送信) | Azure Logic Apps |
| 保管 | Azure Blob Storage(記録表の画像、読み取り結果) | SharePoint のドキュメント ライブラリ |
| 表示 | 槽ごとの推移表とグラフ(共有の表計算) | ― |
記録表の様式は変えません。 作業者が書くものは、いまと同じです。変わるのは、班長がその日のうちにスキャンすることと、転記が無くなることだけです。 現場に新しい入力の作業を足さないのが、この構成を続けられる条件です。
土台は、Document Intelligence のカスタム テンプレート モデルです。 公式ページでは、テンプレート モデルはラベル付けしたキーと値のペア、選択マーク、テーブル、領域、署名を抽出でき、決まった見た目の様式を持つ書類に向くとされています。行が槽、列が測定の欄という固定の表は、この型に当たります。
日本語の手書きにも対応しています。 カスタム モデルの言語の一覧では、テンプレート モデルの手書きの文字の抽出に日本語(ja)が載っています。数値が中心ですが、補給の欄の薬品名と記入者の名前は手書きの日本語です。
ラインごとに様式が少しずつ違っても対応できます。 公式ページでは、様式ごとに少なくとも5枚のサンプルで別々のモデルを学習し、1つのエンドポイントに合成するよう案内されています。槽の数や並びがラインごとに違うので、ラインごとのモデルを合成して使います。
03どうやって実装するのか
処理の起点を決める
班長がスキャンした PDF を、決めたフォルダに保存したことを起点にします。 フォルダはラインごとに分け、ファイル名に日付を付けます。ラインの情報を記録表の読み取りに頼らず、フォルダで持たせます。 記録表のライン名の欄が空でも、どのラインかを取り違えません。
スキャンは、班長が確認の印を押した後に行います。 印を押す前にスキャンすると、確認者の欄が空のまま読み取られ、すべての記録表が「確認者なし」になります。確認者の欄が空なら、missing として一覧に出しますが、判定は通常どおり行います。
日次の一覧は、毎朝7時にまとめて送ります。 読み取り自体は保存のたびに動かしますが、一覧は前日の分を朝に1回送ります。生産技術の担当が朝いちばんに一覧を見て、始業の前に班長と確かめられる時刻にします。 夜のうちに何通も届くと、読まれなくなります。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 記録表の画像 | スキャンした PDF、ライン、日付、スキャンの日時 | ラインごとのフォルダ |
| 読み取り結果 | 日付・ライン・記入者の欄、表のセルごとの値と信頼度、表と行の信頼度、様式の種類の信頼度 | Document Intelligence |
| 槽の一覧 | ラインごとの槽の並び、槽の名前、槽の番号 | 生産技術課が作る一覧 |
| 管理範囲の表 | 槽ごとの温度・pH・分析値の上限と下限、補給の目安、測る回数 | 薬品の取扱説明と社内の標準から作る表 |
| 稼働の予定 | ラインと槽ごとの、その日の稼働の有無 | 生産の計画 |
質を決めるのは、管理範囲の表と稼働の予定です。 管理範囲が記録表の隅の印刷にしか無いと、プログラムの側に照らす元がありません。最初の作業は、範囲を槽ごとの表にすることです。 範囲を改める日付も持たせます。
稼働の予定は、空欄を正しく読むために持ちます。 止めている槽の欄が空なのは当たり前で、それを missing と出すと、一覧が要らない印で埋まります。その日に動いていなかった槽は、空欄を印にしません。
データの取得方法を決める
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 日付・ライン・記入者 | カスタム テンプレート モデルの解析結果の fields | 推移表の行の見出し |
| 表のセルの値と信頼度 | 同上(表の欄。行=槽、列=測定の欄) | 温度・pH・分析値・補給 |
| 表と行の信頼度 | 同上 | 表全体の読み取りがずれていないかの確認 |
| 語ごとの信頼度 | 解析結果の pages の words | 手書きの数字の確からしさ |
| 様式の種類の信頼度 | 解析結果の文書の種類の信頼度 | 別のラインの様式や、記録表でない紙の混入を見つける |
表は、固定の表としてラベルを付けます。 槽の数と測定の欄が毎日同じなので、行と列の数が決まった表です。公式ページでは、表・行・セルの信頼度は、カスタム モデルでは API の版 2024-11-30 から返るとされ、固定の表では、セルの信頼度だけでも予測の質をかなり表すと説明されています。セルごとに判断すればよく、読み取りの後の処理が単純になります。
ラベル付けは、表の自動ラベルから始めます。 公式ページでは、レイアウトで抽出した表の値から表の欄を作り、必要なところだけ直す方法が案内されています。A3の1枚の表なので、この方法が使えます。
AIへ渡す前に整形する
- ラインと日付の確認 … フォルダとファイル名から取ります。読み取った日付の欄と食い違えば、
reviewにします - 向きと解像度の確認 … 文字の高さが下限(1024×768の画像で12ピクセル、150dpiで約8ポイント)を下回らないかを見ます。小さな数字が多いので、300dpi でスキャンします
- 汚れの多いページの検知 … 記録表は液のそばに置かれ、しみや濡れた跡が付きます。様式の種類の信頼度が低いページは、読み取りの結果を使わずに人に回します
- 重複の検知 … 同じラインの同じ日付が二度スキャンされたら、後のほうを使い、前のほうは捨てます
- 稼働の予定の取り込み … その日に動いていなかった槽を、判定の対象から外します
補給の欄は、読み取った後にプログラムで分けます。「Ni補給 2L 14:10」「光沢剤 200mL 10時」のような1セルの文字を、薬品・量・単位・時刻に分け、薬品名は槽ごとの補給の一覧の名前(略称を含む)と照らします。量の単位が無いもの、時刻が読めないものは review にして、推測で埋めません。
3番目は、めっきの現場ならではです。 記録表がしみで読めなくなるのは珍しくありません。汚れが続くラインには、記録表をクリアファイルに入れて使ってもらうなど、紙の扱いを先に変えます。
AIに処理させる
AIにさせるのは、決まった位置の表のセルを読み取り、値と信頼度を返すことだけです。 推移表への変換、範囲の照合、空欄の区別、補給の欄の分解は、プログラムが行います。
| 見るもの | 判定の仕方 | 印を付ける条件 |
|---|---|---|
| 温度(朝・昼・夕) | 数値として読めるか。管理範囲の上限と下限 | 範囲外は out_of_range。空欄は missing |
| pH(朝・昼・夕) | 同上 | 同上 |
| 分析値(朝・夕) | 同上。小数点の位置 | 同上。小数点の無い値は review |
| 補給(薬品・量・時刻) | 薬品名が槽の補給の一覧にあるか。量と時刻が読めるか | 一覧に無い薬品、量の単位が無いもの |
| 記入者・確認者 | 記入があるか | 空欄は missing |
| セルの信頼度 | 信頼度が線を下回るか | unreadable |
空欄の判定は、2つの材料を合わせて行います。 公式ページでは、値の無いセルは NULL として返り、信頼度が高ければ「値が無い」という予測が正しい見込みが高く、低ければ値を取りこぼした可能性があるとされています。値が無く信頼度が高いものは missing、値が無く信頼度が低いものは unreadable にします。 前者は現場への確認、後者は画像を見れば済みます。
| させないこと | 理由 |
|---|---|
| 読めない数字を前後の日の値から推測で埋める | 外れを隠す。unreadable のまま人が画像で直す |
| 小数点の位置を範囲に合うように直す | 範囲に合わせて直すと、本当の外れが消える |
| 補給の量を決める | 液の状態と生産の予定を見て、作業者と生産技術が決める |
| 液の更新の要否の判断 | 推移と不良の記録を合わせて、生産技術が決める |
| 外れを理由にラインを止める | 止めるかは班長と生産技術の判断。一覧で知らせるまでにする |
2行目がいちばん起きやすい失敗です。 分析値の「125」が管理範囲の「12.5前後」と合わないとき、「小数点の書き忘れだろう」と直すと、本当に濃度が10倍ずれていた場合を見逃します。 そんな値はまず無いとしても、決めるのは画像を見た人です。
指示内容を固定する
カスタム テンプレート モデルは文章の指示で動くものではなく、ラベル付けした欄の定義と、学習に使うサンプルで何を読むかが決まります。ラベル付けの決まりを、次のように文書にして担当者でそろえます。
【液管理の記録表のラベル付けの決まり(第2ライン)】
対象:第2ラインの液管理の記録表 A3 横 1枚
学習用のサンプル:記入済みの記録表を5枚以上(できれば15枚)
- 字のきれいな作業者と崩れた作業者、空欄の多い日、しみの付いた日を混ぜる
- 補給の欄が空の日と、複数行書かれた日を混ぜる
【欄の名前と種類】
record_date ........ 記入欄(日付。サブタイプは日付)
line_name .......... 記入欄(ライン名)
bath_table ......... 固定の表(行=槽10行、列は下のとおり)
temp_am / temp_noon / temp_pm ....... 温度(℃)
ph_am / ph_noon / ph_pm ............. pH
conc_am / conc_pm ................... 分析値(主成分の濃度)
replenish ........................... 補給(薬品・量・時刻。複数行を1セル)
writer .............................. 記入者
checker_seal ....... 署名(確認者の印)
【やらないこと】
- 記録表の隅に印刷された管理範囲の一覧をラベルに含めない
- 欄の外の余白のメモを表のセルに含めない
- 第1ラインの記録表を第2ラインのモデルに混ぜない(ラインごとに学習して合成する)
「印刷された管理範囲をラベルに含めない」を明記するのは、範囲の数値を読んでしまうからです。 隅の一覧は毎日同じ値なので、学習に入れても害が無いように見えますが、欄の位置がずれた日に、範囲の数値が測定値として入ることがあります。範囲はプログラムの側の表から取ります。
日付には、日付のサブタイプを選びます。 公式ページでは、欄を作るときに適切なサブタイプを選ぶと後処理が減るとされています。作業者の「10/26」「26日」のような書き方を、同じ形にそろえる手間が減ります。
学習の後に出る推定の精度も見ます。 公式ページでは、テンプレート モデルは学習のときに欄ごとの推定の精度を出し、80%以上を目安にするとされています。分析値の列が目安に届くまで、サンプルを足します。
出力形式を固定する
1槽の1日分ごとに、次の形の JSON を作り、推移表の1行にします。
{
"line": "L2",
"date": "2026-10-26",
"bath_no": "L2-05",
"bath_name": "ニッケルめっき槽",
"operating": true,
"readings": [
{ "item": "temp_am", "value": 0.0, "confidence": 0.0,
"status": "ok | out_of_range | missing | unreadable | review",
"range": { "min": 0.0, "max": 0.0, "version": "" } }
],
"replenish": [ { "chemical": "", "amount": 0.0, "unit": "", "time": "", "status": "ok | review" } ],
"next_conc_after_replenish": 0.0,
"writer": "",
"flags": ["out_of_range", "missing"]
}
readings には、温度とpHを3回分、分析値を2回分、同じ形で並べます。
1つ目の理由は、セルごとに status と、照らした範囲の version を持てることです。 一覧には ok 以外のセルだけを出します。範囲の版が残っているので、範囲を改めた後でも、当時の基準で外れていたかが分かります。
2つ目は、補給と次の分析値を同じ行に持てることです。 next_conc_after_replenish には、補給の時刻の後に測った最初の分析値を入れます。補給の量と、その後の分析値を並べたグラフが、推移表からそのまま作れます。
3つ目は、operating で止めていた槽を区別できることです。 止めていた日の行は推移のグラフから外し、空欄を印にしません。
毎朝送る日次の一覧は、印の付いた槽だけを次のように並べます。
【液管理の日次の一覧】2026-10-26 分(10月27日 7:00 送信)
■ 未着:なし
■ 第2ライン
L2-05 ニッケルめっき槽 conc_pm out_of_range 値 xx.x(範囲 xx.x〜xx.x/版 2026-04)
補給:あり(14:10 記載)→ 補給後の分析値 xx.x
L2-07 水洗槽 temp_noon missing (値なし・信頼度 高)
■ 第3ライン
L3-02 酸洗い槽 ph_am unreadable (値なし・信頼度 低)→ 画像を開く
補給の有無を外れの行に並べるのは、確かめる順番を決めるためです。 外れていても補給が書かれていれば、作業者は決まりどおり動いています。補給も報告も無い外れから先に、班長と確かめます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| ラインごとのフォルダ | Azure Functions の保存のトリガー | スキャンの保存を検知する |
| Document Intelligence | 解析の API(合成したカスタム モデル) | 表のセルの値と信頼度 |
| 管理範囲の表・稼働の予定 | 読み取りのみ | 照合の元 |
| 推移表 | 共有の表計算への行の追加 | 槽ごとのシートに1日1行 |
| 日次の一覧 | メールまたは社内のチャット | 印の付いた槽だけを、毎朝7時に送る |
推移表への書き込みは、行の追加だけにします。 既存の行を書き換えません。生産技術の担当が画像を見て直した値は、直した値の列として別に持ち、読み取った値は残します。
管理範囲の表は、生産技術課の責任者だけが変えられるようにします。 範囲を変えた日と理由を、表の中に記録します。
人が確認する
生産技術の担当が、毎朝の一覧で印の付いた槽を確かめます。 印の無い槽は、推移のグラフを週に1回見ます。
unreadableを画像で直す … 一覧から記録表の画像の該当のセルを開き、値を直しますout_of_rangeを班長と確かめる … 外れたときに補給したか、報告したかを、記録表の補給の欄と合わせて聞きますmissingの理由を聞く … 測り忘れか、書き忘れか、その時間に人がいなかったかを、翌朝のうちに聞きます- 確かめた内容を推移表に書く … 理由の欄に、聞き取った内容を残します
2番目と3番目を翌朝にするのが、この構成の意味です。 週に1回では作業者が覚えておらず、聞き取りが形だけになります。前日のことなら、まだ答えられます。
週に1回は、印の無い槽も推移のグラフで見ます。 範囲の中に収まっていても、分析値が下限に向かって少しずつ下がっている、補給の量が週ごとに増えている、といった流れは一覧には出ません。一覧は外れを拾うもの、グラフは外れる前の兆しを見るものと分けて使います。
目標は、780件をならして1件1分です。 印の無い槽は数秒、印の付いた槽は画像を見るか班長に聞くかで数分かかります。印の付く槽が多いラインは、記録表の汚れか、測る回数の決まりが現場に合っていない可能性を疑います。
例外に対処する
| 起きること | 対応 |
|---|---|
| 様式の種類の信頼度が低い | 別のラインの様式か、記録表でない紙。読み取りを使わず、担当者が画像を見て転記する |
| しみや濡れで表の一部が読めない | 該当のセルを unreadable にして、画像で直す |
| 日付の欄とファイル名の日付が違う | review。班長にどちらが正しいかを確かめる |
| 同じラインの同じ日付が二度スキャンされた | 後のほうを使い、前のほうを捨てる |
| 管理範囲の表に無い槽が書かれている | 新しい槽か、槽の付け替え。槽の一覧を直すまで判定しない |
| 補給の欄の薬品名が一覧に無い | review。薬品の名前のゆれか、普段使わない薬品かを確かめる |
| 分析値に小数点が無い | review。範囲に合わせて直さない |
| 1日分の記録表がスキャンされていない | 翌朝の一覧に「未着」として出す |
| Document Intelligence が応答しない | ファイルをフォルダに残し、次の起動で再処理する |
8行目は、毎朝の一覧に必ず出します。 スキャンを忘れた日が続くと、この構成は週に1回の回収に戻ります。「未着」が一覧の先頭に出ていれば、班長は気づけます。
記録を残す
- 記録表の画像と、ライン・日付・スキャンの日時
- 読み取り結果の JSON の全文(セルの値と信頼度、表と行の信頼度、語ごとの信頼度)
- 推移表の行と、そのとき照らした管理範囲の版
- 生産技術の担当が直した値の、直す前と後と、直した人と日時
missingとout_of_rangeについて、聞き取った理由- 合成したモデルの版と、その版の学習時の推定の精度
4つ目は、モデルの学習し直しの材料です。 同じ作業者の同じ数字が繰り返し直されているなら、その人の「7」の書き方をサンプルに足します。
5つ目は、液の管理の振り返りの材料です。 外れのときに補給しなかった理由が「薬品の在庫が無かった」で続くなら、問題は記録ではなく薬品の発注の段取りにあります。
04実装レベルの3段階
最小構成は、確かめるための段階です。 半自動化で、1件4分が1分になります。この段階が本記事の想定です。 転記が無くなり、範囲の照合も機械になります。本格構成は、外れた日のロットを追う必要が出たときに検討します。 生産の記録がまだ紙なら、半自動化で十分に効果が出ます。 段階を進める前に、管理範囲の表を整えてください。 範囲の表が無いと、半自動化でも照合は手作業のまま残ります。
05工数削減シミュレーション
導入後 780件 × 1分 ÷ 60 = 13 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 電気めっき・無電解めっきのラインを複数持ち、作業者が槽ごとの温度・pH・分析値・補給の量を紙の記録表に手書きして、生産技術や品質管理の担当が表計算に転記している工場。記録表の様式が社内で決まっていて、槽の並びと記入欄の位置が毎日同じ場合。槽ごとの管理範囲が、薬品の取扱説明や社内の標準で決まっている場合。Azure を使っている、または使い始められる場合。
- 液の分析と温度の記録がすでに計測器や分析装置から自動で取り込まれている場合。槽が数槽で、記録表の転記に月に数時間もかからない場合。記録表の様式がラインや担当ごとにばらばらで、決まった位置に記入欄が無い場合。なお、補給の量の決定、液の更新の判断、不良が出たロットの扱いは、この構成では代替できません。
07最小構成で試す方法
- 1つのラインの先月の記録表から20枚を選ぶ(字のきれいな日、崩れた日、空欄の多い日、しみの付いた日を混ぜる)
- その20枚について、表計算の管理表に転記した値を書き出す
- Document Intelligence Studio で、20枚のうち8枚にラベルを付けてテンプレート モデルを学習する
- 残りの12枚を学習したモデルで読み取る
- 読み取った値を、管理表の値とセルごとに突き合わせる
分析値の列の一致の割合を最初に数えます。 温度とpHは桁が少ないので合いやすく、小数点を含む分析値がいちばん崩れます。 一致しなかったものは、読み取りの誤りか、転記の誤りかを画像で確かめます。いまの管理表の側の転記の誤りが見つかることも珍しくありません。
空欄の区別も、この12枚で確かめます。 記録表の空欄に印を付けておき、読み取りの結果で値の無いセルの信頼度が高く出るか、低く出るかを見ます。空欄なのに信頼度が低く出るセルが多いなら、学習のサンプルに空欄の多い日が足りていません。
| 出てきた内容 | 判断 |
|---|---|
| 分析値の大半が一致し、空欄も空欄として出た | 推移表への変換と範囲の照合に進む |
| 数字は読めたが、小数点を落とす | 想定どおり。review に回す規則で補う |
| 表の行がずれて、隣の槽の値が入った | 記録表の書き方が行からはみ出している。サンプルを増やすか、行の罫線を太くする |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
空欄が全部 missing になる | 値の無いセルの信頼度で missing と unreadable を分ける |
| 止めていた槽の空欄まで印になる | 稼働の予定を取り込み、止めていた槽を外す |
| 小数点の無い分析値を範囲に合わせて直す | 直さない。review にする |
| 印刷された管理範囲を測定値として読む | ラベルに含めない。範囲はプログラムの表から取る |
| ラインごとの様式を1つのモデルで学習する | ラインごとに5枚以上で別に学習し、合成する |
| 記録表のしみで読めない | クリアファイルに入れて使ってもらう |
| スキャンを忘れる日が続く | 毎朝の一覧の先頭に「未着」を出す |
| 一覧が夜中に何通も届いて読まれない | 毎朝7時に1回だけ送る |
| 外れを理由にラインを自動で止める | 知らせるまでにする。 止めるかは人が決める |
上の2行が、この構成の失敗のほとんどです。 どちらも空欄の扱いで、要らない印が一覧を埋めると、担当者は一覧を読まなくなります。 印の数は、少なく正しくが原則です。
下の2行は、運用に乗るかを決めます。 一覧は読まれて初めて意味があり、止める判断を機械に寄せると、現場が仕組みを信用しなくなります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: めっき液の温度・pH・分析値・補給の記録と、記入者の名前です。液の管理の条件は、受託加工の品質を左右する工場のノウハウです。
- 記録表の画像と推移表を外に出さない … 槽ごとの管理範囲と補給の量の推移は、工場の工程の条件そのものです。保管の場所と、見られる人の範囲を決めます
- 取引先との取り決めを確かめる … 自動車部品などでは、工程の条件の記録の保管の期間や、変更の届け出が取引先との取り決めで決まっていることがあります。紙の記録表と電子の推移表のどちらを原本とするかを、品質保証の担当と決めます
- 記入者の名前の扱いを決める … 推移表には記入者が残ります。外れや空欄の多さを個人の評価に使わないことを、現場に先に伝えます。使うと、空欄が書き込みで埋められるようになります
- 外れの判断と止める判断を人に残す … 一覧は知らせるまでで、補給、報告、ラインを止めるかは、作業者・班長・生産技術が決めます
- 範囲の表の変更を記録する … 範囲を誰がいつ変えたかを残し、過去の判定を当時の範囲で読めるようにします
誤りが起きた場合のリスクは、外れを見逃すことと、外れていないのに外れと出ることの2つです。 前者は小数点の誤読を範囲に合わせて直すと起き、後者は読めない数字を測定値として扱うと起きます。どちらも、unreadable と review を人が画像で見る線を守れば防げます。
10まず何から始めるか
1週目:管理範囲の表を作る
記録表の隅に印刷されている範囲と、薬品の取扱説明、社内の標準を突き合わせ、槽ごとの温度・pH・分析値の上限と下限、補給の目安、測る回数の表にします。食い違っているものがあれば、生産技術課の責任者が決めます。
2週目:1ライン・20枚で試す
第8章の手順で、20枚のうち8枚でモデルを学習し、12枚を読ませて管理表と突き合わせます。分析値の小数点と、空欄の区別を最優先で見ます。
3週目:スキャンの段取りを決める
班長が1日の終わりに記録表をスキャンする手順を決め、ラインの複合機に300dpi の設定を登録します。スキャンは確認の印の後、という順番をここで決めます。
4週目:フォルダから毎朝の一覧までをつなぐ
1ラインだけで、保存の検知、読み取り、推移表への変換、範囲の照合、毎朝の一覧を動かします。この時点では週に1回の転記も続け、両方の結果を見比べます。
2か月目: 3ラインに広げ、週に1回の転記をやめます。3か月目以降: 補給と分析値を並べたグラフを月末の液の判断に使い、1件4分が何分になったかを実測します。外れと空欄の理由が翌朝のうちに推移表に書かれるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| テンプレート モデルがラベル付けしたキーと値のペア・選択マーク・テーブル・領域・署名を抽出し、決まった見た目の様式に向くこと。様式ごとに少なくとも5枚のサンプルで別のモデルを学習し、合成するよう案内されていること。PDF と TIFF は最大2,000ページ(無料のレベルは最初の2ページ)、文字の高さの下限が1024×768の画像で12ピクセル(150dpiで約8ポイント)であること | Microsoft Learn: Custom template document model | 2026-10-26 |
カスタム テンプレート モデルの手書きの文字の抽出の対応言語に日本語(ja)が含まれること | Microsoft Learn: Language support for custom models | 2026-10-26 |
カスタム モデルの表・行・セルの信頼度が API の版 2024-11-30 から返ること。固定の表ではセルの信頼度が予測の質をかなり表すこと。値の無いセルは NULL と信頼度で返り、信頼度が高ければ値が無いという予測が正しい見込みが高く、低ければ取りこぼしの可能性があること。テンプレート モデルが学習時に推定の精度を出し、80%以上を目安とすること | Microsoft Learn: Interpret and improve model accuracy and confidence scores | 2026-10-26 |
| レイアウトで抽出した表から表の欄を作る自動ラベルがあり、1ページの表に対応すること。欄を作るときに日付などのサブタイプを選ぶと後処理が減ること | Microsoft Learn: Labeling tips for custom models | 2026-10-26 |
槽ごとの管理範囲と補給の目安は、使っている薬品の取扱説明と、自社の標準、取引先との取り決めで確かめてください。 本記事は、上記の公開情報で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1764)についてのご相談はこちらから。
