Media > AI活用ユースケース > 品質管理 > 包装に印字した賞味期限とロット番号を生産ラインのカメラ画像で読み取り、印字の欠け・かすれと生産計画との食い違いを見つけてラインを止める

包装に印字した賞味期限とロット番号を生産ラインのカメラ画像で読み取り、印字の欠け・かすれと生産計画との食い違いを見つけてラインを止める

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

包装ラインを流れる袋や箱をカメラで撮り、印字された賞味期限とロット番号を読み取って、生産計画から作った正しい印字と照らします。欠け・かすれ・食い違いがあればその包装を排出し、続けば止めます。

サマリー
連携・自動化
Python
対象業界
物流/製造
対象部門
品質管理/生産
対象業務
内容確認・チェック/記録・議事録作成
主な課題
人手が足りない/属人化している/確認ミスが多い
AIで行う処理
画像認識
主な効果
品質標準化/工数削減/機会損失防止
導入難易度
★★★★★
実装レベル
本格構成
費用感
個別開発(大)
人間の確認
条件付き
現在工数
60h/月
AI導入後
20h/月
想定削減
67%
年間削減
480h
モデル条件による試算値です。実在企業の実績ではありません。

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

導入前(Before)
  1. 品目の切り替えのとき、作業者が生産計画を見てプリンタの印字の設定を変える
  2. 切り替えの直後、包装を数個取り出し、印字を生産計画の写しと照らす
  3. 印字確認記録に、日時・品目・印字の内容・良否を書いて押印する
  4. 以後1時間ごとに、同じように包装を取り出して印字を見る
  5. かすれや欠けがあれば、ラインを止めてプリンタのヘッドを清掃し、前の確認からの包装を見直す
  6. 直の終わりに、品質保証部が記録を確かめて承認する
導入後(After)
  1. 自動生産計画と品目マスタから、ラインごとに「いま印字されているべき文字列」を作る
  2. 人品目の切り替えのとき、作業者がプリンタの設定を変え、検査の画面で切り替えを登録する
  3. 自動包装の通過をセンサーで捉え、カメラが印字の面を撮る
  4. 自動Python が、画像の中の印字の位置を合わせて、印字の領域を切り出す
  5. 自動印字の領域の濃さと文字の画素の割合から、印字の有無と濃さを測る
  6. 自動文字の読み取りのモデルが、賞味期限とロット番号を読み、確からしさを返す
  7. 自動正しい文字列と1文字ずつ照らし、`ok` / `mismatch` / `faint` / `missing` / `uncertain` を付ける
  8. 自動`ok` 以外の包装を排出装置で外し、同じ判定が続けばラインの停止の信号を出す
  9. 人作業者が停止の理由と画像を見て、プリンタの清掃や設定の直しをする
  10. 自動切り替えの直後、1時間ごとの時点で、判定の集計と代表の画像を印字確認記録にする
  11. 人品質保証部が記録と排出・停止の履歴を確かめて承認する
各工程の詳しい説明を読む
  1. 品目の切り替えのとき、作業者が生産計画を見てプリンタの印字の設定を変える
  2. 切り替えの直後、包装を数個取り出し、印字を生産計画の写しと照らす
  3. 印字確認記録に、日時・品目・印字の内容・良否を書いて押印する
  4. 以後1時間ごとに、同じように包装を取り出して印字を見る
  5. かすれや欠けがあれば、ラインを止めてプリンタのヘッドを清掃し、前の確認からの包装を見直す
  6. 直の終わりに、品質保証部が記録を確かめて承認する

(a)間の包装を見ていない。 1時間ごとの抜き取りでは、その間に流れた数千個の包装は誰も見ていません。 インクの詰まりでかすれ始めても、次の確認まで気づかず、見つかったときには1時間分を見直すことになります。

(b)切り替えで設定を変え忘れる。 1番目の設定の変更は人の手です。前の品目の賞味期限のまま印字が続くと、2番目の確認で見落とせば、その品目のロット全体が誤った表示になります。 印字の誤りによる回収は、包装の作り直しより何倍も重い失敗です。

(c)かすれの良し悪しが人で違う。 「読めるからよし」とする作業者と、「薄いから止める」作業者がいます。同じ印字でも、直によって判定が変わります。

