Media > AI活用ユースケース > 物流 > 英文の航空貨物運送状(AWB)とインボイスを読み取り、輸入台帳に転記して、個数・重量の食い違いを通関の前に拾う

英文の航空貨物運送状(AWB)とインボイスを読み取り、輸入台帳に転記して、個数・重量の食い違いを通関の前に拾う

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

航空便で届く英文のAWBとインボイスを読み取り、AWB番号・個数・重量・品名を輸入台帳に転記します。2つの書類の個数と重量を比べ、通関業者に渡す前に食い違いを拾います。

サマリー
生成AI
ChatGPT/Claude/Gemini
AIサービス
AWS Textract/Azure AI/Google Document AI
連携・自動化
Python
対象業界
商社/小売/物流/製造
対象部門
物流/購買
対象業務
データ入力・転記/内容確認・チェック
主な課題
人手が足りない/入力作業が多い/確認ミスが多い
AIで行う処理
抽出
主な効果
入力漏れ削減/対応スピード向上/工数削減
導入難易度
★★★☆☆
実装レベル
半自動化
費用感
API連携(中)
人間の確認
条件付き
現在工数
60h/月
AI導入後
20h/月
想定削減
67%
年間削減
480h
モデル条件による試算値です。実在企業の実績ではありません。

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

導入前(Before)
  1. 共有受信箱に届いたAWBとインボイスのPDFを、担当者が開く
  2. AWBからハウスAWB番号、マスターAWB番号、仕出人、荷受人、出発空港、到着空港、便名、個数、総重量、運賃計算重量、品名を読む
  3. インボイスからインボイス番号、発注番号、品名、数量、梱包の数、重量を読む
  4. 輸入台帳で荷主と発注番号の行を探し、転記する
  5. AWBの個数・重量とインボイスの梱包の数・重量を見比べる
  6. 食い違いがあれば、フォワーダーと荷主に確かめてから、通関業者に書類を渡す
導入後(After)
  1. 自動共有受信箱に届いたAWBとインボイスのPDFが、受付フォルダ(Amazon S3)に保存される
  2. 自動保存をきっかけに処理が動き、形式・ページ数・パスワードの有無を確かめ、AWBかインボイスかを振り分ける
  3. 自動OCRが、AWBは全文・キーと値・表・質問への答えを、インボイスは請求書の標準項目と明細を、それぞれ信頼度付きで返す
  4. 自動生成AIが、AWBの番号・個数・重量・品名と、インボイスの番号・数量・梱包の数・重量を、原文と単位を残して取り出す
  5. 自動プログラムが、ハウスAWB番号とインボイス番号で書類を組にし、輸入台帳の行に書く
  6. 自動プログラムが、比べてよい値どうしだけを比べ、食い違いに印を付ける
  7. 人担当者が、印の付いた件を確かめ、フォワーダー・荷主・仕出人に問い合わせる
  8. 人担当者が、印の無い件と解決した件を通関業者に渡す
各工程の詳しい説明を読む
  1. 共有受信箱に届いたAWBとインボイスのPDFを、担当者が開く
  2. AWBからハウスAWB番号、マスターAWB番号、仕出人、荷受人、出発空港、到着空港、便名、個数、総重量、運賃計算重量、品名を読む
  3. インボイスからインボイス番号、発注番号、品名、数量、梱包の数、重量を読む
  4. 輸入台帳で荷主と発注番号の行を探し、転記する
  5. AWBの個数・重量とインボイスの梱包の数・重量を見比べる
  6. 食い違いがあれば、フォワーダーと荷主に確かめてから、通関業者に書類を渡す

(a)食い違いに通関の段で気づく。 5番目の見比べは、到着が重なる日ほど省かれます。通関業者が申告の準備で個数や重量の違いに気づき、問い合わせが戻ってきたときには、貨物はもう着いています。 仕出人の訂正を待つあいだ、急ぎの部品が倉庫に留まります。

