Media > AI活用ユースケース > 品質管理 > コーヒー豆の輸入商社が産地から届く英文の生豆の品質報告書を読み取り、欠点数・水分・スクリーン・カッピングの評価を入荷ロットの台帳に転記して、契約の品質条件と入荷後の検査との差を拾う

コーヒー豆の輸入商社が産地から届く英文の生豆の品質報告書を読み取り、欠点数・水分・スクリーン・カッピングの評価を入荷ロットの台帳に転記して、契約の品質条件と入荷後の検査との差を拾う

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

産地の輸出者や検査機関から届く英文の生豆の品質報告書を読み取り、欠点数・水分・スクリーン・カッピングの評価を入荷ロットの台帳に写します。契約の品質条件と入荷後の自社の検査と照らし、差のあるロットを担当者に返します。

サマリー
AIサービス
AWS Textract/Azure AI/Google Document AI
連携・自動化
Python
対象業界
商社/小売/製造
対象部門
品質管理/購買
対象業務
データ入力・転記/内容確認・チェック
主な課題
入力作業が多い/属人化している/確認ミスが多い
AIで行う処理
読み取り(OCR)
主な効果
入力漏れ削減/品質標準化/工数削減
導入難易度
★★★☆☆
実装レベル
本格構成
費用感
API連携(中)
人間の確認
必須
現在工数
22h/月
AI導入後
6h/月
想定削減
73%
年間削減
192h
モデル条件による試算値です。実在企業の実績ではありません。

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

導入前(Before)
  1. 輸出者から届いた品質報告書のPDFを開き、ロット番号・産地・品種・精選方法・等級を台帳に写す
  2. 水分、欠点の数(種類ごと・区分ごと)、スクリーンの分布、カッピングの評価を台帳に写す
  3. 買付の契約の記録を探し、そのロットの品質条件(等級・欠点の上限・水分の範囲・評価の下限)と見比べる
  4. 入荷後に自社で検査した値が出たら、出荷前の値と並べて差を計算する
  5. 報告書のカッピングがどの用紙の評価か、欠点を何グラムで数えたかをメモに書く
  6. 差や条件の外れがあれば、購買の担当と相談し、輸出者への連絡を検討する
導入後(After)
  1. 人届いた品質報告書を、ファイル名にロット番号を付けて受付フォルダ(Amazon S3)に置く
  2. 自動保存をきっかけに処理が動き、形式・サイズ・文字の大きさを確かめる
  3. 自動AWS Textract が報告書を読み、質問への答え・表・キーと値・全文を信頼度つきで返す
  4. 自動欠点の名前・区分・単位を自社の項目表にそろえ、試料の量と評価の用紙を物差しとして記録する
  5. 自動買付の契約の記録から品質条件を引き、物差しが同じ項目だけを照らす
  6. 自動入荷後の自社の検査が出ていれば、出荷前の値と並べて差を出す
  7. 自動台帳に「確認待ち」の行を作り、照合の結果と根拠を付ける
  8. 人品質管理の担当が、条件の外れ・差・物差しの違い・読み取りの怪しい項目が出た行だけを確かめる
  9. 人購買の担当と、承認・輸出者への連絡・次の買付への反映を決める
各工程の詳しい説明を読む
  1. 輸出者から届いた品質報告書のPDFを開き、ロット番号・産地・品種・精選方法・等級を台帳に写す
  2. 水分、欠点の数(種類ごと・区分ごと)、スクリーンの分布、カッピングの評価を台帳に写す
  3. 買付の契約の記録を探し、そのロットの品質条件(等級・欠点の上限・水分の範囲・評価の下限)と見比べる
  4. 入荷後に自社で検査した値が出たら、出荷前の値と並べて差を計算する
  5. 報告書のカッピングがどの用紙の評価か、欠点を何グラムで数えたかをメモに書く
  6. 差や条件の外れがあれば、購買の担当と相談し、輸出者への連絡を検討する

(a)転記が重い。 1通に欠点の種類ごとの粒数やスクリーンの分布の表があり、写す数字が数十になります。 表の行と列を取り違えても、台帳の上では目立ちません。

(b)物差しの違いが記録に残らない。 5番目のメモは担当者の手元にしか残らず、後から台帳を見た人は、古い用紙の点数と新しい評価を同じ列で比べてしまいます。