(d)記録が後から書かれる。 忙しい時間帯は、3番目の記録を後でまとめて書くことがあります。品質保証部の承認は、書かれた記録を信じるしかありません。

  1. 【自動】 生産計画と品目マスタから、ラインごとに「いま印字されているべき文字列」を作る
  2. 【人】 品目の切り替えのとき、作業者がプリンタの設定を変え、検査の画面で切り替えを登録する
  3. 【自動】 包装の通過をセンサーで捉え、カメラが印字の面を撮る
  4. 【自動】 Python が、画像の中の印字の位置を合わせて、印字の領域を切り出す
  5. 【自動】 印字の領域の濃さと文字の画素の割合から、印字の有無と濃さを測る
  6. 【自動】 文字の読み取りのモデルが、賞味期限とロット番号を読み、確からしさを返す
  7. 【自動】 正しい文字列と1文字ずつ照らし、ok / mismatch / faint / missing / uncertain を付ける
  8. 【自動】 ok 以外の包装を排出装置で外し、同じ判定が続けばラインの停止の信号を出す
  9. 【人】 作業者が停止の理由と画像を見て、プリンタの清掃や設定の直しをする
  10. 【自動】 切り替えの直後、1時間ごとの時点で、判定の集計と代表の画像を印字確認記録にする
  11. 【人】 品質保証部が記録と排出・停止の履歴を確かめて承認する

1番目が、この設計の分かれ目です。 正しい文字列を生産計画から作るので、作業者が設定を変え忘れれば、切り替えの直後の1個目から mismatch が出ます。 画像どうしを比べる作りでは、これは捕まりません。

2番目の登録を、プリンタの設定の変更と分けているのも意図してのことです。 検査の側の切り替えは生産計画に従い、プリンタの側は人が変えます。両方を同じ人が同じ操作で変えると、同じ誤りが両方に入ります。

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

構成図
生産計画(日ごと・ラインごとの品目と製造日)/品目マスタ(賞味期間・表示の形式)
   ▼
正しい文字列の作成 ── 例「賞味期限 2027.04」「ロット A0412K3」
   ▼
包装ライン ── プリンタで印字 → 【トリガー】通過のセンサー → 産業用カメラと照明
   ▼
Python(OpenCV)
   ├──▶ 位置合わせ(matchTemplate)と印字の領域の切り出し
   ├──▶ 印字の濃さ・文字の画素の割合
   ▼
PaddleOCR の文字の読み取りのモジュール(自社の印字で追加学習)
   │   rec_text(読んだ文字列)/rec_score(確からしさ)
   ▼
照合と判定 ── ok / mismatch / faint / missing / uncertain
   ├──▶ 排出装置(1個ずつ)
   ├──▶ ラインの停止の信号(同じ判定が続いたとき)
   ▼
【作業者が停止の理由を見る】→ 印字確認記録 →【品質保証部の承認】
役割想定する製品代替候補
実行環境Python(OpenCV・PaddleOCR)C++ と OpenCV
処理エンジンPaddleOCR の文字の読み取りのモジュール(PP-OCR の読み取りのモデルを自社の印字で追加学習)PyTorch で学ばせた自社の読み取りのモデル
処理OpenCV(位置合わせ・印字の濃さの測定)scikit-image
撮影産業用カメラと照明(ラインの速度と包装の材質に合わせて選ぶ)-
排出と停止既存の排出装置と、ラインの制御盤への停止の信号-

生産計画と品目マスタには書き込みません。 読むだけで、正しい文字列を作る計算は、品目マスタの賞味期間と表示の形式に従った決まった計算です。プリンタの設定にも触れません。プリンタを検査の側から書き換えると、検査とプリンタが同じ誤りを共有します。

読み取りの中心は、PaddleOCR の文字の読み取りのモジュールです。 切り出した文字の領域の画像を文字列に直す部品で、結果には読んだ文字列の rec_text と、確からしさの rec_score が入ります。 Python では paddleocr の TextRecognition を作り、predict() に画像を渡します。PP-OCRv5 と PP-OCRv6 の読み取りのモデルは日本語を含む複数の言語を扱い、自社のデータで学ばせ直す手順も公開されています。