(b)マスターとハウスを取り違える。 混載の貨物では、マスターAWBの個数と重量は混載全体の値です。マスターの値を台帳に写すと、自社の貨物が数倍の重量で記録されます。 書式が似ているため、急いでいると取り違えます。

(c)単位の違う値を比べてしまう。 キログラムとポンド、総重量と正味重量を確かめずに比べると、正しい書類を食い違いとして問い合わせてしまいます。

  1. 【自動】 共有受信箱に届いたAWBとインボイスのPDFが、受付フォルダ(Amazon S3)に保存される
  2. 【自動】 保存をきっかけに処理が動き、形式・ページ数・パスワードの有無を確かめ、AWBかインボイスかを振り分ける
  3. 【自動】 OCRが、AWBは全文・キーと値・表・質問への答えを、インボイスは請求書の標準項目と明細を、それぞれ信頼度付きで返す
  4. 【自動】 生成AIが、AWBの番号・個数・重量・品名と、インボイスの番号・数量・梱包の数・重量を、原文と単位を残して取り出す
  5. 【自動】 プログラムが、ハウスAWB番号とインボイス番号で書類を組にし、輸入台帳の行に書く
  6. 【自動】 プログラムが、比べてよい値どうしだけを比べ、食い違いに印を付ける
  7. 【人】 担当者が、印の付いた件を確かめ、フォワーダー・荷主・仕出人に問い合わせる
  8. 【人】 担当者が、印の無い件と解決した件を通関業者に渡す

7番目が、この設計の分かれ目です。 担当者は400件を開かず、食い違いと比べられなかった印の付いたものだけを見ます。

6番目をAIにさせないのも意図してのことです。 単位の換算も許容差の判定も規則で決まる処理で、AIには値を読み取り、その値が何を表すかを記録するところまでをさせます。

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

構成図
英文のAWB・インボイス(PDF。フォワーダーからのメール添付)
   ▼【トリガー】受付フォルダ(Amazon S3)への保存
AWS Lambda ── 形式・ページ数・パスワードの確認、書類の振り分け
   ├─▶ AWB:AWS Textract(StartDocumentAnalysis:FORMS/TABLES/QUERIES)
   └─▶ インボイス:AWS Textract(StartExpenseAnalysis)
   ▼
Claude API ── 値を原文・単位・種類つきで取り出す
   │   ① AWB番号(マスター/ハウス)  ② 便名と空港  ③ 個数
   │   ④ 総重量と運賃計算重量         ⑤ 品名       ⑥ インボイスの数量・梱包の数・重量
   ▼
Python ── 書類を組にし、台帳に書き、比べてよい値どうしを比べる
   ▼
台帳(ok / pieces_mismatch / weight_mismatch / not_comparable / needs_human)
   ▼
【担当者が印の付いた件を確認】
   └──▶ フォワーダー・荷主・仕出人に確かめ、通関業者に渡す
役割想定する製品代替候補
OCRAWS Textract(StartDocumentAnalysis/StartExpenseAnalysis)Azure AI Document Intelligence、Google Document AI
生成AIClaude API(AWBとインボイスの値の取り出し)OpenAI API、Gemini API
差異計算Python(書類の組み合わせ、単位の換算、個数・重量の照合)輸入管理システムの照合の機能
連携AWS Lambda(保存と完了の通知を起点に処理を動かす)Amazon EventBridge
保管Amazon S3(書類、読み取り結果、照合の結果)社内のファイルサーバー

輸入台帳と発注番号の一覧は、新しく足すものではありません。 最初の準備は、荷主ごとの照合の規則を、プログラムが読める表にすることです。重量の許容差、梱包の数をどの書類から取るか、分割して送られる貨物の扱いを1行ずつ持たせます。

OCRに AWS Textract を選ぶのは、AWBとインボイスが英文だからです。 公式の上限の表で、対応言語は英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語とされ、日本語や中国語は読めず、縦書きにも対応しません。 中国の仕出人が中国語を併記したインボイスは、英語の部分が読めても品名の照合には使わず、担当者が目で見る一覧に入れます。

