Media > AI活用ユースケース > 品質管理 > 食品原料の輸入商社が海外の原料メーカーから届く英文のハラール認証書を読み取り、認証機関・対象品目・有効期限を原料台帳と照らして、期限切れと対象外の品目を拾う

食品原料の輸入商社が海外の原料メーカーから届く英文のハラール認証書を読み取り、認証機関・対象品目・有効期限を原料台帳と照らして、期限切れと対象外の品目を拾う

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

海外の原料メーカーから届く英文のハラール認証書を読み取り、認証機関・製造所・対象品目・有効期限を原料台帳と照らします。期限切れ、対象品目に入っていない原料、顧客が受け入れない認証機関のものを、顧客に出す前に拾います。

サマリー
生成AI
ChatGPT/Claude/Gemini
AIサービス
AWS Textract/Azure AI/Google Document AI
連携・自動化
Python
対象業界
商社/小売/製造
対象部門
品質管理/購買
対象業務
内容確認・チェック/台帳・マスタ管理
主な課題
属人化している/期限・対応漏れが起きる/確認ミスが多い
AIで行う処理
読み取り(OCR)
主な効果
入力漏れ削減/工数削減/機会損失防止
導入難易度
★★★☆☆
実装レベル
半自動化
費用感
API連携(中)
人間の確認
条件付き
現在工数
32h/月
AI導入後
8h/月
想定削減
75%
年間削減
288h
モデル条件による試算値です。実在企業の実績ではありません。

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

導入前(Before)
  1. 原料メーカーから認証書のPDFがメールで届き、担当者が原料のフォルダに保存する
  2. 原料台帳を開き、その原料の品番・メーカー品名・製造所・納入先を確かめる
  3. 認証書の表面を読み、認証機関・認証番号・認証を受けた会社・発行日・有効期限を確かめる
  4. 別表をめくり、自社が買っている品名が載っているかを探す
  5. 製造所の住所が台帳の製造所と同じかを見る
  6. 納入先の顧客が受け入れる認証機関かを、過去のメールで確かめる
  7. 問題があれば、メーカーに更新した認証書か対象品目を足した別表を頼むメールを書く
  8. 台帳の「ハラール認証書」の列に有効期限を書く(書き忘れることがある)
導入後(After)
  1. 人メーカーから届いた認証書のPDFを受付フォルダに保存する(ファイル名にメーカーコードを入れる)
  2. 自動保存をきっかけに処理が動き、形式・ページ数・パスワードの有無を確かめる
  3. 自動AWS Textract が全ページを読み、キーと値、表、質問への答えと信頼度を返す
  4. 自動生成AIが、読み取り結果から認証機関・認証番号・会社・製造所・対象品目・発行日・有効期限を項目に分ける
  5. 自動プログラムがメーカーコードで原料台帳を引き、対象品目・製造所・期限・認証機関を照らして印を付ける
  6. 自動印の組み合わせから、`ok` / `needs_request` / `needs_human` を規則で決める
  7. 自動`needs_request` のものについて、メーカーへの依頼の英文の下書きを作る
  8. 人担当者が `needs_request` と `needs_human` の認証書だけを開き、印の根拠を確かめる
  9. 人メーカーへの依頼を送るか、顧客へ事情を伝えるかを決める
  10. 【人/自動】 台帳の「ハラール認証書」の列(期限・確認日・確認者)を確定し、期限の近いものの一覧を毎週出す
各工程の詳しい説明を読む
  1. 原料メーカーから認証書のPDFがメールで届き、担当者が原料のフォルダに保存する
  2. 原料台帳を開き、その原料の品番・メーカー品名・製造所・納入先を確かめる
  3. 認証書の表面を読み、認証機関・認証番号・認証を受けた会社・発行日・有効期限を確かめる
  4. 別表をめくり、自社が買っている品名が載っているかを探す
  5. 製造所の住所が台帳の製造所と同じかを見る
  6. 納入先の顧客が受け入れる認証機関かを、過去のメールで確かめる
  7. 問題があれば、メーカーに更新した認証書か対象品目を足した別表を頼むメールを書く
  8. 台帳の「ハラール認証書」の列に有効期限を書く(書き忘れることがある)