自社の印字で学ばせ直すのは、プリンタの文字が一般の文字と違うからです。 インクジェット式の点で組んだ数字や、熱転写式の細い文字は、印刷物の文字で学んだモデルには読みにくいことがあります。PaddleOCR の追加学習の案内では、縦の用途に合わせるとき、文字の読み取りには少なくとも5,000件のデータを用意することが勧められ、 文字の辞書は変えないことが勧められています。辞書を変えると最後の層の重みが読み込めず、より多くのデータが要るとされています。この構成の文字は数字・英字と「賞味期限」などの決まった語なので、辞書は変えずに済みます。

位置合わせは、OpenCV の matchTemplate で行います。 テンプレートの画像を入力の画像の上で滑らせて比べ、一致の度合いの画像を返す関数で、minMaxLoc で最も一致する位置を取ります。包装のフィルムに最初から刷ってある「賞味期限」の枠をテンプレートにし、 そこからの相対の位置で印字の領域を切り出します。

生成AIは使いません。 1個ずつの判定は、ラインの速度の中で決まった計算で終える必要があり、判定の理由も決まった言葉で残します。

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

Step1

処理の起点を決める

包装がカメラの前を通ったことを、通過のセンサーで捉えて撮ります。 センサーの信号でカメラが1枚撮り、その画像を Python の処理に渡します。1個ごとに撮るので、抜き取りの間の包装もすべて見ます。

品目の切り替えは、別のきっかけとして扱います。 作業者が検査の画面で切り替えを登録すると、生産計画の次の品目の正しい文字列に切り替わります。登録が無いまま印字が変われば、1個目から mismatch が続き、止まります。 登録だけして設定を変え忘れた場合も同じです。

印字確認記録は、時刻で作ります。 切り替えの直後と1時間ごとに、それまでの判定の集計と代表の画像をまとめます。紙の記録の時点をそのまま引き継ぐので、品質保証部の承認の流れは変わりません。

Step2

入力データを集める

データ中身取得元
包装の画像印字の面を撮った1枚、撮った時刻、ライン産業用カメラ
生産計画日、ライン、品目、製造日、予定の数量生産計画の書き出し
品目マスタ品目、賞味期間(日数)、年月表示か年月日表示か、日付の書式、ロット番号の付け方品目マスタの書き出し
切り替えの登録ライン、品目、登録した時刻と人検査の画面
テンプレートの画像包装の種類ごとの「賞味期限」の枠の画像と、印字の領域の相対の位置立ち上げのときに作る

質を決めるのは、品目マスタの賞味期間と表示の形式です。 正しい文字列は、ここから計算で作ります。品目マスタの値が誤っていれば、正しく印字された包装をすべて mismatch で止めてしまい、 逆に印字の設定と同じ誤りがあれば、誤りを素通しします。品目マスタの値は、品質保証部が承認したものだけを使います。

年月で表示する品目は、どの月を表示するかの決め方を品目マスタに持たせます。 賞味期限の日を年月で表すときの月の決め方は、自社の表示の取り決めとして品質保証部が決めているはずです。計算の側で勝手に決めないでください。

Step3

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

生産計画と品目マスタは、それぞれの仕組みの書き出しの機能で表の形のファイルを出し、始業前と、生産計画が変わったときに読み直します。 書き出しを API で取れる仕組みなら定時に取りに行きます。

取るものどこから何に使うか
その日のラインごとの品目と製造日生産計画正しい文字列の材料
賞味期間・表示の形式・ロットの付け方品目マスタ正しい文字列の計算
包装の画像カメラ読み取りと濃さの測定
切り替えの登録検査の画面どの品目の文字列と照らすか

画像は、検査用の端末で処理し、外に送りません。 ラインの速度の中で判定を終える必要があり、通信の遅れや切断で判定が止まると、ラインも止まります。 クラウドの読み取りのサービスに送る作りは、この用途には向きません。

追加学習の画像は、ラインで撮ったものを使います。 立ち上げの1〜2か月は判定をせずに撮りため、その時点の生産計画から作った正しい文字列を付けます。正しく印字された包装の画像なら、正しい文字列がそのまま答えになるので、1枚ずつ文字を打ち込む必要はありません。 手で答えを付けるのは、かすれた印字や欠けた印字の画像だけです。プリンタの種類、包装の色、日付の形(年月か年月日か)ごとに偏りなく集めます。