この題材で効くのは、書類ごとに読み方を変えることです。 AWBは決まった欄に番号と値が並ぶ書類なので、キーと値(FORMS)と質問(QUERIES)で読みます。インボイスは請求書・領収書の分析(StartExpenseAnalysis)で読みます。請求書の分析は、請求書番号を INVOICE_RECEIPT_ID、品名を ITEM、数量を QUANTITY のように、書式が違っても同じ名前の項目にそろえて返します。

照合が要る理由は、税関の手続きにあります。 税関のカスタムスアンサーは、輸入申告の際に輸入(納税)申告書のほかに、仕入書(インボイス)、包装明細書、船荷証券又は海上運送状(航空貨物については航空貨物運送状)などの提出が必要としています。書類どうしが食い違っていると、通関業者の申告の準備がそこで止まります。

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

Step1

処理の起点を決める

起点は、受付フォルダ(Amazon S3)にPDFが保存されたことです。 共有受信箱のルールで、登録したフォワーダーと航空会社のアドレスから届いたメールの添付をS3へ転送します。保存の通知で AWS Lambda が動き、読み取りから台帳への記録までを済ませます。

AWBとインボイスは別々のメールで、別々の時刻に届くことがあります。 先に届いた書類だけで台帳の行を作り、相手の書類が来るまで照合を「待ち」にします。 相手が届いた時点で照合をやり直します。

毎朝8時にも1回動かします。 到着便が翌日までなのに書類の片方が届いていない件と、needs_human のまま残っている件を一覧にして、担当者に送ります。

Step2

入力データを集める

データ中身取得元
AWBPDF。マスターAWB番号、ハウスAWB番号、仕出人、荷受人、出発空港、到着空港、便名、個数、総重量と単位、運賃計算重量、品名(Nature and Quantity of Goods)受付フォルダ(Amazon S3)
インボイスPDF。インボイス番号、日付、仕出人、買い手、発注番号、品名・数量・単価の明細、梱包の数、総重量・正味重量(書かれていれば)受付フォルダ(Amazon S3)
読み取り結果全文、キーと値、表、質問への答え、請求書の標準項目と明細、それぞれの信頼度AWS Textract
輸入台帳ハウスAWB番号、マスターAWB番号、荷主、仕出人、インボイス番号、発注番号、通関の状態航空輸入課のスプレッドシート
照合の規則の表荷主ごとの重量の許容差、梱包の数を取る書類、分割の貨物の扱い荷主と決めた条件を表にしたもの

質を決めるのは、照合の規則の表です。 許容差を決めずに比べると、包装材の重さの違いで毎回印が付きます。

AWBには発注番号が書かれていないことが多いので、インボイスの発注番号で台帳の行を決め、AWBはハウスAWB番号で結びます。

Step3

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

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

指定するもの値理由
FeatureTypesFORMS、TABLES、QUERIES欄のキーと値、個数と重量の表、名前で受け取りたい項目
QueriesConfig質問の文と Alias の組番号や重量を項目名で受け取る
ClientRequestTokenファイルのハッシュ同じ書類で二重に読み取りを始めない
JobTag書類の種類とフォワーダーの識別子完了の通知から書類の種類を引く
Alias質問の文
MAWB_NOWhat is the master air waybill number?
HAWB_NOWhat is the house air waybill number?
PIECESWhat is the total number of pieces?
GROSS_WEIGHTWhat is the total gross weight and its unit?
CHARGEABLE_WEIGHTWhat is the chargeable weight?
FLIGHTWhat is the flight number and date?
GOODSWhat is the nature and quantity of goods?

質問は英語の文書でしか使えず、1ページあたり非同期で30個までです。 答えが見つからなければ空のまま返るので、空のときは全文から Pieces、Gross Weight、Chargeable を含む行を探し、それでも無ければ missing にします。

インボイスは StartExpenseAnalysis で読みます。 請求書・領収書から、仕入先や品目、合計などを取り出す非同期の処理で、結果は GetExpenseAnalysis で取ります。入力はJPEG、PNG、PDFです。