(a)別表を読み落とす。 表面の期限を確かめた時点で「確認済み」になりがちで、別表に自社の品番が無いことに気づかないまま顧客に出すことがあります。メーカーの品名と自社の品番の呼び方が違うと、載っていても探せません。

(b)期限切れに顧客からの指摘で気づく。 有効期限を台帳に書く担当者と書かない担当者がいて、期限の近いものを一覧にする仕組みがありません。 顧客の監査の前に「この認証書は期限が切れています」と言われて、慌ててメーカーに頼みます。

(c)認証機関の変化を追えていない。 顧客が指定する一覧は改定され、取り消された機関の認証書が台帳に残っていても、誰も気づきません。

(d)確認が1名に寄っている。 認証書を読み慣れた担当者が1名だけで、その人が休むと確認が止まります。

  1. 【人】 メーカーから届いた認証書のPDFを受付フォルダに保存する(ファイル名にメーカーコードを入れる)
  2. 【自動】 保存をきっかけに処理が動き、形式・ページ数・パスワードの有無を確かめる
  3. 【自動】 AWS Textract が全ページを読み、キーと値、表、質問への答えと信頼度を返す
  4. 【自動】 生成AIが、読み取り結果から認証機関・認証番号・会社・製造所・対象品目・発行日・有効期限を項目に分ける
  5. 【自動】 プログラムがメーカーコードで原料台帳を引き、対象品目・製造所・期限・認証機関を照らして印を付ける
  6. 【自動】 印の組み合わせから、ok / needs_request / needs_human を規則で決める
  7. 【自動】 needs_request のものについて、メーカーへの依頼の英文の下書きを作る
  8. 【人】 担当者が needs_request と needs_human の認証書だけを開き、印の根拠を確かめる
  9. 【人】 メーカーへの依頼を送るか、顧客へ事情を伝えるかを決める
  10. 【人/自動】 台帳の「ハラール認証書」の列(期限・確認日・確認者)を確定し、期限の近いものの一覧を毎週出す

5番目と6番目をプログラムと規則に置くのは、顧客ごとに受け入れる認証機関が違うからです。 AIには認証書に何が書かれているかだけを答えさせ、それが顧客の条件に合うかは台帳と規則で決めます。

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

構成図
ハラール認証書(PDF。原料メーカーからメールで届く)
   ▼【トリガー】受付フォルダ(Amazon S3)への保存
AWS Lambda ── 形式・ページ数・パスワードの確認、メーカーコードの取り出し
   ▼
AWS Textract(StartDocumentAnalysis:FORMS/TABLES/QUERIES)
   │   全文、キーと値、別表の表、質問への答え、信頼度
   ▼
Claude API ── 認証書の記載を項目に分ける
   │   ① 認証機関  ② 認証番号  ③ 認証を受けた会社  ④ 製造所
   │   ⑤ 対象品目の一覧  ⑥ 発行日・有効期限
   ▼
Python ── 原料台帳と認証機関の一覧との照合
   │   品名の対応、製造所、期限までの日数、顧客が受け入れる機関か
   ▼
判定(ok / needs_request / needs_human)
   ▼
【担当者が印の付いた認証書だけを確認】
   ├──▶ メーカーへの依頼(下書きを担当者が直して送る)
   └──▶ 原料台帳の確認の列と、期限の近いものの週次の一覧
役割想定する製品代替候補
OCRAWS Textract(StartDocumentAnalysis/GetDocumentAnalysis)Azure AI Document Intelligence、Google Document AI
生成AIClaude API(認証書の記載を項目に分ける)OpenAI API、Gemini API
差異計算Python(品名の対応、期限、製造所、認証機関の照合)原料台帳の関数
連携AWS Lambda(保存と完了の通知を起点に処理を動かす)Amazon EventBridge
保管Amazon S3(認証書、読み取り結果、照合の結果)社内のファイルサーバー

原料台帳は、新しく足すものではありません。 最初の準備は、「メーカー品名」の列を認証書に書かれる呼び方で埋めることと、顧客ごとに受け入れる認証機関の表を作ることです。どちらも無ければ照合の規則が書けません。