Step4

AIへ渡す前に整形する

  1. 位置合わせ … テンプレートの画像で matchTemplate を行い、一致の度合いが閾値に届かなければ missing(印字の面が撮れていない)とします
  2. 印字の領域の切り出し … 一致した位置からの相対の位置で、賞味期限とロット番号の領域を切り出します
  3. 傾きの補正 … 包装が搬送の上で少し回っていることがあるので、枠の線の向きから傾きを直します
  4. 明るさの正規化 … フィルムの光沢や照明のむらを抑えるため、領域の中の明るさをそろえます
  5. 印字の濃さの測定 … 領域の中で文字と判定される画素の割合と、文字と地のコントラストを測ります
  6. 正しい文字列の作成 … 製造日に賞味期間を足し、品目マスタの書式で日付にし、ロット番号の付け方で組み立てます

5番目は、読み取りとは別に測ります。 読み取りのモデルは、かすれていても文脈で正しく読んでしまうことがあります。読めたから合格、とすると、店頭で人が読めない印字を通します。 濃さの数値は、良品の印字で測った範囲と比べます。

6番目の計算は、モデルに任せません。 日付の計算と書式は決まった規則で書き、月末の日付や閏年の2月、年をまたぐ賞味期限を、立ち上げのときに試験の値で確かめておきます。

3番目と4番目は、良品の範囲を作るときと同じ処理にします。 濃さの基準は、立ち上げのときに良品の画像で測った値の範囲です。基準を作ったときと判定のときで明るさの正規化が違うと、 照明が少し暗くなっただけで全部が faint になります。処理の版を記録し、変えたら基準を測り直します。

Step5

AIに処理させる

させるのは、切り出した印字の領域の文字を読み、確からしさを返すことだけです。 照合、濃さの判定、排出と停止の判断は、決まった規則で行います。

判定決め方判断できないときの扱い
ok読んだ文字列が正しい文字列と一致し、確からしさと濃さが基準を満たす-
mismatch確からしさは基準を満たすが、文字列が正しい文字列と違う-
faint文字列は一致するが、濃さが良品の範囲を下回る-
missing位置合わせに失敗、または文字の画素がほとんど無い撮り損ねか印字なしかは区別しない
uncertain確からしさが基準に届かない良品に入れず排出し、人が見る

mismatch と uncertain の分かれ目が、この構成でいちばん大事な区別です。 確からしさが高いまま違う文字を読んだのは、印字そのものが違うということで、品目の切り替えの誤りを疑います。確からしさが低いのは、印字が崩れているか、撮り方が悪いということです。対応する人と手順が違います。

させないこと理由
正しい文字列の計算品目マスタと決まった規則で作る
確からしさの低い読み取りの補正正しい文字列に寄せて読むと、誤りが消える
出荷の可否の判断排出した包装の扱いは品質保証部が決める
プリンタの設定の書き換え検査とプリンタが同じ誤りを共有する
停止の解除作業者が原因を確かめてから解除する

2行目がいちばん起きやすい失敗です。 読み取りの結果を正しい文字列と照らして「1文字違いなら正しい方に直す」補正を入れると、本当に1文字違って印字された包装が ok になります。 補正は一切入れません。

Step6

指示内容を固定する

この構成は生成AIを使わないので、プロンプトの代わりに、読み取りの設定と判定の規則を書いておきます。

【読み取り】
- paddleocr.TextRecognition(自社の印字で追加学習した PP-OCR の読み取りのモデル)
- 入力:切り出した領域の画像(賞味期限・ロット番号の2つ)
- 出力:rec_text(文字列)、rec_score(確からしさ)
- 文字の辞書は変えない。追加学習の画像は、プリンタの種類ごとに集める

【正しい文字列】
- 賞味期限の日 = 製造日 + 賞味期間(日数)
- 表示の形式 = 品目マスタの値(年月 / 年月日)
- 年月表示の月の決め方 = 品目マスタの値(品質保証部が決めたもの)
- ロット番号 = 品目マスタの付け方(例:工場の記号 + 製造日 + ラインの記号)