取るものどこから何に使うか
インボイス番号、日付、発注番号INVOICE_RECEIPT_ID、INVOICE_RECEIPT_DATE、PO_NUMBER台帳の行を決める
品名と数量明細の ITEM、QUANTITY、UNIT_PRICE、PRICE品名の照合と台帳への記録
梱包の数、重量標準項目に当たらない OTHER の項目と、その LabelDetectionAWBとの照合

梱包の数と重量は、請求書の標準項目にありません。 標準に当たらない項目は OTHER として返り、書類に書かれていた項目名が LabelDetection に入ります。Total Cartons、Gross Weight、Net Weight といった項目名から、どの値が何かを生成AIに決めさせます。

結果は1回最大1,000ブロックで区切られ、NextToken が返る限り呼び直します。輸入台帳と照合の規則の表は Python が読み、生成AIには渡しません。

Step4

AIへ渡す前に整形する

  1. 形式の確認 … JPEG、PNG、PDF、TIFF であることを確かめます。インボイスを請求書の分析に回すのはJPEG、PNG、PDFだけで、TIFFはPDFに変換します
  2. パスワードの確認 … PDFはパスワードで保護されていてはいけないとされています。保護されたものは送り元に解除したものを頼みます
  3. サイズとページ数の確認 … 非同期の処理で、PDFとTIFFは500MB・3,000ページまでです
  4. 書類の振り分け … ファイル名、メールの件名、1ページ目の見出しの語(Air Waybill、Commercial Invoice、Packing List)で、AWB・インボイス・その他に分けます
  5. 言語の確認 … 6言語に入らない書類は読み取りに回さず、担当者が目で見る一覧に入れます
  6. 1つのPDFに複数の書類が入っているものの分割 … AWBとインボイスが1つのPDFにまとまって届くことがあります。ページごとの見出しで分け、それぞれの読み方に回します

6番目を省くと、AWBの運賃の欄が請求書の合計として返ります。

Step5

AIに処理させる

させるのは、AWBとインボイスから値を読み取り、その値が「何の数で、どの単位か」を書き出すことです。 照合と許容差の判定はさせません。

見るもの取り出し方判断できないときの扱い
AWB番号マスターとハウスを分けて原文のままどちらか決まらなければ ambiguous
便名と空港便名、日付、出発空港、到着空港を原文のまま書かれていなければ missing
AWBの個数原文と数値。マスターかハウスかを付ける数字が読めなければ unreadable
AWBの重量総重量と運賃計算重量を分け、単位(kg/lb)を付ける単位が無ければ unit_unknown
AWBの品名原文のまま書かれていなければ missing
インボイスの数量明細の行ごとに数量と単位(pcs、sets など)単位が無ければ空
インボイスの梱包の数項目名と値を原文のまま書かれていなければ not_stated
インボイスの重量総重量か正味重量かを分け、単位を付ける種類が決まらなければ ambiguous

重量の「総重量か正味重量か、運賃計算重量か」を分けるのが、いちばん大事な区別です。 AWBの総重量とインボイスの正味重量を比べると、包装材の分だけいつも食い違います。種類が分からない重量は、比べずに not_comparable にします。

させないこと理由
個数・重量が合っているかの判断照合の規則の表で Python が行う
単位の換算ポンドとキログラムの換算は Python が行う
書かれていない梱包の数の補完明細の数量から推し量ると、比べられない値を比べることになる
AWB番号の補正1桁違うと別の貨物になる
食い違いの原因の推測分割の出荷か、書き誤りかは人が確かめる

3行目がいちばん起きやすい失敗です。 明細の数量の合計を個数として返すと、100個の商品を3箱で送った貨物が、AWBの3個と食い違って見えます。

Step6

指示内容を固定する

あなたは物流会社の航空輸入課で、英文のAWBとインボイスの記載を
記録する担当です。OCRの読み取り結果だけを使ってください。
推測で埋めないでください。

【AWBから取り出す項目】
mawb_no、hawb_no、flight_raw、origin_raw、destination_raw、
pieces_raw、pieces、pieces_level(master / house / unknown)、
gross_weight_raw、gross_weight、gross_weight_unit(kg / lb / unknown)、
chargeable_weight_raw、goods_raw

