打ち込みゼロ中小企業のAI導入支援|受注の自動化からFAX受注の自動化 専門

コラム仕組みと技術

品番を自動で確定する基準は、どう決める?40通りの書き方で線を動かした結果

品番を自動で確定する基準は、どう決める?(記事の表紙)

品番を自動で確定する基準は、「1位の点の高さ」より「2位との差」を先に決めるのが確実です。架空の商品12品と取引先の書き方40通りで基準を動かすと、差の条件を入れない限り、点の下限を上げても誤りはなくならず、要確認が増えるだけでした。御社の過去の注文で基準を決める手順と、表と図、再現用のコードを載せます。(2026年10月時点)

全体の流れと費用はFAX受注の自動化のページにまとめています。

この記事の要点

  • 品番を自動で確定する条件には、「1位の点の高さ」より先に「2位との点差」を入れます。
  • 40通りの書き方で試すと、2位との差0.1以上を条件にしたとき、誤りは0件、自動で正しく決まったのは31件でした。
  • 差の条件がないと、点の下限を0.7まで上げても誤りが残り、要確認が増えるだけでした。
  • 御社の基準は、過去の注文100〜200行に正解を付けた表で、誤りが0のまま要確認が最少になる値を選んで決めます。
目次
  1. 品番を自動で確定する基準は、何で決めればよいですか?
  2. 実験は、どんな条件で行いましたか?
  3. 基準を動かすと、結果はどう変わりましたか?
  4. なぜ、差の条件のほうが効くのですか?
  5. 御社の基準は、どうやって決めればよいですか?
  6. 実験のコードは、どこで見られますか?
  7. このサイトで相談するには?
  8. よくある質問

品番を自動で確定する基準は、何で決めればよいですか?

「1位の点が一定以上」だけでなく、「1位と2位の点の差が一定以上」を必ず条件に入れます。誤りの多くは、点は高いのに候補が2つ並んでいる書き方で起きるからです。点の下限は、要確認の件数を見ながら最後に調整します。

品名の表記ゆれを品番に引き当てる方法では、取引先の書いた品名を商品マスタの全品名と比べ、似ている度合い(0〜1の点)で候補を並べました。そのとき「1位が0.6以上、2位との差が0.1以上なら自動」としましたが、この2つの値をどう決めたかは書いていませんでした。この記事では、その線を実際に動かして確かめます。

自動で確定してよいかどうかは、受注では次の3つに分けて数えます。

結果 意味 受注で起きること
自動で正しく確定 人が見なくてよかった 手間が減る
自動で誤って確定 違う品番で登録された 誤出荷・再出荷になる
要確認 人が元のFAXを見て決めた 1件あたり数十秒の手間

この3つは釣り合いません。要確認が1件増えても数十秒の手間ですが、誤った確定が1件あると、出荷のやり直しと取引先へのお詫びが要ります。だから「誤りを0にしたうえで、要確認をどこまで減らせるか」の順に考えます。

実験は、どんな条件で行いましたか?

架空の食品卸の商品12品を商品マスタにし、飲食店がFAXに書きそうな書き方を40通り作りました。このうち8通りは「生樽」「だし醤油」「いつもの」のように、注文書だけでは人でも品番を決められない書き方です。この8通りは、自動で決めたらすべて誤りと数えます。

引き当ての方法は前の記事の改良版(カタカナをひらがなにそろえ、書かれた数字を含まない候補の点を半分にする)をそのまま使いました。そのうえで、点の下限を0.4〜0.8、2位との差を0〜0.2の範囲で動かし、20通りの組み合わせで40件の結果を数えました。

書き方の例 正しい品番 1位の点 2位との差
鶏もも 2kg M-2031 鶏もも肉 2kg 1.00 0.29
鶏もも肉2kg×1 M-2031 鶏もも肉 2kg 0.44 0.12
こいくち醤油1.8L S-0450 濃口醤油 1.8L 0.67 0.00
ダシ醤油 小 (人に聞く) 0.62 0.04
醤油 1.8 (人に聞く) 0.77 0.00
ビール (人に聞く) 0.55 0.00
お茶 (人に聞く) 0.22 0.22

この表だけでも、点の高さと正しさが一致しないことが分かります。「醤油 1.8」は0.77と高い点ですが、だし醤油と濃口醤油が同点で並んでいます。逆に「鶏もも肉2kg×1」は「×1」が邪魔をして0.44しかありませんが、2位とは差があり、正しく決められます。

基準を動かすと、結果はどう変わりましたか?

2位との差の条件を入れない限り、点の下限を0.7まで上げても誤りは残りました。差を0.1以上にすると、点の下限が0.4でも誤りは0件で、40件中31件が自動で正しく決まりました。点の下限を上げると、要確認が増えるだけでした。

点の下限を0.4から0.8まで動かしたときの40件の内訳。左は点の下限だけで決めた場合で、0.4では誤り5件、0.7でも誤り1件。右は2位との差0.1以上も条件にした場合で、どの下限でも誤り0件。0.4では自動で正しい31件、要確認9件
図 自動で確定する線を動かしたときの40件の内訳。濃い藍が自動で正しく確定、朱が自動で誤って確定、灰色が要確認です。右の「差0.1以上も条件に」では、朱の誤りが消えます。
点の下限 2位との差 自動で正しい 自動で誤り 要確認
0.4 条件なし 32 5 3
0.4 0.05以上 31 1 8
0.4 0.1以上 31 0 9
0.6 条件なし 27 3 10
0.6 0.1以上 26 0 14
0.7 条件なし 22 1 17
0.8 0.1以上 15 0 25

