輸入ワインの商社が海外の生産者から届く英文などのテクニカルシートを読み取り、品種・産地・ヴィンテージ・アルコール分・容量を商品マスタの登録案にそろえ、裏ラベルの表示に要る項目の欠けを拾う
海外の生産者から届くワインのテクニカルシートを読み取り、品種・産地・ヴィンテージ・アルコール分・容量などを商品マスタの登録案にそろえます。発注と前のヴィンテージの登録と照らし、値の食い違いと、裏ラベルの一括表示に要る項目の欠けを購買担当に回します。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- AWS Textract/Azure AI/Google Document AI
- 連携・自動化
- Python
- 対象業界
- 商社/小売
- 対象部門
- 購買
- 対象業務
- データ入力・転記/台帳・マスタ管理
- 主な課題
- 人手が足りない/入力作業が多い/確認ミスが多い
- AIで行う処理
- 抽出
- 主な効果
- 入力漏れ削減/品質標準化/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 生産者から届いたテクニカルシートのPDFを、生産者ごとのフォルダに保存する
- シートを開き、商品名・産地・品種・ヴィンテージ・アルコール分・容量を読み取る
- 外国語のシートは、読める担当者に回すか、翻訳のサービスで確かめる
- 商品マスタの前のヴィンテージの登録と見比べ、変わった値を書き換える
- 発注の明細のヴィンテージと容量が、シートと合っているかを確かめる
- 裏ラベルの原稿に要る値が無ければ、生産者に問い合わせる
- 人購買担当が、届いたテクニカルシートのPDFを生産者ごとの受け取りの場所(Amazon S3)に保存する
- 自動保存をきっかけに、プログラムがPDFをページごとに分け、AWS Textract の同期の文書分析(AnalyzeDocument)を呼ぶ
- 自動プログラムが、読み取った行と表を読む順にそろえて、1枚の文字の並びにする
- 自動Claude API が、決められた項目に値を当てはめ、根拠の文とシートの言語を書き出す
- 自動プログラムが、発注の明細と前のヴィンテージの登録と照らし、違いと欠けている項目を出す
- 自動登録案と確認事項を、購買担当の確認の一覧に書き出す
- 人購買担当が、違いと欠けのある行を先に見て原本と見比べ、登録案を直す
- 人購買担当が商品マスタに登録し、欠けている項目は生産者に問い合わせる
各工程の詳しい説明を読む
- 生産者から届いたテクニカルシートのPDFを、生産者ごとのフォルダに保存する
- シートを開き、商品名・産地・品種・ヴィンテージ・アルコール分・容量を読み取る
- 外国語のシートは、読める担当者に回すか、翻訳のサービスで確かめる
- 商品マスタの前のヴィンテージの登録と見比べ、変わった値を書き換える
- 発注の明細のヴィンテージと容量が、シートと合っているかを確かめる
- 裏ラベルの原稿に要る値が無ければ、生産者に問い合わせる
(a)写すだけで時間がかかる。 1枚のシートから十数の項目を写します。アルコール分が表の中にある生産者、本文の中に書く生産者、ラベルの画像の中にしか無い生産者があり、探す場所が毎回違います。
(b)外国語のシートが特定の担当者に偏る。 「Degré alcoolique」「Gradazione alcolica」「Graduación」はどれもアルコール分ですが、読める担当者がいないと作業が止まります。 繁忙の時期に、その担当者の机にシートが積み上がります。
(c)ヴィンテージの値の変化を見落とす。 アルコール分が13.5%から14.0%に変わった、品種の比率が変わった、という違いは、前の年の登録を写す運用だと見落とします。 裏ラベルのアルコール分は瓶の中身と合っている必要があります。
(d)欠けている項目に気づくのが遅い。 発泡性かどうか、容量の種類、アルコール分が書かれていないシートは、裏ラベルの原稿を作る段になって初めて気づきます。 生産者への問い合わせが出荷の直前になります。
(e)同じ商品の値が担当者ごとにそろわない。 品種を「カベルネ・ソーヴィニヨン」と書く担当者と「カベルネ・ソービニヨン」と書く担当者がいて、産地も国名だけの登録とアペラシオンまでの登録が混ざります。取引先向けの商品の一覧で、同じ産地のワインが別々に並びます。 抜き出しの後の表記の統一は、項目の表に正しい書き方を持たせて、プログラムでそろえます。
- 【人】 購買担当が、届いたテクニカルシートのPDFを生産者ごとの受け取りの場所(Amazon S3)に保存する
- 【自動】 保存をきっかけに、プログラムがPDFをページごとに分け、AWS Textract の同期の文書分析(AnalyzeDocument)を呼ぶ
- 【自動】 プログラムが、読み取った行と表を読む順にそろえて、1枚の文字の並びにする
- 【自動】 Claude API が、決められた項目に値を当てはめ、根拠の文とシートの言語を書き出す
- 【自動】 プログラムが、発注の明細と前のヴィンテージの登録と照らし、違いと欠けている項目を出す
- 【自動】 登録案と確認事項を、購買担当の確認の一覧に書き出す
- 【人】 購買担当が、違いと欠けのある行を先に見て原本と見比べ、登録案を直す
- 【人】 購買担当が商品マスタに登録し、欠けている項目は生産者に問い合わせる
4番目と5番目を分けているのが、この設計の分かれ目です。 「Alc. 13,5% vol.」をアルコール分の13.5に当てはめるのは言葉を扱う作業です。一方、それが前の年と違うか、発注と合っているかは、値を比べるだけの作業です。 AIには抜き出しまでをさせ、比べるのはプログラムにさせます。
2番目で同期の分析を使うのは、シートが1〜2ページと短いからです。 公式のページでは、同期の操作ではPDFとTIFFは1ページまでとされているので、ページごとに分けてから呼びます。 非同期の仕組み(通知を受けて結果を取りに行く形)を組まずに済み、導入の手間が小さくなります。
02今回想定するシステム構成
テクニカルシート(英語・仏語・伊語・西語などのPDF。生産者からメールで届く) │ 購買担当が生産者ごとの場所へ保存 ▼【トリガー】Amazon S3 への保存 AWS Lambda ── PDFをページごとに分ける ▼ AWS Textract(AnalyzeDocument。FeatureTypes:LAYOUT、TABLES。英語のシートは QUERIES も) ▼ AWS Lambda ├──▶ Python:行と表を読む順にそろえる ├──▶ Claude API:項目の抜き出し(根拠の文・言語付き) └──▶ Python:発注の明細・前のヴィンテージとの照合、欠けの確認 ▼ 登録案と確認事項の一覧(購買担当が確認) ▼ 商品マスタへの登録(人)/生産者への問い合わせ
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | AWS Textract(AnalyzeDocument。LAYOUT・TABLES・QUERIES) | Azure AI Document Intelligence、Google Document AI |
| 生成AI | Claude API(項目の抜き出しと根拠の書き出し) | OpenAI API、Gemini API |
| 差異計算 | Python(発注の明細・前のヴィンテージとの照合、欠けの確認) | 表計算の照合の式 |
| 連携 | AWS Lambda(保存を起点に処理を動かす) | AWS Step Functions |
| 保管 | Amazon S3(シートの原本、読み取り結果、確認の記録) | 社内のファイルサーバー |
土台は、AWS Textract の文字の読み取りです。 テクニカルシートは表の部分と文章の部分が混ざり、2段組みの文章を左右の順に読まないと、品種の比率が別の行の数字と混ざります。 AnalyzeDocument の FeatureTypes に LAYOUT を入れると、文書のレイアウトの情報が返るとされています。表の部分は TABLES で読みます。
Textract を選べるのは、シートが欧州の言語で書かれているからです。 公式の対応言語は英語・フランス語・ドイツ語・イタリア語・ポルトガル語・スペイン語で、ワインの主な産地の言語がほぼそろいます。ただし、問い合わせ(クエリ)は英語の文書でだけ使えるとされています。英語のシートは問い合わせでアルコール分などを直接取り、ほかの言語のシートは読み取った文字から生成AIが抜き出します。
商品マスタには書き込みません。 登録は購買担当が確かめてから行います。
03どうやって実装するのか
処理の起点を決める
生産者ごとの受け取りの場所(S3 のフォルダ)にPDFが保存されたことを起点にします。 フォルダは techsheet/<生産者コード>/ の形にし、どの生産者のシートかを保存した場所で決めます。 シートの見出しの生産者名から決めると、同じ名字の家族経営の生産者や、生産者と輸出の代理店の名前を取り違えます。
ファイル名には、購買担当が銘柄コードとヴィンテージを付けて保存します。 たとえば W-1182_2024.pdf です。銘柄とヴィンテージを担当者が決め、AIが読んだ値と照らす形にします。 AIが読んだヴィンテージをそのまま正とすると、シートの書き間違いや、前の年のシートの使い回しに気づけません。
同じ銘柄・同じヴィンテージのシートが2回届いたら、後のほうを新しい版として扱います。 前の版の登録案は消さず、2つの版の違いを確認事項に出します。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| テクニカルシート | 商品名、生産者、国、産地とアペラシオン、品種と比率、ヴィンテージ、アルコール分、残糖、容量、発泡性、甘辛、醸造と熟成、酸化防止剤や有機の認証の記載 | 生産者から届くPDF |
| 読み取り結果 | 行と単語、レイアウトの情報、表のセル、英語のシートの問い合わせの答え、信頼度 | AWS Textract |
| 発注の明細 | 銘柄コード、ヴィンテージ、容量、本数、出荷の予定 | 発注の明細の表 |
| 商品マスタの前の登録 | 前のヴィンテージの商品名・品種と比率・アルコール分・容量・品目の区分 | 商品マスタから書き出したファイル |
| 項目の表 | 抜き出す項目と、その説明、各言語での書き方の例 | 自社で用意する表 |
質を決めるのは、項目の表です。 「アルコール分」の行に「Alcohol / Alc. vol. / Degré alcoolique / Titolo alcolometrico / Grado alcohólico」と書き方の例を並べておくと、抜き出しの取りこぼしが減ります。 担当者の頭の中にあった外国語の知識を、表に移す作業でもあります。
商品マスタの前の登録は、照合のためだけに使います。 前の年の値を生成AIに渡すと、シートに書かれていない項目を前の年の値で埋めてしまうからです。
データの取得方法を決める
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 文字の並び | LINE と WORD のブロック、LAYOUT の情報 | 読む順にそろえた文字の並び |
| 表の値 | TABLES の TABLE・CELL のブロック | 分析の値の表(アルコール分・残糖・酸度など) |
| 英語のシートの主な値 | QUERIES の QUERY_RESULT | アルコール分・ヴィンテージ・容量の直接の答え |
| 信頼度 | 各ブロックの Confidence | 数字の読み取りが怪しい行の印 |
文字の並びは、LAYOUT の情報でまとまりと順序をそろえてから作ります。 2段組みのシートで LINE を上から順に並べると、左の段の「Cabernet Sauvignon 60%」と右の段の「Alcohol 14%」が1行に混ざります。まとまりごとに並べてから、生成AIに渡します。
英語のシートの問い合わせは、次の3つだけにします。
| 問い合わせ(Text) | Alias |
|---|---|
| What is the alcohol content? | ALCOHOL |
| What is the vintage? | VINTAGE |
| What is the bottle size? | VOLUME |
公式のページでは、問い合わせの答えは、問い合わせの文と別名と一緒に、信頼度と答えの文字で返り、答えが見つからなければ空になるとされています。空のときは生成AIの抜き出しの結果だけを使い、両方があって食い違えば確認事項にします。 同期の操作では1ページ15件までとされているので、問い合わせは少なく保ちます。
AIへ渡す前に整形する
- 形式の確認 … JPEG、PNG、PDF、TIFF のどれかであることを確かめます。XFA の形式のPDFとパスワードで保護されたPDFは扱えないとされています
- ページの分割 … 同期の操作ではPDFは1ページ、10MBまでなので、ページごとに分けます
- 文字の大きさの確かめ … 公式のページでは、読み取れる文字の高さの下限は15ピクセル(150DPIで8ポイント相当)とされています。画像だけのPDFで解像度が足りないものは、生産者に元のファイルを頼みます
- 言語の判定 … Textract は検出した言語を返さないとされているので、読み取った文字から言語を判定し、英語なら問い合わせの結果も使います
- 数字の書き方の統一 … 「13,5」と「13.5」、「75cl」と「750ml」を、照合の前に同じ形にします。元の文字列も残します
- 容量の種類の展開 … 「75 cl / 150 cl」のように1枚のシートに複数の容量が書かれていれば、容量ごとに登録案の行を分けます。商品マスタは容量ごとに別の商品コードで持つことが多いからです
6番目は、発注の明細との照合のためにも要ります。 発注が1.5リットルの瓶なのに、登録案が750ミリリットルの行だけだと、order_volume_mismatch が出ません。容量ごとに行を分けてから照らします。
4番目を軽く見ないでください。 問い合わせは英語の文書でだけ使えるとされているので、フランス語のシートに問い合わせを当てると、答えが空か、別の数字を拾います。 言語を決めてから使い分けます。
AIに処理させる
させるのは、シートに書かれた値を決められた項目に当てはめることだけです。
| させること | 中身 | できないときの扱い |
|---|---|---|
| 項目への当てはめ | 商品名、生産者、国、産地とアペラシオン、品種と比率、ヴィンテージ、アルコール分、残糖、容量、発泡性、甘辛、酸化防止剤の記載、有機の認証の記載 | 書かれていなければ null |
| 根拠の文 | 当てはめに使った文を、シートの言語のまま写す | 値があれば必ず埋める |
| 品目に関わる記載の書き出し | ブランデーや糖類を加えた、酒精を強化した、などの醸造の記載 | 無ければ空にする |
| シートの言語 | 主な言語 | 決められなければ unknown |
3行目は、品目を決めさせるためではありません。 酒類の品目が果実酒か甘味果実酒かは、酒税法の定めに照らして決まります。AIには、品目の判断に関わりそうな醸造の記載を、そのまま写させるだけです。 写された記載があるシートは、表示の担当が確かめます。
| させないこと | 理由 |
|---|---|
| 書かれていない値の補い | 前の年の値や、産地の一般的な値で埋めない |
| 酒類の品目の区分 | 酒税法の定めに照らして人が決める |
| 単位の換算 | 「75cl」を750に直すのはプログラムが行う |
| 裏ラベルの文言 | 表示の担当が決める |
| 品種の比率の合計の補正 | 合計が100にならなくても、書かれた値のまま返す |
1行目がいちばん起きやすい失敗です。 シートにアルコール分が無いと、AIは産地や品種から「13.5% 程度」と書きがちです。裏ラベルのアルコール分を推測で書くことになります。 書かれていない項目は null にさせ、欠けとして問い合わせに回します。
指示内容を固定する
あなたは輸入ワインの商社の購買担当者を手伝い、生産者のテクニカルシートから
商品マスタの登録に要る値を抜き出します。
渡された「シートの文字の並び(読む順にそろえたもの)」と「項目の表」だけを見てください。
シートは英語・フランス語・イタリア語・スペイン語・ドイツ語・ポルトガル語のどれかです。
【やること】
- 項目の表の項目ごとに、シートに書かれた値を value に入れてください。
- evidence には、値を取った文をシートの言語のままそのまま写してください。
- ブランデー・アルコール・糖類を加えた、酒精を強化した、などの醸造の記載があれば、
production_notes にそのまま写してください。
- language にシートの主な言語を入れてください。
【厳守事項】
- シートに書かれていない項目は value を null にしてください。
前の年の値、産地や品種から一般に考えられる値で埋めないでください。
- 数字は書かれたとおりに写してください。単位の換算や四捨五入をしないでください。
「13,5」は "13,5" のまま返してください。
- 品種の比率の合計が100にならなくても、書かれた値のまま返してください。
- 酒類の品目(果実酒・甘味果実酒など)を判断しないでください。
- ヴィンテージが複数書かれている場合(前の年との比較など)は、
見出しやファイルの銘柄に対応するものを選ばず、すべて candidates に並べてください。
- 迷ったときに値を選ばないでください。null にしてください。
「13,5 は 13,5 のまま」と書くのは、AIが小数点の書き方を勝手に直すからです。 直した結果が正しくても、どこで直したかが分からなくなります。 書き方の統一はプログラムが行い、元の文字列と並べて残します。
ヴィンテージを1つに決めさせないのは、シートに前の年との比較が載っていることがあるからです。 「2023: 13.5% / 2024: 14.0%」のような表で、AIが見出しに近いほうを選ぶと、別の年の値を拾います。
出力形式を固定する
抜き出しは、Claude API の構造化出力で形を決めて受けます。 公式のページでは、output_config.format に JSON スキーマを渡すと、スキーマに合う JSON が返るとされ、正式提供の機能です。値が無い項目に null を返せるよう、型に null を含めます。数値の minimum/maximum などの制約はスキーマに書けないとされているので、アルコール分の範囲などはプログラムで確かめます。
{
"file": "techsheet/P-0412/W-1182_2024.pdf",
"language": "fr",
"fields": {
"vintage": { "value": null, "candidates": ["2023", "2024"],
"evidence": "Millésime 2023 ... Millésime 2024" },
"alcohol": { "value": "14", "evidence": "Degré alcoolique : 14 % vol." },
"volume": { "value": "75 cl", "evidence": "Contenance : 75 cl" },
"grapes": { "value": [ {"name": "Grenache", "ratio": "70"},
{"name": "Syrah", "ratio": "30"} ],
"evidence": "Cépages : Grenache 70 %, Syrah 30 %" },
"sparkling": { "value": null, "evidence": "" }
},
"production_notes": []
}
プログラムは、これに照合の結果を足して登録案にします。
{
"item_code": "W-1182", "vintage_by_staff": "2024",
"alcohol_pct": 14.0, "volume_ml": 750,
"diffs": [ { "field": "alcohol_pct", "prev_vintage": 13.5, "this": 14.0 } ],
"checks": [ "vintage_multiple", "sparkling_missing" ]
}
形を分けるのは、抜き出しと照合を別の層に置くためです。 fields はAIが埋め、diffs と checks はプログラムが決めます。照合の規則を変えても、抜き出しはやり直さずに済みます。
checks | 決め方(プログラム) |
|---|---|
| vintage_mismatch | AIの値または候補に、担当者が付けたヴィンテージが無い |
| vintage_multiple | ヴィンテージの候補が複数ある |
| order_volume_mismatch | 発注の明細の容量と、シートの容量が違う |
| alcohol_changed | 前のヴィンテージとアルコール分が違う |
| label_item_missing | 裏ラベルに要る項目(アルコール分・容量・国・発泡性の有無)が null |
| production_note | 品目に関わる醸造の記載がある |
| low_confidence | 数字の行の信頼度が自社で決めた下限より低い |
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| Amazon S3 | 保存の通知で Lambda を動かす | 生産者をフォルダ、銘柄とヴィンテージをファイル名で決める |
| AWS Textract | AnalyzeDocument(同期) | 行・単語・レイアウト・表・問い合わせの答え・信頼度 |
| 発注の明細・商品マスタ | 書き出したファイルを読む | 読み取りだけ |
| Claude API | API呼び出し(構造化出力) | 項目の抜き出し |
| 購買担当 | 登録案と確認事項を共有の一覧に書き出し、チャットで知らせる | 確認、修正、商品マスタへの登録 |
AnalyzeDocument の人の確認の機能(HumanLoopConfig)は使いません。 公式のページでは、この機能が使う Amazon Augmented AI は2026年7月から保守の扱いになり、新しい利用者を受け付けていないとされています。人の確認は、自社の確認の一覧で行います。
商品マスタには書き込みません。 登録案が正しくても、商品マスタの値は請求・在庫・裏ラベルに広く使われます。登録は購買担当が行います。
人が確認する
vintage_mismatchとvintage_multipleを先に見る … 届いたシートが本当にそのヴィンテージのものかを確かめます。違えば生産者に正しいシートを頼みますalcohol_changedとorder_volume_mismatchを原本で確かめる … 値が変わったのか、読み取りの誤りかを確かめますlabel_item_missingを生産者への問い合わせに回す … 欠けている項目をまとめて問い合わせますproduction_noteを表示の担当に渡す … 品目の区分に関わるかを確かめてもらいます- 商品マスタに登録する … 確かめた登録案だけを登録します
チェックの無い登録案も、原本と並べて流し見ます。 1件あたり1分程度で、値の誤りより、項目の当てはめの誤り(残糖を酸度に入れた、など)を見ます。
例外に対処する
| 起きること | 対応 |
|---|---|
| パスワード付き・XFA のPDF | 読めない。生産者に送り直してもらう |
| 画像だけのPDFで文字が小さい | 文字の高さの下限を下回る。生産者に元のファイルを頼む |
| 6言語以外のシート | 対応言語の外。人が読む |
| 1つのPDFに複数の銘柄 | 銘柄ごとにページを分け、ファイル名を付け直して保存し直す |
| 前の年のシートが届いた | vintage_mismatch。登録案を作らず、生産者に正しいシートを頼む |
| シートにヴィンテージが書かれていない(ヴィンテージの無い商品) | 担当者がファイル名に NV と付けたものは照合を外す。付いていなければ人へ |
| アルコール分が「13〜14%」のように幅で書かれている | 1つに決めず、そのまま返して人へ。裏ラベルの値は生産者に確かめる |
5行目が、この構成で最も守りたいことです。 前の年のシートで登録を済ませると、裏ラベルのアルコール分が前の年の値になります。 ヴィンテージが合わないときは登録案を作りません。
記録を残す
- シートの原本と、保存した場所(生産者・銘柄・ヴィンテージ・版)
- Textract が返した結果の全文と、読む順にそろえた文字の並び
- AIの抜き出しの結果と根拠の文
- 照合の結果(
diffs、checks) - 購買担当が直した登録案 … どの項目を、どの値から、なぜ直したか
- 生産者への問い合わせと回答
5つ目の記録は、項目の表の改善に使います。 当てはめの誤りが多い言語や書き方が分かれば、項目の表の書き方の例に足せます。
04実装レベルの3段階
半自動化で、1件12分が3分になり、この段階が本記事の想定です。 写す作業と見比べる作業は無くなり、人は違いと欠けのある行を原本で確かめます。 本格構成は、裏ラベルの原稿を商品マスタから作っている会社で検討します。 ただし、裏ラベルの文言は表示の担当が決めるもので、原稿の下書きを作っても、確認を省くことはできません。 半自動化の段階で、生産者ごとの欠けの傾向も見えてきます。 毎回アルコール分や容量を書いてこない生産者には、次のヴィンテージの前に、書いてほしい項目の一覧を送って頼んでおくほうが、問い合わせを繰り返すより早く片づきます。
05工数削減シミュレーション
導入後 240件 × 3分 ÷ 60 = 12 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 欧州・南米・オセアニアなどの生産者からワインを輸入し、新しい商品と新しいヴィンテージのテクニカルシートが月に数百件届く商社・輸入卸。購買担当がPDFを開いて品種・ヴィンテージ・アルコール分を商品マスタに手で写し、裏ラベルの一括表示の原稿のための項目がそろっているかを目で確かめている場合。フランス語やイタリア語のシートが混ざり、読める担当者に作業が偏っている場合。
- 取り扱う商品が数十種類で、新しいヴィンテージの切り替えも年に数回の場合。生産者が商品の情報を決められた形式のデータで送ってきて、読み取りが要らない場合。テクニカルシートが英語・フランス語・ドイツ語・イタリア語・ポルトガル語・スペイン語以外の言語だけで書かれている場合(この構成で使う読み取りのサービスはこの6言語に対応します)。なお、酒類の品目の区分、裏ラベルの表示の内容、輸入の手続きの判断は、購買担当と表示の担当と通関の担当が行います。この構成は商品マスタの登録案と欠けている項目を出すまでです。
07最小構成で試す方法
- 登録が終わった先月のシートから20件を選ぶ(うち数件は、フランス語・イタリア語のシート、2段組みのシート、前の年との比較が載ったシートを入れる)
- AWS のコンソールで Textract の文書分析を開き、レイアウトと表の読み取りを有効にして読み取る
- 読み取った文字を手元のAIサービスに貼り、項目の表を渡して値を抜き出させる
- 抜き出した値を、商品マスタに登録した値と比べる
最初に見るのは、書かれていない項目を埋めていないかです。 アルコール分の無いシートで値を出していたら、指示を直します。次に、外国語のシートの抜き出しを、その言語が読める担当者に確かめてもらいます。 根拠の文と値の組が正しく対応していれば、ほかの担当者でも根拠の文で確かめられる見込みが立ちます。
| 出てきた内容 | 判断 |
|---|---|
| 登録した値と合い、書かれていない項目は空だった | 保存から照合までをつなぐ段階に進む |
| 2段組みのシートで品種の比率が混ざった | 読む順のそろえ方で直る。構成は有効 |
| AIが書かれていないアルコール分を補った | 指示の縛りで直す。構成は有効 |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 2段組みのシートで値が混ざる | LAYOUT の情報でまとまりと順序をそろえてから渡す |
| フランス語のシートに問い合わせを当てる | 言語を判定し、問い合わせは英語のシートだけに使う |
| 2ページのPDFが同期の操作で通らない | ページごとに分けてから呼ぶ |
| AIが書かれていないアルコール分を補う | 書かれていない項目は null と縛る |
| 前の年との比較の表から別の年の値を拾う | ヴィンテージを候補として並べさせ、担当者の値と照らす |
| 品種名や収穫年の書き方を日本ワインの決まりで判断してしまう | 決まりの対象を確かめ、表示の担当が判断する |
6行目は、表示の決まりの対象を取り違えないためです。 国税庁の果実酒等の製法品質表示基準では、品種名と収穫年を表示できる条件(85%以上の使用など)は国内製造ワインについての定めです。輸入ワインについては、原産国名を表示するとされています。さらに一括表示の様式として、品目・製造者・内容量・アルコール分・原産国名などの欄が示され、発泡性を有する果実酒等(アルコール分11度未満のもの)は、品目に続けて発泡性を有する旨と税率の適用区分を表す事項を表示するとされています。発泡性の有無とアルコール分がシートから取れないと、この欄が書けません。 label_item_missing に発泡性を入れているのはこのためです。製造者等の欄は食品表示法の規定に従うとされているので、輸入品での書き方は表示の担当が決めます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 生産者の名前、商品の仕様、仕入の銘柄とヴィンテージ、発注の容量と本数です。個人情報はほとんど含みませんが、取り扱う銘柄と仕入の計画は取引の情報です。
- 生成AIに渡す範囲を絞る … 抜き出しにはシートの文字と項目の表だけを渡し、発注の本数や仕入の価格は渡しません
- 受け取りの場所の権限を絞る … S3 のフォルダは商品部と処理のプログラムだけが読めるようにします
- 登録案をそのまま登録しない … 購買担当が確かめてから商品マスタに登録します
- 酒類の品目と裏ラベルの文言をAIに決めさせない … 品目は酒税法の定めに照らして、文言は表示の決まりに照らして、表示の担当が決めます
- 表示の決まりの改正を追う … 果実酒等の製法品質表示基準は、確認した時点で令和8年10月の改正が載っています。項目の表と確認の規則は、改正のたびに表示の担当が見直します
誤りが起きた場合のリスクは、裏ラベルのアルコール分や容量が瓶の中身と合わないことと、品目の区分を誤ることの2つです。 前者はヴィンテージと前の年との違いを必ず人が見る設計で、後者は品目をAIに決めさせない設計で防ぎます。
10まず何から始めるか
1週目:項目の表を作る
購買担当と表示の担当で、抜き出す項目と、各言語での書き方の例を表にします。裏ラベルに要る項目には印を付けます。
2週目:20件で読み取りと抜き出しを試す
言語と書式の違う20件をコンソールで読み取り、手元のAIサービスで抜き出します。書かれていない項目を埋めていないか、2段組みで値が混ざらないかを最優先で見ます。
3週目:保存の決まりを決める
生産者ごとのフォルダと、銘柄コードとヴィンテージを付けたファイル名の決まりを決め、購買担当が保存のときに付ける運用を始めます。
4週目:保存から照合までをつなぐ
保存を起点に読み取り、抜き出し、発注の明細と前のヴィンテージと照らして、確認の一覧に書き出すところまで作ります。
2か月目: checks の件数を毎週数え、項目の表の書き方の例を足します。3か月目以降: 1件12分が何分になったかを実測し、裏ラベルの原稿の下書きを検討します。外国語のシートを誰でも同じ手順で確かめられるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 対応する形式が JPEG・PNG・PDF・TIFF で XFA の形式のPDFは扱えないこと。同期の操作では10MBまで、PDFとTIFFは1ページまでであること。パスワードで保護されたPDFは扱えないこと。対応言語が英語・フランス語・ドイツ語・イタリア語・ポルトガル語・スペイン語で、検出した言語は返さないこと。問い合わせは英語の文書だけで、同期で1ページ15件までであること。文字の高さの下限が15ピクセル(150DPIで8ポイント相当)であること | AWS: Set Quotas in Amazon Textract | 2026-10-15 |
| AnalyzeDocument が同期の操作であること。FeatureTypes に TABLES・FORMS・QUERIES・SIGNATURES・LAYOUT があり、LAYOUT でレイアウトの情報が返ること。HumanLoopConfig が使う Amazon Augmented AI が2026年7月から保守の扱いになり、新しい利用者を受け付けないこと | AWS: AnalyzeDocument | 2026-10-15 |
| 問い合わせの答えが、問い合わせの文と別名、信頼度、答えの文字で返り、見つからなければ空になること | AWS: Queries(Amazon Textract) | 2026-10-15 |
output_config.format に JSON スキーマを渡すとスキーマに合う JSON が返ること。正式提供の機能であること。数値の minimum/maximum などの制約に対応しないこと | Claude Docs: Structured outputs | 2026-10-15 |
| 輸入ワインの定義(保税地域から引き取る果実酒等)。輸入ワインに原産国名を表示すること。品種名・収穫年の表示の条件(85%以上など)が国内製造ワインについての定めであること。一括表示の様式の欄(品目・製造者・内容量・アルコール分・原産国名など)。発泡性を有する果実酒等(アルコール分11度未満)は品目に続けて発泡性を有する旨と税率の適用区分を表示すること。製造者等の欄は食品表示法の規定に従うこと。令和8年10月の改正が載っていること | 国税庁: 果実酒等の製法品質表示基準を定める件 | 2026-10-15 |
酒類の品目の区分、裏ラベルの表示の内容、輸入の手続きは、表示の担当と通関の担当が、所轄の税務署や通関業者に確かめて決めてください。 本記事は公開されている製品の仕様と資料で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1592)についてのご相談はこちらから。