認証機関の表の土台にするのが、JAKIMが公表している一覧です。 2026年8月21日から有効とされる一覧は、マレーシアの取引表示法の命令に基づいて官報で告示されたもので、国・地域ごとに機関の名前と住所が並んでいます。付録には、認める期間は3年で、期間が終わると見直しの監査を行うこと、マレーシアで売られる輸入食品は、JAKIMが認めた海外の認証機関の認証を受けていなければハラールと表示できないことが書かれています。一覧は改定されるので、表には一覧の有効日を一緒に持たせます。

OCRに AWS Textract を選ぶのは、認証書の英語の部分を読めば足りるからです。 公式の上限の表では、対応言語は英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語とされ、アラビア語や中国語は読めません。 英語とアラビア語を並べた認証書なら英語の側だけを読み、英語の記載が無い認証書は、担当者が目で見る一覧に入れます。 質問の検出も英語の文書だけが対象です。

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

Step1

処理の起点を決める

受付フォルダ(Amazon S3)に認証書のPDFが保存されたことを起点にします。 保存の通知で AWS Lambda が動き、照合までを済ませます。

保存するのは担当者で、ファイル名の先頭にメーカーコードを入れる決まりにします。 代理店から転送されてくることが多く、差出人から自動で取ると別のメーカーの原料と照らすおそれがあるためです。

もう一つの起点は、毎週月曜の定時実行です。 認証書は読まず、台帳の期限と認証機関の表だけを見直して、期限まで60日を切ったものと、一覧の改定で外れた機関のものを一覧にします。

Step2

入力データを集める

データ中身取得元
ハラール認証書PDF。表面(機関・番号・会社・期限)と別表(対象品目の一覧)受付フォルダ
読み取り結果全文、キーと値、表、質問への答え、信頼度AWS Textract
原料の情報品番、メーカー品名(認証書に書かれる呼び方)、メーカー、製造所の住所、納入先原料台帳
顧客の指定顧客ごとに受け入れる認証機関(「JAKIMの一覧」または機関名の列挙)自社で用意する表
認証機関の一覧JAKIMの一覧に載った機関の名前・国・住所と、一覧の有効日公表された一覧から自社で起こした表
機関名の呼び方の一覧略称、旧名、現地語の名前など、同じ機関の別の書き方自社で用意する一覧

質を決めるのは、メーカー品名と機関名の呼び方の2つです。 自社の品番が「乳化剤E-12」でも、別表には「Emulsifier Type 12 (Powder)」と書かれます。この対応が無ければ、載っている原料を「対象外」と判定します。

指定を聞いていない顧客は「未確認」とし、照合の規則で needs_human に回します。 空欄を「どの機関でもよい」と読まないためです。

Step3

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

読み取りは StartDocumentAnalysis に S3 の場所と FeatureTypes を渡して始めます。完了は NotificationChannel に指定した Amazon SNS のトピックに通知され、状態が SUCCEEDED なら GetDocumentAnalysis で結果を取ります。

指定するもの値理由
FeatureTypesFORMS、TABLES、QUERIES表面のキーと値、別表の品目の表、文章の中の期限
QueriesConfig質問の文と Alias、Pages に *別表のページにも質問を当てる
ClientRequestTokenファイルのハッシュ同じ認証書で二重に読み取りを始めない
JobTagメーカーコード完了の通知からメーカーを引く
OutputConfig自社の S3 の場所読み取り結果を自社の側に残す
Alias質問の文
CERT_BODYWho issued this halal certificate?
CERT_NOWhat is the certificate number?
HOLDERWhich company is certified?
SITEWhat is the address of the certified plant?
ISSUE_DATEWhat is the date of issue?
EXPIRY_DATEWhat is the expiry date?

質問は対象ページを指定しないと既定で1ページ目だけに当たります。 有効期限が最後のページの署名の近くに書かれている認証書もあるため、Pages に * を入れて全ページに当てます。質問は非同期の処理で1ページあたり30個までです。