(c)出荷前と入荷後の差が見えない。 4番目は入荷後の検査が出るまで数週間あき、そのまま忘れられることがあります。 産地での評価と自社の評価がどれだけずれるかが、輸出者ごとに残りません。

(d)判断が担当者の経験に寄る。 どの差を問題にするかが担当者ごとに違い、引き継ぎのときに基準が変わります。

  1. 【人】 届いた品質報告書を、ファイル名にロット番号を付けて受付フォルダ(Amazon S3)に置く
  2. 【自動】 保存をきっかけに処理が動き、形式・サイズ・文字の大きさを確かめる
  3. 【自動】 AWS Textract が報告書を読み、質問への答え・表・キーと値・全文を信頼度つきで返す
  4. 【自動】 欠点の名前・区分・単位を自社の項目表にそろえ、試料の量と評価の用紙を物差しとして記録する
  5. 【自動】 買付の契約の記録から品質条件を引き、物差しが同じ項目だけを照らす
  6. 【自動】 入荷後の自社の検査が出ていれば、出荷前の値と並べて差を出す
  7. 【自動】 台帳に「確認待ち」の行を作り、照合の結果と根拠を付ける
  8. 【人】 品質管理の担当が、条件の外れ・差・物差しの違い・読み取りの怪しい項目が出た行だけを確かめる
  9. 【人】 購買の担当と、承認・輸出者への連絡・次の買付への反映を決める

4番目が、この設計の分かれ目です。 数字と物差しを別の列に持つことで、物差しが違う数字どうしを規則の側で比べないようにできます。

8番目で人が見るのは、何か出た行だけです。 何も出なかったロットは、一覧で等級と水分と評価を流し見て確定します。

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

構成図
産地からの品質報告書(PDF・スキャン)
   │  担当者がファイル名にロット番号を付ける
   ▼【トリガー】受付フォルダ(Amazon S3)への保存
AWS Lambda
   ├──▶ 形式・サイズ・解像度の確認
   ▼
AWS Textract(StartDocumentAnalysis:QUERIES・TABLES・FORMS)
   │   質問への答え・表・キーと値・全文を信頼度つきで返す
   ▼  完了の通知(Amazon SNS)
AWS Lambda(Python)
   │   ① 欠点の名前・区分・単位をそろえ、物差しを記録する
   │   ② 契約の品質条件と、物差しが同じ項目だけを照らす
   │   ③ 入荷後の自社の検査と並べて差を出す
   ▼
入荷ロットの台帳に「確認待ち」の行(照合の結果と根拠つき)
   ▼
【人が条件の外れ・差・物差しの違いのあるものだけ確認】
   └──▶ 承認・輸出者への連絡・次の買付への反映
役割想定する製品代替候補
OCRAWS Textract(AnalyzeDocument の非同期処理。QUERIES・TABLES・FORMS)Azure AI Document Intelligence、Google Document AI
差異計算契約の品質条件・入荷後の自社の検査との照合(Python。AWS Lambda で動かす)─
連携AWS Lambda(S3 への保存を起点に読み取りを始め、結果を台帳へ書く)Amazon EventBridge
保管Amazon S3(報告書と読み取り結果)社内のファイルサーバー
通知Amazon SNS(読み取りの完了の通知)Amazon SQS

台帳と買付の契約の記録は、新しく足すものではありません。 台帳に「試料の量」「評価の用紙」の列を足し、契約の記録の品質条件を、自由記述から項目ごとの表に直します。 自由記述のままだと、照らす相手が決まりません。

新しく作るのは、欠点の項目表です。 「Full Black」「Black」「Full Sour」のような輸出者ごとの言い方と、その欠点を区分1・区分2のどちらで扱うかを、自社の基準で1行ずつ持ちます。区分の付け方は自社の品質管理が決めます。

土台になるのは AWS Textract の文書分析です。 全文に加えて、キーと値、表、「質問(Queries)」への答えを返します。表はセル・結合セル・列見出し・表の題と脚注まで分けて返り、欠点の表やスクリーンの分布の表を行ごとに取り出せます。 一方で、質問による抽出と手書きの認識は英語だけです。

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

Step1

処理の起点を決める

受付フォルダ(Amazon S3)に報告書が保存されたことを起点にします。 出荷前の試料は承認を待って船積みが止まっているため、届いた日のうちに照合の結果を出す必要があります。 定時の実行ではなく、届いたその場で動かします。