【インボイスから取り出す項目】
invoice_no、invoice_date、po_no、
lines(配列:item_raw、quantity、quantity_unit)、
packages_raw、packages、
weights(配列:label_raw、kind(gross / net / unknown)、value、unit)

【status の選び方】
- ok ............. 値が読み取れており、その項目として解釈できる
- missing ........ 書かれていない
- not_stated ..... インボイスに梱包の数が書かれていない
- unreadable ..... 文字は検出されているが値として確定できない
- ambiguous ...... 候補が複数ある、または種類が決まらない
- unit_unknown ... 重量の単位が決まらない

【厳守事項】
- マスターAWBとハウスAWBを区別してください。混載の書類では
  マスターの個数・重量を、ハウスの値として入れないでください。
- 重量は、総重量(gross)、正味重量(net)、運賃計算重量
  (chargeable)を分けてください。項目名から決まらなければ
  kind を unknown にしてください。
- 単位は書類に書かれたものだけを入れてください。kg と lb を
  換算しないでください。
- インボイスに梱包の数が書かれていない場合は not_stated に
  してください。明細の数量の合計で埋めないでください。
- AWB番号は読み取った文字列をそのまま入れてください。
  桁を補ったり、似た文字に直したりしないでください。
- 個数や重量が合っているか、食い違いの理由が何かを書かないでください。
- AWBでもインボイスでもない書類(パッキングリスト、運賃の請求書、
  原産地証明書など)と判断した場合は、項目を取り出さず
  document_type に種類を書いてください。

【書類の種類】{document_type_hint}
【読み取り結果】{textract_result}

「明細の数量の合計で埋めない」を明記しないと、埋めます。 梱包の数の欄が無いインボイスで、何か数を返そうとして明細の数量を足し合わせ、後段の照合でAWBの個数と大きく食い違って見えます。

Step7

出力形式を固定する

Claude API の構造化出力(output_config.format に json_schema を指定)で、書類ごとに次の形のJSONを受け取ります。

{
  "file": "",
  "document_type": "air_waybill",
  "mawb_no": "000-00000000",
  "hawb_no": "HKG26100123",
  "flight_raw": "XX123/10OCT",
  "pieces_raw": "5",
  "pieces": 5,
  "pieces_level": "house",
  "gross_weight_raw": "86.5 K",
  "gross_weight": 86.5,
  "gross_weight_unit": "kg",
  "chargeable_weight_raw": "120.0",
  "goods_raw": "ELECTRONIC PARTS",
  "items": [
    { "item": "pieces", "status": "ok", "confidence": 0, "source": "" }
  ]
}

インボイスは document_type を commercial_invoice とし、invoice_no、po_no、lines、packages、weights を同じ形の items とあわせて返させます。

1つ目の理由は、照合をプログラムの側に置けることです。 Python がハウスAWB番号とインボイス番号で組を作り、照合の規則の表を引いて、比べてよい値どうしだけを比べます。

印付ける条件
ok個数が梱包の数と一致し、総重量どうしの差が許容差の範囲内
pieces_mismatchAWBのハウスの個数と、インボイスの梱包の数が違う
weight_mismatch総重量どうしの差が、荷主ごとの許容差を超える
not_comparable梱包の数が not_stated、重量の種類が合わない、または単位が分からない
needs_humanambiguous、unreadable の項目がある、組になる相手が無い、または書類でない

2つ目は、「比べられなかった」を記録として残せることです。 not_comparable は食い違いではありませんが、照合が済んでいない印として担当者の一覧に出します。 同じ仕出人で毎回 not_comparable になるなら、インボイスに梱包の数と総重量を書いてもらうよう、荷主から頼む先が決まります。

Step8

システムへ連携する