【判定の規則】
- missing  : 位置合わせの一致の度合い < 0.70、または文字の画素の割合 < 良品の下限の 30%
- uncertain: rec_score < 0.90(文字列が一致していても)
- mismatch : rec_score ≧ 0.90 かつ 文字列 ≠ 正しい文字列(補正しない)
- faint    : 文字列 = 正しい文字列 かつ 濃さ < 良品の範囲の下限
- ok       : 上のどれにも当たらない

【排出と停止】
- ok 以外は1個ずつ排出する
- mismatch が連続 3 個 → 停止の信号(切り替えの誤りを疑う)
- faint または uncertain が直近 50 個のうち 10 個 → 停止の信号(ヘッドの汚れを疑う)
- missing が連続 5 個 → 停止の信号(カメラ・照明・搬送を疑う)

「文字列が一致していても uncertain」を書いておかないと、確からしさの低い一致が ok になります。 確からしさが低いのに一致したのは、たまたまかもしれません。一致したかどうかより先に、確からしさで分けます。

閾値の数字は、立ち上げのときに自社の画像で決め直します。 上の数字は形を示すための例です。良品の画像と、わざとかすれさせた印字・前の品目の印字の画像を集め、 ok の取りこぼしと見逃しの両方を数えてから決めます。

Step7

出力形式を固定する

包装1個ごとに、次の形のJSONを残します。

{
  "line": "",
  "captured_at": "",
  "product_code": "",
  "expected": { "best_before": "2027.04", "lot": "A0412K3" },
  "read": {
    "best_before": { "text": "", "score": 0 },
    "lot": { "text": "", "score": 0 }
  },
  "print_density": { "ink_ratio": 0, "contrast": 0 },
  "align_score": 0,
  "verdict": "ok | mismatch | faint | missing | uncertain",
  "action": "pass | reject | reject_and_stop",
  "image_path": "",
  "model_version": ""
}

1つ目の理由は、expected と read を並べて残せることです。 何と照らし、何と読んだかが1件ごとに残るので、mismatch で止まったときに、作業者は画面でどの文字が違うかを見られます。 品目の切り替えの誤りなら、日付の全体が違います。

2つ目は、score と print_density を分けて持てることです。 かすれは濃さに、崩れは確からしさに出ます。ヘッドの汚れが進むと、まず濃さが下がり、次に確からしさが下がります。 両方を時系列で見ると、止まる前に清掃の時期が分かります。

3つ目は、action を判定と分けていることです。 同じ faint でも、1個だけなら排出、続けば停止です。判定はAIの読み取りと規則で、処置は規則だけで決まります。

Step8

システムへ連携する

つなぎ先方式内容
生産計画書き出しの読み取り日・ライン・品目・製造日
品目マスタ書き出しの読み取り賞味期間・表示の形式・ロットの付け方
通過のセンサーとカメラ撮影のきっかけの信号と画像の受け取り包装1個ごとの画像
排出装置既存の排出の入力への信号ok 以外の包装を外す
ラインの制御盤既存の停止の入力への信号同じ判定が続いたときに止める
印字確認記録表の書き出し時点ごとの集計と代表の画像

排出と停止は、既存の装置の入力に信号を渡すだけです。 制御盤の中の手順は変えず、停止の解除は作業者が盤の側で行います。 検査の側から再開させる経路は作りません。

検査の端末が止まったときは、ラインも止める側に倒します。 検査が動いていない間に流れた包装は、誰も見ていない包装になります。検査の端末から一定の間隔で「動いている」という信号を出し、途切れたら制御盤の側で止まるように組みます。

Step9

人が確認する

人が見るのは、停止したときと、排出された包装と、時点ごとの記録です。 ok の包装の画像を人が見ることはしません。全数を人が見る設計にすると、第10章の20.0時間には収まりません。

  1. 停止したら、理由の種類を先に見る … mismatch の連続ならプリンタの設定と生産計画を照らします。 faint と uncertain ならヘッドの清掃、missing ならカメラと照明と搬送を見ます
  2. 排出された包装の画像を見る … 本当に印字が悪いのか、撮り方が悪いのかを見分けます
  3. 停止の前に流れた包装の範囲を決める … mismatch で止まったときは、直前の切り替えの時刻からの包装をすべて見直す対象にします
  4. 記録を承認する … 品質保証部が、時点ごとの集計と排出・停止の履歴を確かめます