ファイルは担当者が <ロット番号>_PSS.pdf(出荷前の試料)、<ロット番号>_ARR.pdf(入荷後の検査)の形にして置きます。 末尾で書類の種類を分け、ロット番号で台帳の行と結び付けます。

S3 への保存を AWS Lambda が受け、StartDocumentAnalysis を呼びます。報告書は2〜3ページのことがあるため、非同期にそろえます。 ClientRequestToken にファイルから作った値を入れると、二度置いても同じ JobId が返り、二重に読みません。 完了は Amazon SNS に届き、GetDocumentAnalysis で結果を取ります。結果は既定で7日間しか取れないため、すぐ S3 に保存します。

Step2

入力データを集める

データ中身取得元
品質報告書ロット番号・産地・品種・精選方法・等級・水分・欠点の表・スクリーンの分布・カッピングの評価受付フォルダ(S3)
買付の契約ロット番号・等級・欠点の上限・水分の範囲・スクリーン・評価の下限と、評価の用紙契約の記録(項目ごとの表)
入荷後の自社の検査入荷後の試料の水分・欠点・スクリーン・評価と、試料の量・評価の用紙自社の検査の記録
欠点の項目表欠点の言い方と、自社の区分(区分1・区分2)の対応品質管理が育てる表
判定の決まり出荷前と入荷後の差を「差あり」とする幅、評価の差を「要確認」とする幅品質管理と購買が決めた表

質を決めるのは、契約の記録に「評価の用紙」を書くことです。 契約の評価の下限が2004年の用紙の点数で書かれているのに、報告書が CVA の評価なら、数字は並んでも比べられません。 そのときは照合をせず、人に回します。

Step3

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

読み取りは StartDocumentAnalysis に FeatureTypes として QUERIES、TABLES、FORMS を指定して行います。全文の行と単語は、指定した機能にかかわらず返ります。

取るものどの機能で何に使うか
質問への答えQUERIESロット番号・産地・等級・水分・試料の量・評価の合計など、1つの値の項目
表TABLES欠点の表とスクリーンの分布の表。行ごとに名前・区分・粒数を取る
キーと値FORMS「Moisture: 11.2%」のように見出しと値が並ぶ欄
全文の行と単語常に返る答えの位置の確かめと、用紙の名前(「CVA」「Affective」など)を探す材料

欠点は質問ではなく表で取ります。 欠点の種類は十数行あり、表なら列見出しで「名前」「区分」「粒数」「換算した欠点数」の列を分けて取れるからです。 表の CELL には行と列の位置と列見出しの印が付くので、列見出しで列を決めます。

質問は対象のページを指定しないと、既定で1ページ目にしか当たりません。 カッピングの評価は2ページ目以降にあることが多いので、Pages: ["*"] を付けます。

Step4

AIへ渡す前に整形する

  1. 形式の確認 … JPEG、PNG、PDF、TIFF であること。XFA形式のPDFは扱えません
  2. パスワードの確認 … PDFはパスワード保護不可です。解除したものを輸出者に頼みます
  3. サイズと寸法の確認 … 非同期の処理で JPEG と PNG は10MB、PDF と TIFF は500MB・3,000ページまで、画像はどの辺も10,000ピクセル以下です
  4. 文字の大きさの確認 … 文字の高さが15ピクセル(150 DPIで8ポイント相当)を下回ると検出されません。欠点の表は小さな字なので、縮小しすぎません
  5. 言語の確認 … スペイン語・ポルトガル語の報告書は文字は検出できても質問が使えません。全文に英語の見出しがほとんど無ければ、質問を当てずに人に回します
  6. 手書きの用紙の確認 … カッピングの用紙の目盛りへの印は、文字ではないため読み取りの対象にしません。合計の欄に書かれた数字だけを読みます
Step5

AIに処理させる

させるのは、報告書から決まった項目の値を、物差しと根拠の位置と信頼度を添えて読み取ることだけです。 そろえ方と照合は、読み取りの後にプログラムの規則が行います。

読み取る項目中身読み取れないときの扱い
ロット番号輸出者のロット番号・袋の表示合わなければ mismatch。結び付けができない
産地・品種・精選方法・等級ロットの属性読めなければ unreadable
水分水分の値と単位単位が読めなければ unit_unknown
欠点の表欠点の名前・区分・粒数項目表に無い名前は unmapped
試料の量欠点を数えた試料のグラム数見つからなければ basis_unknown
スクリーンの分布篩の番号ごとの割合表が読めなければ not_found
カッピングの評価合計の点数・評価と、用紙の種類用紙が決まらなければ scale_unknown