対象品目の一覧は、質問ではなく表として取り、セルの単位で生成AIに渡します。 箇条書きの別表もあるので、全文も一緒に渡します。

結果は1回最大1,000ブロックで区切られ、NextToken が返る限り呼び直します。JobId は7日間しか有効でないため、取った結果はその場で S3 に保存します。 状態が PARTIAL_SUCCESS のときは Warnings のページ番号を記録し、そのページを読めなかったものとして扱います。

Step4

AIへ渡す前に整形する

  1. 形式の確認 … JPEG、PNG、PDF、TIFF であることを確かめます。XFA で作られたPDFは扱えないとされているので、印刷してPDFにし直します
  2. パスワードの確認 … PDFはパスワードで保護されていてはいけないとされています。保護されたものは、メーカーに解除したものを頼みます
  3. ページ数の確認 … 非同期の処理で、PDFとTIFFは500MB・3,000ページまでです。規格書や分析証明書とまとめて1つのPDFで届いたときは、認証書のページだけを切り出します
  4. 言語の確認 … 英語の記載が無い認証書は、読み取りに回さず担当者の一覧に入れます
  5. 文字の大きさの確認 … 検出できる文字の高さの下限は15ピクセルで、150DPIで8ポイント相当です。別表の品目は小さな字で詰めて書かれることが多いため、スキャンの写しは解像度を確かめます
  6. メーカーコードの確認 … ファイル名のメーカーコードで台帳が引けるかを確かめ、引けなければ処理を止めて担当者に戻します
Step5

AIに処理させる

させるのは、読み取り結果から6つの項目を取り出し、それぞれに根拠の文字列と状態を付けることだけです。 原料台帳と認証機関の表との照合は Python が行い、AIには台帳を渡しません。

取り出すもの取り出し方判断できないときの扱い
認証機関書かれたとおりに名前と国を写すロゴだけで名前が無ければ missing
認証番号書かれたとおりに写す読めなければ unreadable
認証を受けた会社書かれたとおりに写す会社と製造所が混ざっていれば ambiguous
製造所住所を写す。複数あれば分けて並べる「all plants」等は not_specific
対象品目品名・ブランド・品番を1行ずつ写す「as per annex」で別表が無ければ reference_only
発行日・有効期限日付を書かれたとおりに写し、年月日に直す日付の並びが決められなければ ambiguous

対象品目の欄が、この構成でいちばん大事です。 品目を1行ずつ写させ、自社のどの品番に当たるかは選ばせません。 当てるのは Python が台帳のメーカー品名と照らして行います。日付は、「05/04/2027」が4月5日か5月4日かを決められなければ ambiguous にさせます。

させないこと理由
原料がハラールに当たるかの判断宗教上の判断は認証機関の仕事
認証機関が信頼できるかの評価顧客の指定と公表された一覧で決める
品名が似ている品目の読み替え「Type 12」と「Type 12 Powder」を同じとすると対象外を見落とす
期限の延長の推測「更新中」と書かれていても、書面の期限で扱う
顧客に出してよいかの結論規則で決め、人が確かめる

3行目がいちばん起きやすい失敗です。 品名の照合は Python で完全一致と呼び方の一覧だけに限ります。

Step6

指示内容を固定する

あなたは食品原料の輸入商社の品質保証課で、海外の原料メーカーから届いた
英文のハラール認証書を読み、記載を項目に分ける担当です。
AWS Textract の読み取り結果だけを見て答えてください。推測で埋めないでください。

【取り出す6項目】
1. 認証機関(名前と国)
2. 認証番号
3. 認証を受けた会社
4. 製造所(住所。複数あればすべて)
5. 対象品目(品名・ブランド・品番を1行ずつ)
6. 発行日と有効期限

【status の選び方】
- present ......... 値が読み取れている
- missing ......... 該当する記載が無い。項目名だけがあって値が空の場合も missing
- unreadable ...... 文字は検出されているが信頼度が低く、値として確定できない
- ambiguous ....... 値の候補が複数あり、1つに決められない
- not_specific .... 製造所が「all plants」など特定されていない
- reference_only .. 「as per annex」など別の書類を参照するとだけ書かれ、その書類が無い
迷ったときに present を選ばないでください。