つなぎ先方式内容
受付フォルダ(Amazon S3)保存の通知書類の保存を検知して AWS Lambda を動かす
AWS TextractAPI呼び出し(非同期)AWBは文書の分析、インボイスは請求書の分析。完了の通知で結果を取る
Claude APIAPI呼び出し値の取り出しと、種類・単位の記録
輸入台帳読み取りと書き込み行を決めて値を書き、照合の印を付ける
照合の規則の表読み取り荷主ごとの許容差と梱包の数を取る書類を引く
通知メール毎朝の未着・要確認の一覧を担当者に送る

通関業者への受け渡しと、税関への申告は、この構成からは行いません。 照合の済んだ件を通関業者のフォルダに移すのは担当者です。申告の内容をどうするかは、通関業者が書類を見て判断します。

Step9

人が確認する

担当者が開くのは、ok 以外の印が付いたものです。 印の無いものは台帳の値のまま扱います。human_check を「条件付き」としているのはこのためです。

  1. pieces_mismatch と weight_mismatch を最初に片付ける … 分割の出荷か、書き誤りかをフォワーダーと仕出人に確かめます
  2. needs_human の値を画像で確定させる … AWB番号、マスターとハウスの別、重量の単位を確かめます
  3. not_comparable を流し見る … 比べられなかった理由を見て、急ぎの貨物だけはパッキングリストで個数を確かめます
  4. 解決した件を通関業者に渡す … 訂正されたインボイスが届いたら、照合をやり直してから渡します
Step10

例外に対処する

起きること対応
パスワードで保護されたPDF読めない。送り元に解除したものを頼む
6言語に入らない書類読み取りに回さず、担当者が目で見る
AWBとインボイスが1つのPDFページの見出しで分割してから、それぞれの読み方に回す
インボイスが複数のAWBに分かれて送られる照合の規則の表で分割の貨物とし、同じインボイス番号のAWBの個数と重量を合計して比べる
1通のAWBに複数のインボイスインボイスの梱包の数と重量を合計して比べる
重量の単位が書かれていないunit_unknown。比べずに not_comparable
組になる相手の書類が届かない「待ち」のまま毎朝の一覧に出す
ジョブが FAILED または PARTIAL_SUCCESSStatusMessage と Warnings のページ番号を記録し、そのページを人へ

上から4行目と5行目は、組み方を規則の表に書いておかないと、正しい書類がすべて食い違いに見えます。

Step11

記録を残す

  • 元のAWBとインボイスと、受け取った日時、送り元、メールの件名
  • AWS Textract が返したJSONの全文と、使った質問の一覧
  • Claude API が返したJSON(原文と、数値・単位・種類の解釈の両方)
  • 照合の結果と、そのとき参照した照合の規則の表の版
  • 担当者が印を覆した記録と、フォワーダー・仕出人への問い合わせの回答
  • 訂正されたインボイスと、元のインボイスとの対応

最後の行は、通関の後で問い合わせがあったときに、どの版のインボイスで照合したかを引く材料になります。

04実装レベルの3段階

最小構成:AWBとインボイスを手でAIの画面に貼り、項目を表にさせる / 1件ごとの項目の読み取り
半自動化:上記+受付フォルダを起点に AWS Textract で読み、台帳に書き、個数と重量を照合する / 読み取り、転記、照合、未着の書類の洗い出し
本格構成:上記+パッキングリストも読み、品目ごとの数量と梱包の対応まで照合する / 書類一式の照合

本記事の想定は半自動化です。 読み取りと転記と照合が自動になり、担当者は印の付いた件を確かめて問い合わせます。1件9分が3分になるのはこの段階です。 本格構成で足すのは、パッキングリストです。 読めば、インボイスとパッキングリストの数量、パッキングリストの箱の数とAWBの個数を、それぞれ照合できます。 段階を飛ばさないでください。 半自動化で not_comparable が多い仕出人と分割の多い荷主を先に知り、規則の表を整えてからパッキングリストに進みます。

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

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

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

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

AI活用について相談する

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

向いている
  1. 部品・サンプル・医療機器・電子部材などを航空便で月に数百件輸入する物流会社の輸入業務部門と、自社で輸入を管理する商社・メーカー・小売。フォワーダーや航空会社から英文のAWBとインボイスがPDFで届き、AWB番号・個数・重量を担当者が輸入台帳に手で写している場合。通関業者に書類を渡したあとで個数や重量の食い違いが分かり、通関が止まることがある場合。