3番目を省かないでください。 mismatch が3個続いて止まったのなら、その前の包装も同じ誤りの可能性があります。排出された3個だけを外して再開すると、検査の前に流れた分が残ります。 検査の前に流れた分とは、カメラより上流で印字されたがまだカメラを通っていない包装と、検査の端末の起動前に流れた包装です。

停止の原因と処置は、作業者が画面の決まった選択肢から選んで残します。 「ヘッドの清掃」「設定の直し」「照明の調整」などです。自由な文章にすると、同じ原因が人によって違う言葉で書かれ、 どの原因が多いかを数えられません。

目標は、1,200件をならして1件1分です。 時点ごとの記録は画面で集計を確かめて承認するだけで、時間がかかるのは停止と排出の対応です。 それが多い月は、ヘッドの清掃の周期か、閾値を見直します。

Step10

例外に対処する

起きること対応
品目マスタに賞味期間が無い品目正しい文字列が作れない。その品目の生産を始めさせず、品質保証部へ
生産計画と違う品目を作ることになった生産計画を直してから切り替えを登録する。検査の画面だけで品目を変えない
新しい包装の種類で位置合わせができないテンプレートを作るまで、従来の抜き取りの目視に戻す
包装の材質の光沢で文字が飛ぶ照明の角度と偏光を見直す。閾値を下げて通さない
検査の端末が止まった動いている信号が途切れ、制御盤の側でラインが止まる
プリンタのインクやリボンを替えた直後濃さの基準を確かめ直すまで、faint の連続の閾値を一時的に下げない
読み取りのモデルを学ばせ直した前の版と同じ試験の画像で比べ、見逃しが増えていないときだけ切り替える
停止の後、作業者が原因を特定できない品質保証部に連絡し、原因が分かるまで再開しない
カメラのレンズや照明の覆いが粉や湯気で汚れる全ラインで同時ではなく1ラインだけ faint が増える。清掃の周期を決め、記録に残す
生産計画の読み直しの途中で切り替えが登録された読み直しが終わるまで切り替えを受け付けず、画面に待ちの表示を出す

上から2行目が、運用の最初にいちばん起きます。 急な品目の変更で、生産計画を直す前に包装を始めると、正しい印字なのにすべて mismatch で止まります。 止まったからといって検査の画面で品目を直す運用にすると、生産計画と検査の両方を同じ人が変えることになります。

Step11

記録を残す

  • 包装1個ごとの判定のJSON(expected、read、print_density、verdict、action)
  • ok 以外の包装の画像と、時点ごとの ok の代表の画像
  • 切り替えの登録の記録(ライン・品目・時刻・登録した人)
  • 停止の記録(理由の種類、停止と再開の時刻、作業者が行った処置)
  • 時点ごとの印字確認記録と、品質保証部の承認
  • 読み取りのモデルの版と、学ばせた画像の件数、試験の画像での見逃しの数
  • 品目マスタ・生産計画を読んだ時刻と、そのときの値

最後の行で「そのときの値」を残すのは、品目マスタが後から直ることがあるためです。 賞味期間を直した後に過去の判定を見直すとき、当時の正しい文字列が何だったかが残っていないと、どの包装が誤りだったかを決められません。

04実装レベルの3段階

最小構成:抜き取った包装を撮って読み取り、正しい文字列と照らす / 抜き取りの照合
半自動化:上記+ラインにカメラを据え付けて全数を撮り、判定と排出を行う。停止は作業者が判断する / 全数の読み取りと排出
本格構成:上記+生産計画からの正しい文字列の自動の作成、連続の判定での停止、印字確認記録の自動の作成 / 照合から停止と記録まで

半自動化で、①と②の大半が消えます。 ただし、正しい文字列を作業者が検査の画面に入れる形だと、プリンタと検査に同じ人が同じ値を入れることになり、 切り替えの誤りは捕まりません。 本格構成で、1件1分になります。 本記事の想定はこの段階です。正しい文字列が生産計画から作られ、記録が自動で作られます。 差が大きいのは、③の記入と押印が、画面での承認に変わるからです。 段階を飛ばさないでください。 半自動化を1〜2か月回すと、包装の種類ごとの位置合わせの失敗と、プリンタごとの濃さのばらつきが先に分かります。ここを詰めないまま停止をつなぐと、誤った停止でラインが止まり続けます。

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

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

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

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