【厳守事項】
- 対象品目は、書かれた品名を1文字も変えずに1行ずつ写してください。
  似た品名をまとめたり、自社の品番に読み替えたりしないでください。
- 日付は書かれた文字列をそのまま raw に写し、年月日に直した値を date に入れてください。
  日と月の並びが決められない場合は ambiguous とし、どちらかに決めないでください。
- 「renewal in progress」などと書かれていても、書面の有効期限をそのまま写してください。
  期限が延びたものとして扱わないでください。
- 認証機関の名前は、ロゴの図柄ではなく文字で書かれた名前を写してください。
- 読み取りの警告が出ているページがあれば、そのページにありうる項目は
  missing ではなく unreadable としてください。
- evidence には根拠の文字列を原文のまま、ページ番号と一緒に写してください。
- 原料がハラールに当たるか、顧客に出してよいかは書かないでください。
- ハラール認証書でない書類(規格書、分析証明書など)と判断した場合は、
  項目を取り出さず document_type に種類を書いてください。

【読み取り結果】{textract_result}
【読み取りの警告があったページ】{warning_pages}

「1文字も変えずに写す」を強く書くのは、AIが品名を整えたがるからです。 「Gelatin 240 Bloom (Bovine)」を「Gelatin」とまとめると、牛由来と魚由来のゼラチンの区別が消えます。日付を raw と date の2つで返させるのは、期限の判定を誤ったときに原文から追えるようにするためです。

Step7

出力形式を固定する

Claude API の構造化出力(output_config.format に json_schema)で、次の形のJSONを受け取ります。 数値の minimum・maximum や文字列の長さの制約は使えないとされているため、日付の範囲や品目の数は Python の側で確かめます。

{
  "maker_code": "MK-0412",
  "document_type": "halal_certificate",
  "items": [
    { "item": "cert_body", "status": "present",
      "value": "Halal Certification Body X (Brazil)",
      "page": 1, "confidence": 97.2, "evidence": "Issued by: Halal Certification Body X" },
    { "item": "expiry", "status": "present",
      "raw": "05/04/2027", "date": "2027-04-05",
      "page": 1, "confidence": 95.8, "evidence": "Valid until: 05/04/2027" }
  ],
  "products": [
    { "name": "Gelatin 240 Bloom (Bovine)", "brand": "", "code": "G240B",
      "page": 2, "confidence": 93.1 }
  ]
}

items には5項目(認証機関・認証番号・会社・製造所・期限)を並べ、item は cert_body / cert_no / holder / site / issue_and_expiry です。対象品目は products に1行ずつ入れます。

照合は Python が台帳と認証機関の表に突き合わせて行い、項目ごとに印を付けます。

印付く条件
expired有効期限が今日より前
expiring_soon有効期限まで60日を切っている
product_not_listed台帳でこのメーカーに紐づく品番のメーカー品名が、products に無い
site_mismatch製造所の住所が台帳の製造所と合わない
body_not_accepted認証機関が、納入先の顧客が受け入れる機関の表に無い
body_list_changed前回の確認のあと、認証機関の一覧が改定されている
holder_mismatch認証を受けた会社が台帳のメーカーと違う

判定は、印と状態の組み合わせで規則として決めます。

verdict条件
ok5項目がすべて present で、印が1つも無い
needs_requestexpired・expiring_soon・product_not_listed・site_mismatch のどれかがあり、該当の項目が present
needs_humanbody_not_accepted・body_list_changed・holder_mismatch がある、または present 以外の状態が1つでもある

認証機関の印を needs_human に寄せているのは、メーカーに頼んでも直らないからです。 必要なのは顧客との相談か、別のメーカーの原料の検討です。

Step8

システムへ連携する

つなぎ先方式内容
受付フォルダ(Amazon S3)保存の通知で AWS Lambda を起動認証書の保存を検知する
AWS TextractAPI呼び出し(非同期)全文・キーと値・表・質問への答え・信頼度を返す
Claude APIAPI呼び出し6項目の取り出しと、メーカーへの依頼の英文の下書き
原料台帳読み取り(照合)と、確認の列への書き込み品名・製造所を引き、期限と確認日を書く
認証機関の表読み取りだけ顧客ごとに受け入れる機関と、一覧の有効日を引く
メール担当者が送るメーカーへの依頼、顧客への連絡