向いていない
  1. 航空便の輸入が月に数件の企業。フォワーダーの貨物追跡のデータ連携でAWBの項目を受け取れており、PDFを読む工程が無い場合。AWBやインボイスが英語以外(中国語・韓国語・日本語など)で届くことが多い場合(この構成のOCRは英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語しか読めず、手書きは英語のみです)。なお、食い違いの原因の特定、仕出人への訂正の依頼、税関への申告内容の判断は、輸入業務の担当者と通関業者が行うもので、この構成では代替できません。

07最小構成で試す方法

  1. 先月の航空貨物から30件を選ぶ(混載でマスターとハウスが両方あるもの、重量がポンドで書かれたもの、インボイスに梱包の数が無いもの、分割で送られたものを必ず入れる)
  2. 手元の生成AIの画面にAWBとインボイスを1件ずつ貼り付け、「このAWBのマスターとハウスの番号、個数、総重量と単位、運賃計算重量、品名を、書かれたとおりに表にしてください。インボイスの梱包の数と重量(総重量か正味重量か)も表にしてください。書かれていない値は『記載なし』とし、明細の数量で埋めないでください」と指示する
  3. 出てきた表を、台帳の当時の値と、通関業者から問い合わせがあった件の記録と見比べる

30件は必ずやってください。 仕組みを組む前に、マスターとハウスの区別、重量の種類と単位、梱包の数の補完を確かめます。

出てきた内容判断
番号・個数・重量の種類と単位を原文どおりに取り出したOCRのAPIと照合の処理に進む
梱包の数を明細の数量で埋めた補完を禁じる指示を足す。直るまで先に進まない
マスターの値をハウスとして返した混載の書類の見分け方を指示に足す。構成は有効

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

問題対策
AWBの個数とインボイスの数量を比べる梱包の数とだけ比べる。 書かれていなければ not_comparable
総重量と正味重量を比べる重量の種類を記録し、総重量どうしだけを比べる
マスターの値を自社の貨物の値として記録するマスターとハウスを分けて取り出し、照合はハウスで行う
ポンドとキログラムを取り違える単位を原文のまま残し、換算は Python で行う
梱包の数を明細の数量で埋める補完を禁じ、not_stated で記録する
1つのPDFにAWBとインボイスが入っているページの見出しで分割してから読む
分割の出荷が全部食い違いに見える照合の規則の表で分割を扱い、同じインボイス番号で合計する
許容差を決めずに比べて印が増える荷主と許容差を決め、表に持たせる

上の2行が、この構成の失敗のほとんどです。 どちらも意味の違う値を並べる誤りで、印が当てにならなくなると、担当者は結局すべての書類を自分で見比べるようになります。

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

この構成で扱うデータ: 荷主と仕出人の名称と住所、AWB番号、品名、数量、単価、インボイスの金額です。個人の情報はほとんど含みませんが、荷主の仕入先と仕入値は外に出せない情報です。

  1. 外部へ渡す範囲を、読み取りに必要なものに限る … 生成AIに渡すのはAWBとインボイスの読み取り結果だけです。輸入台帳、照合の規則の表、他の荷主の情報は渡しません
  2. 単価と金額を、照合に使わない項目として扱う … 個数と重量の照合に単価は要りません。台帳に金額を写すかは荷主との取り決めで決め、写さないなら生成AIの出力からも外します
  3. 仕出人への連絡を自動で送らない … 食い違いの問い合わせは、担当者がフォワーダーと荷主に確かめてから行います
  4. 荷主ごとに見られる範囲を分ける … 台帳を荷主に共有するときは、その荷主の行だけが見えるようにします

誤りが起きた場合のリスクは、食い違いを見落としたまま通関業者に書類を渡し、申告の準備で止まることです。 比べられないものは比べない設計を崩さないでください。

10まず何から始めるか