試料の量と用紙の種類を独立して読むのが、この表でいちばん大事なところです。 どちらも報告書の隅に小さく書かれるか、書かれていないことがあります。書かれていなければ basis_unknown・scale_unknown として、数字があっても照合に使いません。

させないこと理由
スペシャルティかどうか、等級に当たるかの結論自社の基準と契約で決まる。規則で照らし、人が確かめる
承認・申し立ての判断輸出者との関係と次の買付に関わる。人が決める
物差しの換算古い用紙の点数と CVA の評価を換算する決まりは無い
読めなかった値の補完前回のロットや契約の値で埋めない
Step6

指示内容を固定する

AWS Textract への指示は、英語の質問の一覧です。別名を付けて、受け取る側のプログラムが項目を取り違えないようにします。

QueriesConfig:
  Queries:
    - Text: "What is the lot number or ICO mark?"
      Alias: LOT_NO
      Pages: ["*"]
    - Text: "What is the country and region of origin?"
      Alias: ORIGIN
      Pages: ["*"]
    - Text: "What is the processing method?"
      Alias: PROCESS
      Pages: ["*"]
    - Text: "What is the grade?"
      Alias: GRADE
      Pages: ["*"]
    - Text: "What is the moisture content?"
      Alias: MOISTURE
      Pages: ["*"]
    - Text: "What is the sample weight in grams used for defect count?"
      Alias: SAMPLE_WEIGHT
      Pages: ["*"]
    - Text: "What is the total number of full defects?"
      Alias: TOTAL_DEFECTS
      Pages: ["*"]
    - Text: "What is the total cupping score?"
      Alias: CUP_SCORE
      Pages: ["*"]
    - Text: "Which cupping form or protocol was used?"
      Alias: CUP_FORM
      Pages: ["*"]

受け取った答えと表に対して、プログラムの側で次の決まりを当てます。これが実質的な「指示」です。

【答えと表の扱いの決まり】
1. 答えが空の項目は not_found とする。前回のロットや契約の値で埋めない。
2. 信頼度が決めた値を下回る項目は unreadable とし、値は参考として残す。
3. LOT_NO はファイル名のロット番号と比べ、合わなければ mismatch とし、
   台帳の行に結び付けない。
4. 欠点の表は列見出しで列を決める。見出しが無い表は cannot_parse とし、
   列の位置で決めない。
5. 欠点の名前は項目表で自社の名前と区分にそろえる。表に無い名前は
   unmapped とし、似た名前に寄せない。区分は報告書の区分ではなく
   自社の項目表の区分を使い、報告書の区分は参考として並べる。
6. TOTAL_DEFECTS は表から数え直した値と比べ、違えば
   count_mismatch とする。どちらかに寄せない。
7. SAMPLE_WEIGHT が空なら basis_unknown とし、欠点数を契約の上限と比べない。
8. CUP_FORM と全文の語から、評価の用紙を sca_2004 / cva / unknown に
   分ける。契約の用紙と違えば scale_mismatch とし、点数を比べない。
9. 水分は % を基準にそろえる。換算の決まりに無い単位は unit_unknown とする。

7番目と8番目が、この構成の要です。 試料の量が違えば同じ欠点数でも意味が違い、用紙が違えば同じ数字でも意味が違います。比べられないものを比べないことを、規則の側で決めておきます。

5番目で報告書の区分を使わないのも、意図してのことです。 同じ欠点を輸出者によって区分1とも区分2とも書くことがあり、基準は自社の側にそろえます。

Step7

出力形式を固定する

読み取りと照合の結果を、ロットごとに次の形のJSONにまとめて台帳へ渡します。

{
  "lot_no": "ETH-2026-0412",
  "report_type": "pre_shipment | arrival",
  "attributes": { "origin": "", "process": "", "grade": "" },
  "moisture": { "value": 0, "unit": "%", "status": "ok | unit_unknown | not_found" },
  "defects": {
    "sample_weight_g": 0, "basis": "ok | basis_unknown",
    "rows": [ { "lab_name": "Full Black", "own_name": "full_black",
                "own_category": 1, "lab_category": 1, "count": 0,
                "status": "ok | unmapped" } ],
    "total_report": 0, "total_recount": 0
  },
  "cupping": { "score": 0, "form": "sca_2004 | cva | unknown",
               "status": "ok | scale_unknown | scale_mismatch" },
  "contract_check": [
    { "item": "moisture", "limit": "", "result": "within | out_of_range | cannot_check" }
  ],
  "arrival_diff": [
    { "item": "moisture", "pre_shipment": 0, "arrival": 0, "diff": 0,
      "result": "within | over_tolerance | waiting_arrival" }
  ],
  "verdict": "confirm | review | urgent"
}