原料台帳への書き込みは、「ハラール認証書」の列(期限・認証番号・確認日・確認者)だけに限ります。 照合の元になる列を、照合する側が書き換えられないようにします。

Step9

人が確認する

担当者が開くのは needs_request と needs_human の認証書だけです。 ok のものは一覧でメーカーと品目の数を流し見て、確認の列を確定します。

  1. needs_human を先に見る … 多くは別表が読めていないか、認証機関の表に無い書き方です
  2. product_not_listed の根拠を確かめる … 別表の原文を開き、自社の品名が本当に無いのか、呼び方が違うだけなのかを見ます
  3. body_not_accepted の対応を決める … 顧客に相談するか、別のメーカーの原料を探すかを、課長と購買の担当で決めます
  4. メーカーへの依頼を送る … 下書きを直して送ります。送信は人が行います
  5. 印を覆したら記録する … どの印を、なぜ外したかを残し、呼び方の一覧を直します

目標は、120件をならして1件4分です。 開くのは2割前後という想定です。

Step10

例外に対処する

起きること対応
パスワード付きのPDF読めないので、メーカーに解除したものを頼む
英語の記載が無い認証書質問が使えないため、担当者の一覧に入れて目で見る
状態が PARTIAL_SUCCESS警告のページを unreadable として扱い、needs_human へ
別表が「as per annex」で添付されていないreference_only。メーカーに別表を頼む
1通に複数の製造所製造所ごとに台帳と照らし、どれにも当たらなければ site_mismatch
ファイル名のメーカーコードで台帳が引けない処理を止めて担当者に戻す。推測で近いメーカーに当てない
認証書でなく規格書が届くdocument_type を見て、照合せずに担当者に戻す
認証機関の一覧が改定された週次の定時実行で、改定の前に確認した認証書を body_list_changed で拾い直す

最後の行は仕組みの側に持たせます。 JAKIMは2025年3月に、フランス、クロアチア、中国の海外認証機関の承認の取り消しを告知しており、届いた日に正しくても後の改定で出せなくなります。

Step11

記録を残す

  • 元の認証書ファイル(版を含む)と、受け取った日時・送り主
  • AWS Textract が返したJSONの全文と、Warnings のページ
  • 生成AIが返した6項目と品目のJSON、Python が付けた印、verdict
  • そのとき参照した認証機関の一覧の有効日と、顧客の指定
  • 人が印を覆した記録 … どの印を、なぜ外したか
  • メーカーへの依頼の日時と、届いた新しい認証書との対応

4つ目を残すのは、顧客の監査で「その時点で正しかったか」を答えるためです。

04実装レベルの3段階

最小構成:認証書を手でAIの画面に渡し、項目と品目を表にさせる / 1通ごとの項目の取り出し
半自動化:上記+受付フォルダを起点に AWS Textract で読み、原料台帳と認証機関の表と照らして印と判定を付ける / 読み取り、取り出し、照合、判定、期限の週次の一覧
本格構成:上記+メーカーへの依頼の下書きと、顧客の求めに応じた提出の一式(認証書と確認の記録)の作成 / 依頼の下書きと、顧客への提出の準備

本記事の想定は半自動化です。 読み取りと照合と判定が自動になり、担当者は印の付いた認証書を確かめます。1件16分が4分になるのはこの段階です。 本格構成で足すのは、顧客への提出の側です。 顧客から「この原料の認証書を」と頼まれたときに、台帳の確認の列が ok の最新の認証書と確認の記録を一式で出せるようにします。提出そのものは人が行います。

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

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

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

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

AI活用について相談する

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

向いている
  1. 海外の原料メーカーからゼラチン・乳化剤・香料・調味料・でん粉などを輸入し、ハラール対応の食品を作る国内のメーカーに納めている商社。顧客から原料ごとにハラール認証書の提出を求められ、海外のメーカーから英文の認証書がPDFで届き、認証機関・対象品目・有効期限を担当者が目で見ている場合。マレーシア向けなど、顧客が「受け入れる認証機関」を指定している取引がある場合。原料台帳(品番・メーカー品名・製造所・納入先)を表で持っている場合。