AI活用について相談する

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

向いている
  1. 菓子・レトルト食品・調味料・飲料、洗剤などの日用品を、複数の包装ラインで1日に何度も品目を切り替えて作る工場。賞味期限とロット番号をインクジェットや熱転写のプリンタで包装に印字し、その確認を作業者の抜き取りの目視と記録用紙で行っている場合。印字の誤りによる回収や出荷止めを一度でも経験し、全数の確認に切り替えたい場合。生産計画と品目マスタから、その日の各ラインの品目と製造日を取り出せる場合。
向いていない
  1. 品目の切り替えがほとんど無く、1日中同じ印字が続くライン(切り替え時の初品の確認で足りる)。印字をラベルの発行機で行い、発行のデータそのものを照合できる場合(画像を読まずにデータで突き合わせる)。ラインの速度が非常に速く、包装1個ごとに撮影と判定を終える時間が取れない場合。なお、出荷の可否、回収の要否、表示の内容が法令に合っているかの判断は、この構成では代替できません。

07最小構成で試す方法

  1. 1つのラインで、品目の切り替えをはさむ1日分の包装から、200個を取り出す
  2. 印字の面をスマートフォンで真上から撮る(数個は、わざとかすれさせた印字と前の品目の印字を混ぜる)
  3. Python で PaddleOCR の読み取りのモジュールに画像を渡し、文字列と確からしさを出す
  4. 生産計画から作った正しい文字列と照らし、一致と不一致を表にする
  5. 作業者の目視の判定と並べる

最初に確かめるのは、追加学習をしないモデルで、自社のプリンタの文字がどれだけ読めるかです。 ここで読めない文字が多ければ、追加学習の画像を集めるところから始めます。

出てきた内容判断
正しい印字はほぼ一致し、前の品目の印字は不一致になったカメラと照明を据え付けて、ラインで試す
特定の数字(6と8、0とDなど)を取り違える追加学習が要る。 その文字の画像を多めに集める
かすれた印字も一致になった想定どおり。濃さの測定を別に組む

3行目が出ても、構成は有効です。 読み取りのモデルが文脈で読み切ってしまうことを確かめた、ということです。濃さの判定を読み取りから切り離す理由が、自社の画像で分かります。

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

問題対策
前の包装との比較で判定し、切り替えの誤りを素通しする正しい文字列を生産計画と品目マスタから作る
読み取りを正しい文字列に寄せて補正する補正しない。 違えば mismatch
かすれた印字を文脈で読み切って ok にする濃さを読み取りと別に測る
確からしさの低い一致を ok にする一致より先に確からしさで uncertain に分ける
年月表示の月の決め方を計算の側で決める品目マスタに品質保証部が決めた値を持たせる
光沢で文字が白く飛ぶ照明の角度と偏光を調整する。閾値で通さない
検査の端末が止まっても、ラインが動き続ける動いている信号が途切れたら制御盤で止める
mismatch で止まり、排出した数個だけで再開する直前の切り替えからの包装を見直す
誤った停止が多く、現場が検査を切る半自動化の段階で閾値を詰めてから停止をつなぐ
モデルを学ばせ直したら特定の数字を見逃す同じ試験の画像で前の版と比べてから切り替える

上の2行が、この構成の失敗のほとんどです。 どちらも「何と照らすか」の誤りです。照らす相手を画像の外に置き、読んだ結果に手を加えないことで、誤った印字が誤ったまま記録されます。

7行目と9行目も、同じくらい早く効いてきます。 検査は、止められる仕組みとして信頼されて初めて使われます。誤った停止が続くと検査が切られ、止まるべきときに止まらないと検査が信頼されません。

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