1週目:照合の規則を表にする

荷主ごとに、重量の許容差、梱包の数を取る書類、分割の出荷の扱いを表にします。件数の多い上位5社の荷主から始めます。

2週目:30件で試す

先月の航空貨物から30件を選び、手元の生成AIの画面でAWBとインボイスの項目を表にさせます。マスターとハウスを分けられるか、重量の種類と単位を残せるか、梱包の数を補わないかを最優先で見ます。

3週目:書類の振り分けを作る

受付フォルダに入ったPDFを、AWB・インボイス・その他に分け、1つのPDFに複数の書類が入っているものを分割するところまで作ります。ここが誤ると、後段の読み取りがすべてずれます。

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

S3、Lambda、Textract、Claude API、Python の照合をつなぎ、台帳に値と印を書くところまで作ります。この時点では、件数の多い2社のフォワーダーの書類だけを対象にします。

2か月目: 対象を全フォワーダーに広げ、pieces_mismatch と not_comparable の件数を毎週数えて照合の規則の表を直します。3か月目以降: 毎朝の未着・要確認の一覧を運用に乗せ、1件9分が何分になったかを実測します。通関業者からの個数・重量の問い合わせが、書類が届いた日のうちに拾われるようになった時点で、この構成は完成です。


11関連ユースケース

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

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

技術仕様確認日:2026-10-08/最終更新:2026-10-08
確認した内容情報源確認日
輸入申告は輸入(納税)申告書を税関長に提出して行い、ほかに仕入書(インボイス)、包装明細書、船荷証券又は海上運送状(航空貨物については航空貨物運送状)、運賃明細書、保険料明細書、契約書、価格表の提出が必要とされること。航空貨物運送状(AWB)が航空貨物の運送に関する荷送人と運送人の運送契約書であること税関: カスタムスアンサー 1107 輸入申告の際に必要な書類2026-10-08
対応する形式がJPEG、PNG、PDF、TIFFであること。同期はPDF1ページ・10MB、非同期はPDFとTIFFで500MB・3,000ページであること。PDFはパスワードで保護できないこと。対応言語が英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語で、縦書きに対応しないこと。質問の検出は英語の文書だけで、非同期で1ページ30個までであること。手書きは英語のみであることAWS: Set Quotas in Amazon Textract2026-10-08
StartDocumentAnalysis の FeatureTypes(TABLES/FORMS/QUERIES/SIGNATURES/LAYOUT)、QueriesConfig、ClientRequestToken、JobTag、NotificationChannel で Amazon SNS に完了を通知することAWS: StartDocumentAnalysis2026-10-08
GetDocumentAnalysis がキーと値・表とセル・質問と答えのブロックを返すこと。JobStatus(SUCCEEDED/FAILED/PARTIAL_SUCCESS ほか)、MaxResults(最大1,000)と NextToken、StatusMessage、WarningsAWS: GetDocumentAnalysis2026-10-08
質問の応答が別名(Alias)と信頼度を持ち、答えが見つからなければ空のまま返ることAWS: Queries2026-10-08
StartExpenseAnalysis が請求書・領収書の非同期の分析で、JPEG、PNG、PDFを対象とし、完了を Amazon SNS に通知して GetExpenseAnalysis で結果を取ることAWS: StartExpenseAnalysis2026-10-08
請求書の分析が INVOICE_RECEIPT_ID、PO_NUMBER、ITEM、QUANTITY、UNIT_PRICE、PRICE などの標準項目を返し、標準に当たらない項目は OTHER とされること。書類上の項目名が LabelDetection、値が ValueDetection に入り、それぞれ信頼度を持つことAWS: Analyzing Invoices and Receipts2026-10-08
構造化出力を output_config.format に json_schema を指定して受け取れることClaude Docs: Structured outputs2026-10-08

申告に用いる書類とその内容の判断は、通関業者と税関の求めに従ってください。 本記事は税関のカスタムスアンサーで確認できた範囲だけを扱っており、貨物の種類によって必要な書類が変わる場合があります。

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

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

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

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