誤りになったのは、「ダシ醤油 小」「だし醤油」「醤油 1.8」「生樽」「ビール」でした。どれも容量や種類が書かれておらず、商品マスタに似た商品が2つ以上ある書き方です。こうした書き方では、1位と2位の点がほぼ同じになります。差の条件は、まさにこの「似た商品が2つある」状態を見分けるためのものです。

もう1つ分かったのは、点の下限をゆるめても、この40件では誤りが増えなかったことです。0.6を0.4に下げると、要確認は14件から9件に減り、誤りは0件のままでした。前の記事の0.6は、安全側に寄せすぎていたことになります。

なぜ、差の条件のほうが効くのですか?

点は「どれだけ似ているか」を表すだけで、「ほかに紛らわしい候補がないか」は表さないからです。受注の品名の間違いは、まったく違う商品と取り違えるより、容量違い・味違いの兄弟商品と取り違えることがほとんどです。

例えば「だし醤油」は、商品マスタの「だし醤油 1.8L」とも「だし醤油 500ml」とも同じくらい似ています。どちらとも0.6を超える高い点が付きますが、どちらかに決める手がかりは注文書にありません。点の下限をいくら上げても、この状態は見分けられません。2位との差が小さいことが、「人に聞くべき」の合図になります。

ただし差の条件だけでは足りない場面もあります。今回の「お茶」は、商品マスタにお茶がウーロン茶しかないため、点は0.22と低いのに2位との差も0.22ありました。点の下限を0.2まで下げると、これが自動で確定してしまいます。点の下限は「まったく関係のない書き方を拾わない」ための下支えとして残します。

御社の基準は、どうやって決めればよいですか?

過去の注文から100〜200行を選び、正しい品番を人が付けた「答えの表」を作って、同じように線を動かして数えます。誤りが0のまま、要確認がいちばん少なくなる組み合わせを選びます。

  1. 答えの表を作る:最近1〜2か月のFAXから、取引先が偏らないように行を選びます。人が見ても決められない書き方には「人に聞く」と付けます。
  2. 差の条件から決める:点の下限を低め(0.4前後)に置いたまま、2位との差を0から上げていき、誤りが0になる最小の値を探します。
  3. 点の下限を決める:差の条件を固定したまま点の下限を上げ下げし、関係のない書き方を拾わない所で止めます。
  4. 少し安全側に寄せる:答えの表にない書き方も来るので、見つけた値より少しだけ厳しくして使い始めます。
  5. 月に1回見直す:要確認を人が直した記録を答えの表に足して、もう一度数えます。言い換え表が育つと、要確認は自然に減っていきます。

この作業は、元のFAXと商品マスタがあれば1日ほどでできます。私が仕組みを作るときは、試作の段階で御社の過去の注文を使ってこの表を作り、基準の値と「その値で何件が要確認になるか」を見ていただいてから本番に進みます。

実験のコードは、どこで見られますか?

実験のコード(threshold_sweep.py)はPythonの標準ライブラリだけで動きます。引き当ての中身は前の記事の name_match.py で、ここでは基準の値を動かして数えるだけです。

def run(min_score, min_gap):
    auto_ok = auto_ng = ask = 0
    for text, answer in CASES:            # answer が None は「人に聞くべき」書き方
        code, _, s, gap, _, _ = match(text)
        if s >= min_score and gap >= min_gap:
            if code == answer: auto_ok += 1
            else: auto_ng += 1            # 違う品番で登録される
        else:
            ask += 1                      # 要確認として人が見る
    return auto_ok, auto_ng, ask

for min_score in (0.4, 0.5, 0.6, 0.7, 0.8):
    for min_gap in (0.0, 0.05, 0.1, 0.2):
        print(min_score, min_gap, run(min_score, min_gap))

40件は小さなテストで、数字は商品の数や名前の付け方で変わります。この記事で言えるのは「差の条件が誤りを防ぐ」という傾向までで、0.4や0.1という値そのものを御社にそのまま使うことはおすすめしません。

このサイトで相談するには?

商品マスタと最近の注文書が数枚あれば、どのくらいが自動で決まりそうか、どの書き方が要確認になりそうかを無料相談で一緒に見られます。対応表の作り方は品番引き当ての対応表の作り方、全体の流れはFAX注文書をAIで受注データにする仕組みにまとめています。自動化の費用は一式30万円〜です。

よくある質問

自動で確定する割合は、どれくらいを目指せばよいですか?
割合より先に「自動で誤った件数が0か」を見ます。誤りが0のまま、要確認を減らせる所まで基準をゆるめるのが順番です。
基準は一度決めたら変えなくてよいですか?
変えます。言い換え表が育つと点の分布が変わるので、月に1回ほど、要確認を直した記録で見直します。
AIの「自信の値」を基準に使えますか?
読み取りの段階では使えます。ただ品番の決定は、点と差のように同じ入力で同じ結果になる値で決めるほうが、理由を説明できます。

出典

  1. Python 標準ライブラリ difflib(SequenceMatcher)(2026年10月14日確認)