1つ目の理由は、数字と物差しを同じ要素に入れておけることです。 defects.basis と cupping.form が数字の隣にあり、台帳を後から読む人にも、何を比べてよいかが分かります。

2つ目は、arrival_diff を後から埋められることです。 出荷前の報告書を読んだ時点では waiting_arrival のまま台帳に置き、入荷後の検査が出たときに同じ行を更新します。

verdict条件担当者の扱い
confirmロット番号が一致し、全項目が within、物差しが契約と同じ一覧で流し見て確定
reviewunmapped・basis_unknown・scale_mismatch・count_mismatch・unreadable のどれかがある報告書の画像で確かめる
urgent出荷前の試料で契約の条件を外れる項目がある、または入荷後の差が幅の外当日中に購買の担当と相談する
Step8

システムへ連携する

つなぎ先方式内容
受付フォルダ(S3)保存の通知で Lambda を起動報告書の受け付け
AWS TextractStartDocumentAnalysis と GetDocumentAnalysis報告書の読み取り
買付の契約・自社の検査の記録・項目表読み取りのみ品質条件・入荷後の値・欠点の区分を引く
入荷ロットの台帳「確認待ち」の行の書き込み照合の結果と根拠つきの行を作る

輸出者には何も送りません。 承認するか、条件の外れを伝えるかは、品質管理と購買が決めて人が連絡します。 読み違い1つで承認や申し立てが流れる経路を作らないためです。

Step9

人が確認する

人が開くのは review と urgent の行だけです。 全件を開く設計にすると、第10章の6.0時間には収まりません。

  1. urgent を先に見る … 報告書の画像で、外れた項目の数字と単位を自分の目で読み直します。読み取りの誤りで urgent になっていないかを最初に確かめます
  2. 物差しの違いを確かめる … scale_mismatch や basis_unknown は、輸出者に用紙や試料の量を問い合わせるか、自社の検査を待つかを決めます
  3. unmapped の欠点の名前を項目表に足す … 同じ調べものを二度しないための作業です
  4. 確定する … 読み取りの値と直した値の両方を残します
Step10

例外に対処する

起きること対応
ロット番号がファイル名と合わないmismatch。台帳に結び付けず、担当者がロットを確かめる
英語以外の報告書質問は英語のみ。人が読むか、英語の版を輸出者に頼む
手書きのカッピングの用紙だけ合計の欄が無ければ not_found。目盛りの印は読まない
欠点の表の見出しが読めないcannot_parse。列の位置で決めずに人へ
同じロットの報告書が2通届いた再検査のこともある。差し替えにせず両方を残す
パスワード付きのPDFPDFは保護されていてはいけない。解除したものを頼む
読み取りが失敗した受付フォルダに残し、成功したときだけ処理済みへ移す
Step11

記録を残す

  • 報告書の元のファイル、AWS Textract の結果の全文(JSON)と JobId
  • そろえた後の値とそろえ方の記録、照合の結果とそのときの項目表・判定の決まりの版
  • 担当者が直した項目と直す前の値、輸出者に問い合わせた内容と回答
  • 輸出者ごとの、出荷前と入荷後の差の傾向

最後の行が、次の買付の材料になります。 産地の評価と自社の評価の差が輸出者ごとに分かれば、どの輸出者の報告書をどれだけ信じてよいかが数字で見えます。

04実装レベルの3段階

最小構成:コンソールで報告書を1通ずつ読ませ、結果を手で台帳に写す / 報告書の読み取り
半自動化:上記+S3 への保存を起点に読み取り、物差しつきで一覧に書き出す / 読み取り・項目のそろえ方・一覧化
本格構成:上記+契約の品質条件と入荷後の自社の検査と照らし、判定つきで台帳に行を作る / 読み取り・照合・差の算出