この構成で扱うデータ: 包装の画像、生産計画(品目・製造日・数量)、品目マスタ(賞味期間・表示の形式)、作業者の登録と処置の記録です。個人の顧客の情報は扱いません。

  1. 表示の内容の正しさは、品質保証部が決める … この構成が照らすのは、品目マスタから作った文字列と印字が同じかどうかです。品目マスタの賞味期間や表示の形式が法令や自社の基準に合っているかは、品質保証部が決めます
  2. 検査が止まったときに、ラインが流れ続けない設計にする … 検査の端末の停止を、印字の確認の空白にしないでください
  3. 停止の解除と出荷の判断を、検査の側に持たせない … 解除は作業者が原因を確かめてから、排出した包装の扱いは品質保証部が決めます
  4. 画像を工場の外に出さない … 包装の画像には、未発売の品目の包装やロットの付け方が写ります。検査用の端末と社内の保存先で完結させます
  5. 記録の改ざんを防ぐ … 印字確認記録は、品質の監査で見られる記録です。判定のJSONと承認の記録は、後から書き換えられない保存先に置きます
  6. 品目マスタの変更の権限を絞る … 賞味期間の値を変えられる人が多いと、検査の基準そのものが誤ります

誤りが起きた場合のリスクは、誤った印字を出荷することと、正しい印字でラインを止めることの2つです。 前者は照らす相手を画像の側に置くと起き、後者は撮影の条件と閾値を詰めないと起きます。前者は設計で、後者は半自動化の段階の調整で防ぎます。

10まず何から始めるか

1週目:品目マスタを確かめる

品質保証部と、全品目の賞味期間、年月表示か年月日表示か、年月表示の月の決め方、ロット番号の付け方を確かめ、品目マスタに持たせます。ここが正しい文字列の土台です。

2週目:最小構成で読めるかを見る

1つのラインで200個を撮り、PaddleOCR の読み取りのモジュールで読ませます。自社のプリンタの文字で取り違える文字と、かすれた印字が一致になるかを見ます。

3週目:撮影の条件を決める

設備の担当と、ラインの上でカメラと照明の位置を試し、光沢のある包装でも文字が飛ばない角度を探します。通過のセンサーの位置も決めます。

4週目:追加学習の画像を集め始める

据え付けたカメラで画像をため、正しい文字列を付けます。わざとかすれさせた印字と、前の品目の印字も、試験の画像として残します。

2か月目: 全数の読み取りと排出を動かし、停止は作業者が判断する半自動化で回します。閾値を詰め、誤った排出と見逃しを数えます。3か月目以降: 生産計画からの正しい文字列の自動の作成と、連続の判定での停止、印字確認記録の自動の作成を足して、1件3分が何分になったかを実測します。4ラインすべてで、切り替えの誤りが1個目で止まり、品質保証部が画面の記録で承認できるようになった時点で、この構成は完成です。


11関連ユースケース

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

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

技術仕様確認日:2026-10-12/最終更新:2026-10-13
確認した内容情報源確認日
文字の読み取りのモジュールが切り出した文字の領域の画像を文字列に直すこと。結果に rec_text と rec_score(確からしさ)が入ること。Python では TextRecognition を作り predict() に画像を渡すこと。PP-OCRv5・PP-OCRv6 の読み取りのモデルが日本語を含む複数の言語を扱うこと。自社のデータで学ばせ直す手順(tools/train.py 等)が示されていることPaddleOCR: Text Recognition Module2026-10-12
追加学習で、辞書を変えない場合に文字の読み取りのデータを少なくとも5,000件用意することが勧められること。辞書を変えると最後の層の重みが読み込めず、辞書は変えないことが勧められることPaddleOCR: Model Fine-tuning2026-10-12
cv.matchTemplate() がテンプレートの画像を入力の画像の上で滑らせて比べ、一致の度合いの画像を返すこと。cv.minMaxLoc() で最も一致する位置を取ること。比べ方が6種類あることOpenCV: Template Matching(チュートリアルの原文)2026-10-12
一般用加工食品の消費期限又は賞味期限は年月日の順で表示すること。製造又は加工の日から賞味期限までの期間が3か月を超える場合は、年月の順の表示で代えることができること(食品表示基準第3条の表)e-Gov 法令API: 食品表示基準2026-10-12

表示の内容と期限の設定、排出した製品の扱い、回収の要否は、品質保証部と自社の表示の取り決めで判断してください。 本記事は製品と官公庁の公開資料で確認できた範囲だけを扱っています。

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

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

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

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