向いていない
  1. 扱う原料が数品目で、認証書が年に数通しか届かない場合。認証書が英語以外(アラビア語・インドネシア語・中国語など)だけで書かれていることが多い場合(この構成のOCRは英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語しか読めず、質問(Queries)は英語の文書だけが対象です)。なお、原料がハラールに当たるかの宗教上の判断、認証機関の信頼性の評価、顧客への提出可否の最終判断は、この構成では代替できません。

07最小構成で試す方法

  1. 共有フォルダから認証書を20通選ぶ(別表に数十品目並ぶもの、英語とアラビア語を並べたもの、期限が近いものを必ず入れる)
  2. 手元の生成AIの画面に1通ずつ渡し、「このハラール認証書の、認証機関、認証番号、認証を受けた会社、製造所の住所、対象品目(1行ずつ、書かれたとおり)、発行日、有効期限を表にしてください。書かれていない項目は空欄にし、推測で埋めないでください。品名をまとめたり言い換えたりしないでください」と指示する
  3. 出てきた表の対象品目を原料台帳の品名と見比べ、当時の確認で見落としていた対象外の品目が無いかを数える
  4. 有効期限について、AIの答えと原文の日付の並びを1通ずつ見比べる

20通は必ずやってください。 仕組みを組む前に、品名をまとめないか、日付の並びを取り違えないかを確かめます。

出てきた内容判断
品目と期限を原文どおりに取り出したOCRのAPIと照合の処理に進む
似た品名をまとめた、品名を短くした指示で禁じる。直るまで先に進まない
別表の字が小さく読めない認証書が多い受け取り方が先。 メーカーに元のPDFを頼む

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

問題対策
載っている品目が対象外と出るメーカー品名の対応が台帳に無い。 呼び方の一覧を足す
似た品名をまとめて写す1文字も変えずに写させ、照合は完全一致と一覧だけ
日付の日と月を取り違えるraw と date を分け、並びが決められなければ ambiguous
質問が最後のページに当たらないPages を指定しないと1ページ目だけ。 * を入れる
別表が読めないのに対象外になるWarnings のページを unreadable として渡す
機関名が一覧と一致しない略称・旧名の呼び方の一覧を作る
一覧の改定に気づかない一覧の有効日を表に持たせ、週次で照らし直す
顧客の指定が空欄のまま通る空欄は「未確認」として needs_human に回す
英語の記載が無い認証書が混ざる対応言語は6つ。担当者の一覧へ
依頼が自動で飛ぶ下書きまでにする。 送信は人が行う

上の3行が、この構成の失敗のほとんどです。 どれも品名と日付を「整えて」しまうことから起き、原文のまま写させる指示と、照合をプログラムに置く設計で防げます。

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

この構成で扱うデータ: 原料メーカーと顧客の名称、原料の品名と品番、製造所の住所、認証番号です。個人の情報はほとんど含まれませんが、どの顧客にどのメーカーの原料を納めているかという取引の構造がまとまっています。

  1. 外部へ渡す範囲を、認証書の読み取り結果までに限る … 原料台帳と顧客の指定の表はAIに渡さず、照合は Python の側で行います。 納入先の一覧を外へ出さないためです
  2. 読み取り結果を自社の側に置く … OutputConfig で自社の S3 に出し、KMSKeyId で自社の鍵による暗号化を指定できます。保管の期間を社内の文書管理の決まりに合わせます
  3. 宗教上の判断を代替しない … この構成が出すのは、認証書に何が書かれているかと、台帳と顧客の指定との差です。原料がハラールに当たるかは認証機関の判断で、顧客に出すかは課長が決めます
  4. メーカーと顧客への連絡を自動で送らない … 出すのは下書きまでです。誤った指摘は、メーカーとの関係にも顧客の信頼にもひびきます
  5. 認証書の写しを顧客以外に出さない … 認証書にはメーカーの製造所と製品の一覧が載っています。メーカーとの約束で、提出先を顧客に限っている場合があります