最小構成は、確かめるための段階です。 半自動化で、1通33分が18分程度になります。 写す作業は自動になりますが、契約の条件を探して見比べ、入荷後の値と並べる作業が残ります。本格構成で9分になり、この段階が本記事の想定です。 差が大きいのは、契約の条件を項目ごとの表に直せば、探す作業がなくなるからです。 段階を飛ばさないでください。 半自動化の一覧を1か月見ると、物差しの書かれていない輸出者と、欠点の名前のばらつきが先に分かります。

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

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

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

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

AI活用について相談する

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

向いている
  1. 中南米・アフリカ・アジアの産地から生豆を輸入し、出荷前の試料の品質報告書が月に数十通届く商社・専門商社。焙煎業者や小売の自社ブランドで生豆を直接買い付け、ロットごとの品質の記録を残している会社。報告書の書式が輸出者・検査機関ごとに違い、担当者が1通ずつ台帳に写して契約の条件と見比べている場合。産地の評価と入荷後の自社の評価の差を、次の買付に生かしたい会社。
向いていない
  1. 輸入するロットが月に数件で、目視で足りる場合。品質報告書がスペイン語・ポルトガル語などで発行されることが多い場合(AWS Textract は文字の検出はできても、質問による抽出は英語のみ)。報告書が手書きのカッピングの用紙だけで、合計の欄が書かれていない場合。なお、品質がスペシャルティかどうかの判定、買付の可否、輸出者への申し立ての可否、食品の輸入の手続きに当たる判断は、この構成では行いません。

07最小構成で試す方法

  1. 過去の品質報告書から15通を選ぶ(輸出者と検査機関がばらけるようにし、CVA の評価と古い用紙の点数の報告書を両方入れる)
  2. AWS のコンソールで AWS Textract の文書分析を開き、質問と表を指定して1通ずつ読ませる
  3. 欠点の表の行ごとの値と質問の答えを写し、当時の台帳の値と見比べる
  4. 列を取り違えた行と、試料の量・用紙の種類が読めなかった報告書に印を付ける
  5. 欠点の名前の言い方を集め、項目表の最初の版を作る

15通は必ずやってください。 規則を書く前に、「欠点の表を列見出しで分けられるか」「物差しが報告書から読めるか」を確かめます。

出てきた内容判断
表と答えが当時の台帳の値と合ったS3 と Lambda の連携に進む
試料の量・用紙の種類が書かれていない報告書が多い輸出者に書式の依頼をするのが先。 AIの問題ではない
欠点の名前のばらつきが大きい項目表を育てる。構成は有効

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

問題対策
古い用紙の点数と CVA の評価を比べてしまう用紙を独立して読み、違えば scale_mismatch で比べない
試料の量の違う欠点数を比べてしまう試料の量が読めなければ basis_unknown
欠点の区分が輸出者ごとにばらつく自社の項目表の区分を使う
欠点の表の列を取り違える列見出しで決め、見出しが無ければ cannot_parse
2ページ目の評価が空で返る質問は既定で1ページ目だけ。 Pages: ["*"] を付ける
読めなかった値が前回のロットで埋まる補完を禁じ、not_found のまま人に回す
入荷後の差を見忘れるwaiting_arrival の行を毎週数える
輸出者への連絡が自動で飛ぶ送らない。 品質管理と購買が決めて人が連絡する

上の3行が、この構成の失敗のほとんどです。 どれも「数字は読めているのに、物差しが違う」形で、物差しを数字と一緒に持てるかどうかで、運用に乗るかが決まります。

下の2行は、仕組みの外で起きる失敗です。 入荷後の検査は出荷前の報告書から数週間あとに出るため、待ちの行を数える仕組みが無いと、差の記録がいつまでも埋まりません。 輸出者への連絡は、照合の結果を見た人が言葉を選んで行います。

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

この構成で扱うデータ: ロットごとの品質の記録、輸出者と検査機関の名前、そして買付の契約の品質条件と、それに結び付く価格の条件です。個人の情報はほとんど含みませんが、どの輸出者からどんな品質をいくらで買っているかは、商社にとって競争の材料です。

  1. 読み取りに送るのは報告書だけにする … 契約の価格や条件は読み取りに要りません。照合は Lambda の側で行い、AWS Textract に送るのは報告書の画像だけにします
  2. 結果の保管先を自社の S3 にする … 非同期の処理の結果は、既定では AWS Textract の側の領域に暗号化されて7日間保管されます。OutputConfig で自社の S3 に出します
  3. 輸出者への連絡を自動で送らない … 出すのは照合の結果までです。承認や条件の外れの連絡は、輸出者との関係と次の買付に直結します
  4. この構成は品質の等級やスペシャルティかどうかを判定しません … SCA の生豆のグレーディングの標準は策定中とされ、評価の仕組みも変わりつつあります。この構成が出すのは、報告書の数字と自社の表の比較だけです
  5. 食品の輸入の手続きとは分けて扱う … 生豆は食品として輸入の手続きの対象になりえます。この台帳の照合は品質の記録で、輸入の手続きに当たる判断は別の担当が行います

