水産加工会社が海外の加工委託先から毎月届く英文の加工報告とパッキングリストを読み取り、ロットごとの歩留まりの台帳と契約の歩留まりとの差の一覧を作る
海外の加工委託先からロットごとに届く加工報告とパッキングリストを読み取り、歩留まりの台帳に写します。契約の歩留まりと支給した原料の重量に照らし、精算で問い合わせるロットを一覧にします。
- AIサービス
- AWS Textract/Azure AI/Google Document AI
- 連携・自動化
- Python
- 対象業界
- 商社/製造
- 対象部門
- 生産/経理
- 対象業務
- データ入力・転記/内容確認・チェック
- 主な課題
- 入力作業が多い/判断に時間がかかる/確認ミスが多い
- AIで行う処理
- 抽出
- 主な効果
- 入力漏れ削減/判断支援/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 生産管理の担当者が、メールで届いた加工報告とパッキングリストのPDFを委託先ごとのフォルダに保存する
- 加工報告を開き、原料の重量と規格ごとの製品の重量を台帳に写す
- パッキングリストの箱の数と1箱の重量から、製品の重量を計算し直し、加工報告と見比べる
- グレーズ込みの重量なら、グレーズの率で正味に直す
- 正味の製品の重量を原料の重量で割り、契約の歩留まりと比べる
- 支給の記録の出荷した重量と、加工場が受け入れた重量を比べる
- 契約を外れたロットを一覧にし、経理の担当者と精算の問い合わせを準備する
- 人生産管理の担当者が、加工報告とパッキングリストのPDFを受付のフォルダに保存する(メールの自動振り分けでも可)
- 自動保存をきっかけに、形式・サイズ・パスワードの有無を確かめ、ファイル名から委託先とロットを見分ける
- 自動AWS Textract で、報告の表・項目と値・問いへの答え・署名の有無を読む
- 自動委託先ごとの項目の対応表で、規格の名前と重量の欄を共通の項目に直す
- 自動重量の単位と、グレーズ込みか正味かを決め、正味の kg にそろえる
- 自動箱の数×1箱の正味重量と、報告の製品の重量を照らす
- 自動歩留まりを出し、契約の歩留まりと、支給の記録の重量に照らす
- 人生産管理の担当者が `ok` 以外のロットだけを開き、PDFの画像で値を確かめる
- 人経理の担当者と、精算で問い合わせるロットを決める
- 人委託先に問い合わせ、返事を台帳に残す
各工程の詳しい説明を読む
- 生産管理の担当者が、メールで届いた加工報告とパッキングリストのPDFを委託先ごとのフォルダに保存する
- 加工報告を開き、原料の重量と規格ごとの製品の重量を台帳に写す
- パッキングリストの箱の数と1箱の重量から、製品の重量を計算し直し、加工報告と見比べる
- グレーズ込みの重量なら、グレーズの率で正味に直す
- 正味の製品の重量を原料の重量で割り、契約の歩留まりと比べる
- 支給の記録の出荷した重量と、加工場が受け入れた重量を比べる
- 契約を外れたロットを一覧にし、経理の担当者と精算の問い合わせを準備する
(a)グレーズ込みか正味か。 パッキングリストに「Net Weight」と書かれていても、グレーズを含めた重量を正味と呼ぶ委託先があります。 見出しだけで決めると、歩留まりがグレーズの分だけ高く出ます。
(b)単位の混在。 kg で書く委託先と lb で書く委託先、1箱の重量を kg で書いて合計を lb で書く書類もあります。単位を見ずに写すと、歩留まりが半分以下か倍以上になり、 大きすぎる差は気づけても、小さな取り違えは残ります。
(c)受け入れた原料の重量の定義。 解凍前の重量か解凍後の重量かで、原料の重量が変わります。どちらで歩留まりを取り決めたかは、契約の担当者が覚えています。
(d)支給の記録との食い違い。 出荷した重量と加工場が受け入れた重量の差は、輸送中のことか、量り方の違いか、書き違いか。ロットが多い月ほど、差を確かめるのが精算の直前になります。
- 【人】 生産管理の担当者が、加工報告とパッキングリストのPDFを受付のフォルダに保存する(メールの自動振り分けでも可)
- 【自動】 保存をきっかけに、形式・サイズ・パスワードの有無を確かめ、ファイル名から委託先とロットを見分ける
- 【自動】 AWS Textract で、報告の表・項目と値・問いへの答え・署名の有無を読む
- 【自動】 委託先ごとの項目の対応表で、規格の名前と重量の欄を共通の項目に直す
- 【自動】 重量の単位と、グレーズ込みか正味かを決め、正味の kg にそろえる
- 【自動】 箱の数×1箱の正味重量と、報告の製品の重量を照らす
- 【自動】 歩留まりを出し、契約の歩留まりと、支給の記録の重量に照らす
- 【人】 生産管理の担当者が
ok以外のロットだけを開き、PDFの画像で値を確かめる - 【人】 経理の担当者と、精算で問い合わせるロットを決める
- 【人】 委託先に問い合わせ、返事を台帳に残す
5番目と6番目が、この設計の分かれ目です。 重量の基準が決まらない値は割り算に使いません。決まらないまま割ると、精算の根拠がもっともらしい誤りになります。
7番目で照合を規則の表に置いているのも、意図してのことです。 契約の歩留まりは規格ごと・委託先ごとに違い、契約を改めても、直すのは表だけです。
02今回想定するシステム構成
加工報告・パッキングリスト(英文のPDF。一部は手書きの重量) │ 生産管理の担当者が受付フォルダへ保存 ▼【トリガー】Amazon S3 への保存 AWS Lambda ├──▶ 形式・サイズ・パスワードの確認、委託先とロットの見分け ▼ AWS Textract(StartDocumentAnalysis。TABLES・FORMS・QUERIES・SIGNATURES) │ 表のセルと列の見出し・合計の行、項目と値、問いへの答え、署名、信頼度、手書きか印字か ▼ AWS Lambda(Python) │ ① 項目の対応表で規格と重量の欄を共通の項目に直す │ ② 単位とグレーズの扱いを決め、正味の kg にそろえる │ ③ 箱の数×1箱の重量と製品の重量を照らす │ ④ 歩留まりを出し、契約と支給の記録に照らす ▼ ロットごとの判定(ok / below_contract / weight_gap / needs_review) ▼ 【人が ok 以外のロットだけ確認】 ├──▶ ロットごとの歩留まりの台帳 └──▶ 契約の歩留まりとの差の一覧(精算の問い合わせの候補)
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | AWS Textract(StartDocumentAnalysis の TABLES・FORMS・QUERIES・SIGNATURES) | Azure AI Document Intelligence、Google Document AI |
| 差異計算 | 項目の対応、単位とグレーズのそろえ、箱の照合、歩留まりと契約の照合(Python。AWS Lambda で動かす) | ─ |
| 連携 | AWS Lambda(S3 への保存を起点に読み取りを始め、結果を一覧に書く) | Amazon EventBridge |
| 保管 | Amazon S3(報告と読み取りの結果) | 社内のファイルサーバー |
| 通知 | Amazon SNS(読み取りの完了と要確認の知らせ) | 社内のチャット |
支給の記録と委託の契約の表は、新しく足すものではありません。 新しく作るのは、委託先ごとの項目の対応表です。報告に書かれる欄の名前と共通の項目、重量の単位、パッキングリストの重量がグレーズ込みか正味か、原料の重量が解凍の前か後かを、委託先ごとに並べた表です。
報告は、AWS Textract の文書の解析で読みます。 規格ごとの製品の重量は表(TABLE・CELL)として、ロット番号や加工の日のような項目と値の組はフォーム(KEY_VALUE_SET)として、加工場の担当者の署名は SIGNATURE として返ります。単語ごとに、印字か手書きか(TextType)も返ります。
AWS Textract は日本語を読めず、手書きの文字は英語でしか読めません。 対応する言語は英語・フランス語・ドイツ語・イタリア語・ポルトガル語・スペイン語です。委託先の報告が英文であることが、この構成の前提です。 現地の言葉の書き込みがある報告は、その欄を人に回します。
03どうやって実装するのか
処理の起点を決める
受付フォルダ(Amazon S3 のバケット)に加工報告かパッキングリストのPDFが保存されたことを起点にします。 書類は加工が終わって船積みするときに、ロットごとに届きます。製品が日本に着く前に差を出しておけば、着いた製品の重量を量り直すロットを先に決められます。
ファイル名の先頭に、委託先の略号とロット番号と書類の種類を付けます。 委託先が分かれば、項目の対応表を最初から正しく選べます。加工報告とパッキングリストはロットで組にし、 両方がそろってから照合を始めます。
終わったファイルは処理済みの場所へ移します。 移すのは成功したときだけで、受付フォルダに残っている数が、そのまま未処理の数になります。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 加工報告 | ロット番号、加工の日、受け入れた原料の重量、規格ごとの製品の重量、副産物の重量、検品した者、署名 | 受付フォルダ |
| パッキングリスト | 規格ごとの箱の数、1箱の重量、合計の重量、グレーズの率、重量の単位 | 受付フォルダ |
| 読み取り結果 | 表のセルと列の見出し・合計の行、項目と値、問いへの答え、署名、信頼度と、印字か手書きか | AWS Textract |
| 支給の記録 | ロット番号、魚種、出荷した重量(解凍前)、出荷の日 | 生産管理部の表 |
| 委託の契約の表 | 製品の規格ごとの契約の歩留まり、加工賃の単価と払う重量の基準、グレーズの率、差の許す幅 | 生産管理部の表 |
| 項目の対応表 | 委託先ごとの欄の名前と共通の項目、単位、グレーズの扱い、原料の重量の定義 | 自社で整える表 |
質を決めるのは、項目の対応表の「グレーズの扱い」の列です。 パッキングリストの見出しに「Net Weight (excl. glaze)」のように書かれていればそれに従い、書かれていなければ対応表に従い、どちらでも決まらなければ決めません。
原料の重量の定義も、対応表に1列持たせます。 加工場が受け入れた重量を解凍の前に量るか後に量るかで、同じ原料でも重量が変わります。 契約の歩留まりをどちらで取り決めたかを、契約の表と合わせておきます。
副産物の重量は、照合の補助に使います。 製品と副産物の重量の合計が原料の重量から大きく離れていれば、どこかの欄の読み違いか、報告の書き違いの疑いがあります。
データの取得方法を決める
報告は1ページから数ページなので、ページ数によらず非同期の StartDocumentAnalysis に S3 の場所を渡し、FeatureTypes に TABLES・FORMS・QUERIES・SIGNATURES を指定して読みます。 返った JobId を控え、完了の知らせが Amazon SNS に届き、状態が SUCCEEDED であることを確かめてから GetDocumentAnalysis で結果を取ります。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 規格ごとの製品の重量 | TABLE の CELL | 歩留まりの分子 |
| 箱の数・1箱の重量 | パッキングリストの TABLE の CELL | 製品の重量の検算 |
| 合計の行 | EntityTypes が TABLE_SUMMARY のセル | 行の合計との照合 |
| 原料の重量・ロット番号 | KEY_VALUE_SET、QUERY_RESULT | 歩留まりの分母、台帳の行 |
| 署名 | SIGNATURE | 検品した者の署名の有無 |
| 印字か手書きか | WORD の TextType | 手書きの重量の扱いを分ける |
問い(Queries)は英語の文書でだけ使えます。 委託先の報告は英文なので使えます。問いは対象のページを指定しないと1ページ目にしか当たらず、 原料の重量が2ページ目の集計に書かれる委託先もあるため、その委託先だけ Pages に * を指定します。どの委託先がそうかは、対応表に持たせます。
同じ ClientRequestToken で読み取りを始めれば、同じ JobId が返ります。 ファイル名から作った値を渡しておけば、再試行で同じファイルを二度読まずに済みます。JobId は7日間だけ有効なので、 結果は取った時点で S3 に残します。
AIへ渡す前に整形する
- 形式の確認 … JPEG・PNG・PDF・TIFF のいずれかであることを確かめます。加工場で撮った報告の写真も、そのまま読めます
- パスワードの確認 … パスワードで保護された PDF は読めません。解除した版を委託先に頼みます
- 画像と文字の大きさ … 各辺10,000ピクセル以下、文字の高さは15ピクセル(150 DPI で8ポイント相当)が下限です。冷凍庫の前で撮った写真は、霜や手ぶれで文字がつぶれがちです
- 組の確認 … 同じロットの加工報告とパッキングリストがそろっているかを見ます。片方だけなら照合を待ちます
- 重複の確認 … 委託先とロット番号が同じものは重複として外します。訂正の版が届いたときは、両方を残して人が選びます
- 単位の確認 … 対応表の単位と、表の見出しの「kg」「lbs」を照らします。両方が食い違えば、そのロットを
unit_conflictとして人に回します
6番目を省かないでください。 1ポンドはおよそ0.45キログラムで、単位を取り違えた歩留まりは、半分以下か倍以上になります。 大きすぎる差は目立ちますが、合計だけが lb で書かれた書類のように一部の欄だけが違うと、差が小さく出て見逃します。
AIに処理させる
させるのは、報告とパッキングリストから決まった項目の値を取り出し、欄の名前・単位・信頼度・印字か手書きかを添えることだけです。 単位とグレーズのそろえ、箱の照合、歩留まりの計算と契約の照合は、取り出した後に Python の規則が行います。
| 取り出す項目 | どこから | 取り出せないときの扱い |
|---|---|---|
| ロット番号・加工の日 | 問いへの答え、フォーム | 空なら台帳の行を決められず needs_review |
| 受け入れた原料の重量 | フォーム、問いへの答え | 空なら歩留まりを出さない。needs_review |
| 規格ごとの製品の重量 | 表のセル | 空なら missing。0とはみなさない |
| 箱の数・1箱の重量・グレーズの率 | パッキングリストの表 | 空なら箱の照合をしない |
| 副産物の重量・署名 | 表のセル、署名 | 署名が無ければ一覧に印を付ける |
| させないこと | 理由 |
|---|---|
| グレーズの扱いの推測 | グレーズ込みで割ると、足りないロットが足りて見える |
| 単位の推測 | lb を kg と読むと歩留まりが倍以上になる |
| 原料の重量を支給の記録で埋める | 輸送中の減りや量り方の差が消える |
| 歩留まりの低さの理由の判断 | 原料の大きさ・鮮度・加工の腕のどれかは画像からは分からない |
| 精算の請求の可否の決定 | 契約と取引の関係を見て経理部と生産管理部が決める |
3行目がいちばん起きやすい失敗です。 報告に原料の重量が無いとき、手元の出荷した重量で割りたくなります。そうすると、加工場が受け入れた時点の差が消え、 輸送中に減ったのか、加工で減ったのかが分からなくなります。
指示内容を固定する
文書の解析そのものには指示を書く場所がありません。AWS Textract に渡すのは文書と問い(Queries)で、判定の指示にあたるものは読み取った後の規則として持ちます。 問いは次の4つです。
【問い(Queries。英文の報告)】
1. Alias: LOT_NO Text: What is the lot number?
2. Alias: RAW_WEIGHT Text: What is the total raw material weight received?
3. Alias: PROCESS_DATE Text: What is the processing date?
4. Alias: GLAZE Text: What is the glaze percentage?
【読み取った値の扱いの決まり】
1. 値が空の項目は missing とする。0 や支給の記録の値で埋めない。
2. 信頼度が決めた値を下回る値は unreadable とし、値は参考として残す。
3. 欄の名前は、その委託先の対応表だけで共通の項目
(raw_weight, product_weight, byproduct_weight, cartons,
weight_per_carton, glaze_pct)に直す。表に無い名前は unknown_item とする。
4. 単位は表の見出しの印、無ければ対応表で決める。
両方あって食い違えば unit_conflict とし、計算に使わない。
5. パッキングリストの重量がグレーズ込みか正味かは、見出しの語、
無ければ対応表で決める。どちらでも決まらなければ needs_review とし、
歩留まりを出さない。
6. グレーズ込みの重量は、契約の表のグレーズの率で正味に直す。
報告のグレーズの率が契約と違えば glaze_diff とする。
7. 箱の数 × 1箱の正味重量 と、報告の製品の正味重量の差が
決めた幅を超えたら carton_mismatch とする。どちらの値も直さない。
8. 歩留まりは、規格ごとの製品の正味重量 ÷ 受け入れた原料の重量
× 100 とし、小数1桁で残す。
9. 受け入れた原料の重量と、支給の記録の出荷した重量の差が
決めた幅を超えたら weight_gap とする。
10. 英語でない手書きの書き込みは照合に使わず、欄の文字を一覧に写す。
4番目と5番目が、この構成の罠です。 どちらも「たぶんこうだろう」で埋めたくなる箇所で、埋めた瞬間に、誤った歩留まりが精算まで通ります。 決まらない委託先は、対応表に書き方を足せば次のロットから決まります。
6番目で、報告のグレーズの率をそのまま使わないのも理由があります。 グレーズの率は契約で決めた値で、報告の値が違えば、それ自体が問い合わせの候補です。
出力形式を固定する
次の形の JSON で一覧に書き出します。
{
"processor_code": "PR-VN-01",
"lot_no": "",
"process_date": "2026-09-18",
"raw_weight_kg": 0,
"raw_weight_basis": "before_thaw | after_thaw",
"products": [
{ "spec": "fillet_skinless_boneless", "weight_raw": "", "unit": "kg | lb",
"glaze_basis": "net | with_glaze", "net_kg": 0, "yield_pct": 0,
"contract_yield_pct": 0, "diff_pt": 0,
"status": "ok | below_contract | missing | unreadable | needs_review",
"text_type": "PRINTED", "confidence": 0 }
],
"checks": {
"carton": "ok | carton_mismatch | not_checked",
"glaze": "ok | glaze_diff | not_checked",
"supply_weight": "ok | weight_gap | not_checked",
"unit": "ok | unit_conflict"
},
"signature_found": true,
"verdict": "ok | query_processor | needs_review"
}
1つ目の理由は、元の文字と直した重量を並べて残せることです。 weight_raw と unit と glaze_basis と net_kg が並んでいれば、どの基準でどう直したかを、画像を開く前に読めます。
2つ目は、差を「どこで減ったか」に分けて持てることです。 supply_weight は輸送と受け入れの差、yield_pct は加工の差です。精算の問い合わせでは、どちらの差かで相手に聞くことが変わります。
| 条件 | verdict |
|---|---|
すべての規格が契約の歩留まりを満たし、checks がすべて ok | ok |
below_contract・weight_gap・glaze_diff・carton_mismatch がある | query_processor |
needs_review・missing・unreadable・unit_conflict がある | needs_review |
below_contract は請求の決定ではありません。 契約の許す幅を外れたことの記録で、問い合わせるかどうかは人が決めます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 受付フォルダ | Amazon S3 の保存のイベント | Lambda を起動する |
| AWS Textract | 非同期の API 呼び出し | 報告の表・項目・問い・署名の読み取り |
| Amazon SNS | 完了の知らせ | 状態を確かめて結果を取る |
| 支給の記録・委託の契約の表 | スプレッドシートの読み取り | 出荷した重量、契約の歩留まり、グレーズの率 |
| 項目の対応表 | スプレッドシートの読み取り | 欄の名前、単位、グレーズの扱い |
| 歩留まりの台帳 | 人が確かめた後の取り込み | ロットの行 |
| 差の一覧 | 判定の書き出し | 精算の問い合わせの候補 |
歩留まりの台帳には自動で書き込みません。 グレーズの扱いを取り違えた値が台帳に入ると、委託先ごとの歩留まりの傾向を誤って読み、 次の契約の歩留まりの取り決めまで狂います。経理の精算の仕組みにもつなぎません。
人が確認する
人が開くのは ok 以外のロットだけです。 ok のロットは一覧で流し見て台帳に取り込みます。全件を開く設計にすると、第10章の4.0時間には収まりません。
needs_reviewを先に見る … 単位、グレーズの扱い、手書きの重量を、画像で確かめます。決めた書き方は対応表に足しますweight_gapを確かめる … 出荷した重量と受け入れた重量の差を、解凍の前後の定義と輸送の記録で確かめますbelow_contractを経理と見る … 契約の許す幅と、同じ委託先の前後のロットの歩留まりを見て、問い合わせるかを決めます- 製品が着いたら量り直すロットを決める …
glaze_diffとcarton_mismatchのロットは、着いた箱の正味重量を量り直す候補にします
3番目は、仕組みでは置き換えられません。 原料の魚の大きさや季節で歩留まりは動き、委託先との長い取引の中で、どこまでを精算の対象にするかを決めることです。
目標は、40件をならして1件6分です。 それを超える月は、項目の対応表の単位とグレーズの列が足りていません。
例外に対処する
| 起きること | 対応 |
|---|---|
| パスワードで保護された PDF | 読めない。解除した版を頼む |
| 単位が見出しと対応表で食い違う | unit_conflict。計算に使わず人が決める |
| グレーズの扱いが決まらない | needs_review。委託先に確かめ、対応表に足す |
| 原料の重量が書かれていない | 歩留まりを出さない。支給の記録で埋めない |
| 1つのロットが2つの船積みに分かれる | パッキングリストを合わせてから照らす。合わせられなければ人へ |
| 規格の名前が対応表に無い | unknown_item。似た規格に寄せない |
| 副産物を含めた合計が原料の重量を超える | 欄の読み違いを疑い、needs_review |
| 現地の言葉の手書きの書き込みがある | 照合に使わず、欄の文字を一覧に写して人へ |
読み取りが失敗した、または JobId が切れた | 受付フォルダに残し、読み直す。処理済みへ移すのは成功時だけ |
大半は AI の精度ではなく、書類の書き方の揺れと、対応表の整い方の問題です。
記録を残す
- 元の加工報告とパッキングリスト、受け取った日時・委託先・ロット
- AWS Textract が返した JSON の全文と
JobId - ロットごとの判定と、そのとき参照した対応表・契約の表の版
- 人が値や判定を直した記録 … どの欄を、どう読み直したか
- 委託先への問い合わせの内容と返事、精算の結果
- 製品が着いた後に量り直した正味重量(品質管理の担当者が後から足す)
- 委託先ごと・規格ごとの歩留まりの推移
6つ目を足していくと、委託先の報告と自社で量り直した重量の差が見えてきます。 差の大きい委託先のロットは、量り直す候補を広げる材料になります。
04実装レベルの3段階
最小構成では件数がさばけません。 1通ずつ読ませるので、月40件には使えません。確かめるための段階です。 半自動化で、1件30分が6分になり、この段階が本記事の想定です。 台帳への転記、単位とグレーズの直し、歩留まりの計算と契約の照合は自動になり、人は ok 以外のロットだけを見ます。差が大きいのは、書式の違う書類から重量を探して写す作業がまるごとなくなるからです。 本格構成は、着いた製品の重量を毎ロット量っている場合に向きます。
05工数削減シミュレーション
導入後 40件 × 6分 ÷ 60 = 4 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 原料の魚・いか・えびなどを海外の加工場に支給し、切り身・骨取り・むき身などに加工してもらって輸入している水産加工会社・水産物の商社。委託先から英文の加工報告とパッキングリストがロットごとに届き、歩留まりを台帳に写して契約の歩留まりと見比べ、加工賃や原料の不足分の精算をするのに手間がかかっている場合。
- 加工を委託せず、製品を買い付けるだけの場合(歩留まりの精算がありません)。委託先が数ロットで、目で見て写しても負担にならない場合。報告が日本語や中国語・ベトナム語で届く場合(AWS Textract は日本語・中国語・ベトナム語を読めません)。なお、製品の品質・衛生の判断、輸入の手続き、委託先への請求の可否の決定は、この構成では行いません。
07最小構成で試す方法
- 先月の書類から10ロット分を選ぶ(lb で書かれたもの、グレーズ込みの重量のもの、手書きの重量のものを必ず入れる)
- その10ロットについて、当時台帳に写した重量と歩留まり、精算で問い合わせた内容を書き出す
- AWS Textract のコンソールで、表・フォーム・問い・署名の解析を1通ずつかける
- 返った値を台帳の値と並べ、原料と製品の重量、箱の数、グレーズの率、単位が取れているかを見る
- 取れなかった項目を並べ、項目の対応表の下書きを委託先ごとに作る
10ロットは必ずやってください。 Lambda を組む前に、「規格ごとの重量が表として返るか」と「グレーズの扱いが書類のどこから決まるか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 規格ごとの重量が表のセルで返り、グレーズの扱いも見出しから決まる | 対応表を作り、S3 と Lambda の連携に進む |
| 重量が項目と値の組で返る | 対応表にフォームの欄の名前を足す。構成は有効 |
| グレーズの扱いがどの書類にも書かれていない | 委託先に書き方を頼むのが先。 読み取りの問題ではない |
3行目は珍しくありません。 失敗ではなく、担当者が経験で補っていた重量の基準が、書類そのものには書かれていなかったと分かったということです。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| グレーズ込みの重量で歩留まりを出す | 扱いが決まらなければ歩留まりを出さない |
| lb を kg として読む | 見出しと対応表を照らし、食い違えば人へ |
| 原料の重量を支給の記録で埋める | 埋めない。差は weight_gap で別に持つ |
| 箱の数×1箱の重量と合計が合わない | どちらも直さず carton_mismatch |
| 原料の重量が2ページ目にあって問いが空になる | その委託先だけ Pages に * を指定する |
| 現地の言葉の書き込みを読ませる | 対応は6言語のみ。人に回す |
上の2行が、この構成の失敗のほとんどです。 どちらも重量の基準の取り違えで、差の一覧の上では、歩留まりがよいロットに見えます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 委託先の名前、ロットごとの原料と製品の重量、契約の歩留まりと加工賃の単価です。個人情報はほとんど含みませんが、契約の歩留まりと加工賃は、委託先との交渉の材料そのもので、他の委託先に知られたくない情報です。
- 契約の情報を一覧の外に出さない … 差の一覧は生産管理部と経理部だけが見ます。委託先への問い合わせに、他の委託先の歩留まりや単価を書かないでください
- S3 の結果を暗号化する …
StartDocumentAnalysisに KMS の鍵を渡せば出力をその鍵で暗号化でき、渡さないときは SSE-S3 です - 歩留まりの差を、品質の判断の代わりにしない … 歩留まりが契約を満たしていても、骨の残りや色の変化は分かりません。製品の品質と衛生の確認は、着いた製品の検品で行ってください
- 表示の重量と精算の重量を混ぜない … Codex の規格では、グレーズを付けた食品の正味の量はグレーズを除いて示すとされ、グレーズを除いた重量の量り方も示されています。精算の重量を何で取り決めたかと、表示の重量は別に確かめてください
- 精算の請求は人が決める …
query_processorは確認の入口です。請求するかどうかは、契約と取引の関係を見て決めてください
誤りのリスクは、歩留まりが足りないロットを見逃すことと、足りているロットを誤って問い合わせることの2つです。 どちらも重量の基準の取り違えから起きるため、基準が決まらない重量を割り算に使わない決まりで防ぎます。
10まず何から始めるか
1週目:契約の表を機械で読める形にする
委託の契約を、規格ごとの契約の歩留まり、許す幅、グレーズの率、加工賃を払う重量の基準、原料の重量の定義として1つの表にまとめます。
2週目:10ロットで試す
先月の10ロット分を AWS Textract のコンソールで読ませます。規格ごとの重量が表で返るか、単位とグレーズの扱いが書類のどこから決まるかを最優先で見ます。
3週目:項目の対応表を作る
ロットの多い委託先から、欄の名前、単位、グレーズの扱い、原料の重量が解凍の前か後かを1行ずつまとめます。書き方が決まらない委託先には、パッキングリストにグレーズを除いた正味の重量を書いてもらうよう頼みます。
4週目:受付から転記の案までをつなぐ
S3 への保存を起点に読み取りを始め、正味の kg にそろえた重量の一覧を書き出すところまで作ります。この時点では契約の照合をせず、値の取れ方だけを見ます。
2か月目: 箱の照合、歩留まりと契約の照合、支給の記録の照合を足します。3か月目以降: 着いた製品の量り直しの値を台帳に足していき、1件30分が何分になったかを実測します。needs_review が月に数件まで減り、精算の問い合わせを製品の着く前に送れるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 対応形式が JPEG・PNG・PDF・TIFF。同期は10MB・PDF 1ページまで、非同期は PDF 500MB・3,000ページまで。PDF はパスワード保護不可。各辺10,000ピクセル以下。対応言語が英・仏・独・伊・葡・西で、手書きの文字は英語のみ。問い(Queries)は英語の文書のみ。文字の高さの下限が15ピクセル(150 DPI で8ポイント相当) | AWS: Set Quotas in Amazon Textract | 2026-10-29 |
AnalyzeDocument がフォーム(KEY_VALUE_SET)・表(TABLE・CELL)・署名(SIGNATURE)・問い(QUERY・QUERY_RESULT)を返し、単語に TextType が付くこと。FeatureTypes の値。非同期は StartDocumentAnalysis を使うこと | AWS: AnalyzeDocument | 2026-10-29 |
StartDocumentAnalysis が JobId を返し、完了の状態を SNS に知らせ、SUCCEEDED を確かめてから GetDocumentAnalysis で結果を取ること。同じ ClientRequestToken なら同じ JobId が返ること。JobId が7日間有効なこと。KMSKeyId を渡さないと SSE-S3 で暗号化されること | AWS: StartDocumentAnalysis | 2026-10-29 |
表のセルに COLUMN_HEADER・TABLE_SUMMARY などの EntityTypes が付くこと | AWS: Tables | 2026-10-29 |
問いの Pages を指定しないと ["1"] になり、* で全ページを指定できること | AWS: Query | 2026-10-29 |
| 冷凍の魚の切り身の一般規格(CXS 190-1995)で、グレーズを付けた食品の正味の量はグレーズを除いて示すとされること。グレーズを付けた製品の正味重量を、冷水でグレーズを除いてから量る方法が示されていること | FAO/WHO Codex: Standard for Quick Frozen Fish Fillets (CXS 190-1995) | 2026-10-29 |
契約の歩留まりと許す幅、精算の取り決めは、委託先との契約で確かめてください。 本記事は上記の公開情報で確認できた範囲だけを扱っています。輸入の手続きと表示の規則は確かめていません。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-2231)についてのご相談はこちらから。