誤りが起きた場合のリスクは、対象外の原料を認証ありとして顧客に出すことと、対象の原料を対象外としてメーカーに無用な依頼を出すことの2つです。 前者は品名をまとめて写すと起き、後者は呼び方の一覧が足りないと起きます。どちらも品名の照合から出ているので、そこだけは設計で守ります。

10まず何から始めるか

1週目:原料台帳の列を整える

「メーカー品名」の列を、手元の認証書の別表の書き方で埋めます。件数の多い上位20社のメーカーの原料から始めます。 あわせて、「ハラール認証書」の列を、期限・認証番号・確認日・確認者に分けます。

2週目:20通で試す

手元の認証書から20通を選び、生成AIに渡して項目と品目を表にさせます。品名をまとめていないか、日付の並びを取り違えていないかを最優先で見ます。

3週目:顧客の指定と認証機関の表を作る

営業の担当と一緒に、顧客ごとに受け入れる認証機関を表にします。JAKIMの一覧に載った機関は、一覧の有効日と一緒に起こします。 指定を聞いていない顧客は「未確認」として残します。

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

S3、Lambda、Textract、Claude API、Python の照合までを作ります。この時点では verdict を出さず、6項目と印の一覧だけを担当者が見ます。

2か月目: verdict と週次の期限の一覧を出し、needs_request と needs_human の件数を毎週数えます。3か月目以降: メーカーへの依頼の下書きを足し、1件16分が何分になったかを実測します。期限切れに顧客の指摘より先に気づけるようになった時点で、この構成は完成です。


11関連ユースケース

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

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

技術仕様確認日:2026-10-26/最終更新:2026-10-26
確認した内容情報源確認日
対応形式が JPEG、PNG、PDF、TIFF で XFA のPDFは非対応なこと。非同期でPDFとTIFFが500MB・3,000ページまでなこと。PDFはパスワードで保護されていてはいけないこと。質問は非同期で1ページあたり30個までなこと。対応言語が英・仏・独・伊・葡・西の6つで、質問の検出は英語の文書だけなこと。検出できる文字の高さの下限が15ピクセル(150DPIで8ポイント相当)なことAWS: Set Quotas in Amazon Textract2026-10-26
質問の Pages を指定しないと既定で ["1"] になること。* で全ページを指せること。質問の文と Alias が200文字までなことAWS: Query2026-10-26
FeatureTypes に TABLES/FORMS/QUERIES を指定できること。完了が SNS に通知されること。ClientRequestToken で同じジョブの二重起動を防げること。JobTag が完了の通知に含まれること。OutputConfig と KMSKeyId で出力先と暗号化を指定できること。JobId が7日間有効なことAWS: StartDocumentAnalysis2026-10-26
結果が1回最大1,000ブロックで NextToken で続きを取ること。状態に PARTIAL_SUCCESS があり Warnings にページが返ることAWS: GetDocumentAnalysis2026-10-26
output_config.format に json_schema を指定するとスキーマに沿った JSON で返ること。数値の minimum・maximum と文字列の長さの制約が使えないことClaude: Structured outputs2026-10-26
JAKIMが認めた海外のハラール認証機関の一覧が2026年8月21日から有効とされ、取引表示法(ハラールの認証と表示)命令2011に基づいて告示されていること。認める期間が3年で、期間の後に見直しの監査を行うこと。マレーシアで売られる輸入食品は、JAKIMが認めた海外の認証機関の認証を受けていなければハラールと表示できず、輸入者等が認証機関の名前を表示することJAKIM: The Recognized Foreign Halal Certification Bodies & Authorities2026-10-26
JAKIMのサイトに、フランス、クロアチア、中国の海外ハラール認証機関の承認の取り消しの告知(2025年3月13日)が載っていることJAKIM: Halal Malaysia2026-10-26

原料がハラールに当たるか、顧客に出してよいかは、認証機関と顧客の求めに従って判断してください。 本記事は公式のページで確認できた範囲だけを扱っています。

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

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

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

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