誤りが起きた場合のリスクは、条件を外れたロットを承認することと、条件を満たすロットを止めることの2つです。 前者はロットの取り違えや読めなかった値を埋めると起き、後者は物差しの違う数字を比べると起きます。どちらも「比べられないものを比べない」設計で防ぎます。

10まず何から始めるか

1週目:契約の品質条件を表に直す

買付の契約の品質条件を、等級・欠点の上限・試料の量・水分の範囲・スクリーン・評価の下限と評価の用紙の列を持つ表に直します。すべての契約を一度に直す必要はなく、次の数か月に船積みのあるロットから始めます。

2週目:15通で試す

過去の品質報告書15通を、AWS のコンソールで質問と表を指定して読ませます。欠点の表の列を取り違えていないか、試料の量と用紙の種類が読めるかを最優先で見ます。

3週目:欠点の項目表と判定の決まりを作る

2週目に集めた欠点の名前から項目表の最初の版を作り、品質管理が自社の区分を付けます。 出荷前と入荷後の差の幅も、購買と決めます。あわせて、試料の量と評価の用紙を報告書に書くよう、主な輸出者に依頼します。

4週目:受付フォルダから一覧までをつなぐ

S3 への保存で Lambda を動かし、AWS Textract で読み、物差しつきで一覧に書き出すところまで作ります。この時点では照合をせず、defects と cupping の一覧だけを見ます。

2か月目: 契約の品質条件との照合を足し、verdict を出します。3か月目以降: 入荷後の自社の検査との差を足し、1通33分が何分になったかを実測します。輸出者ごとの出荷前と入荷後の差を、次の買付の相談に使い始めた時点で、この構成は完成です。


11関連ユースケース

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

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

技術仕様確認日:2026-10-15/最終更新:2026-10-23
確認した内容情報源確認日
対応する形式が JPEG・PNG・PDF・TIFF で XFA 形式の PDF は不可なこと。非同期は JPEG と PNG が10MB、PDF と TIFF が500MB・3,000ページまで。PDFはパスワード保護不可。画像は各辺10,000ピクセル以下。文字の検出が英・仏・独・伊・葡・西で、質問は英語の文書のみ、手書きは英語のみ。文字の高さの下限が15ピクセル(150 DPIで8ポイント相当)AWS: Set Quotas in Amazon Textract2026-10-15
質問の答えが QUERY と QUERY_RESULT のブロックで返り、別名・信頼度・位置・答えの文字列を持ち、答えが無ければ空になることAWS: Queries2026-10-15
表がセル・結合セル・列見出し・表の題・脚注に分けて返り、CELL が行と列の位置と COLUMN_HEADER などの種類を持つことAWS: Tables2026-10-15
質問の対象のページを指定しないと既定で ["1"] になり、* で全ページを指定できることAWS: Query(API Reference)2026-10-15
非同期の処理の完了が SNS に通知されること。ClientRequestToken で同じ JobId が返ること。結果は既定で7日間保管され、OutputConfig で自社の S3 に出せることAWS: Calling Amazon Textract Asynchronous Operations2026-10-15
CVA が物理・記述・感情・外的の4つの評価からなり、物理的な評価が色・欠点・水分・サイズを見て、2004年の SCA の生豆のグレーディングの仕組みに基づくこと。単一の点数に頼らないことSCA: Coffee Value Assessment2026-10-15
SCA が CVA の SCA-102・103・104 をカッピングの標準として採用し、2004年のカッピングのプロトコルと用紙を置き換えるとしたことSCA: The SCA Officially Adopts CVA Descriptive and Affective Assessments as New Cupping Standards2026-10-15
生豆のグレーディング・規格・試験方法の標準(SCA-110)が策定中の標準として挙げられていることSCA: Standards2026-10-15

ロットを承認するか、輸出者に条件の外れを伝えるか、品質の等級をどう扱うかは、品質管理と購買で決めてください。 本記事は上記の公開情報で確認できた範囲だけを扱っています。

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

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

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

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