海外の仕入先から届く英文の船荷証券・パッキングリスト・インボイスを読み取り、品名・数量・重量・船名を輸入案件の台帳へ転記する
海外の仕入先から届く英文の船荷証券(B/L)、パッキングリスト、コマーシャルインボイスを読み取り、品名・数量・重量・船名などを輸入案件の台帳の形にそろえます。担当者は、読み取った値を確かめて登録するだけになります。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- AWS Textract/Azure AI/Google Document AI
- 対象業界
- 商社/小売/物流/製造
- 対象部門
- 物流/購買
- 対象業務
- データ入力・転記/台帳・マスタ管理
- 主な課題
- 人手が足りない/入力作業が多い/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/対応スピード向上/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 共有のメールボックスに届いた書類のメールを開き、添付のPDFを案件のフォルダへ保存する
- 件名や本文、インボイスの番号から、どの輸入案件の書類かを探す
- インボイスを開き、品名、数量、単価、合計金額、インボイスの番号と日付を台帳へ打ち込む
- パッキングリストを開き、梱包の数、正味重量、総重量、容積を打ち込む
- B/L を開き、B/L の番号、船名と航海番号、積地、揚地、船積日を打ち込む
- 入港予定日を、仕入先の船積通知のメールや船会社の案内から探して打ち込む
- 台帳の状態を「書類受領」にし、通関業者への依頼の準備に回す
- 自動共有のメールボックスに届いたメールの添付のPDFを、保管先の受付の場所へ保存する
- 自動保存をきっかけに処理が動き、形式・サイズ・ページ数を確かめる
- 自動OCRが書類を読み取り、台帳の項目に当たる値と表、それぞれの信頼度を返す
- 自動生成AIが、書類の種類を見分け、読み取り結果を台帳の項目の形に並べ直す
- 自動プログラムが、単位の換算と日付の解釈を行い、項目ごとに正とする書類の値を選ぶ
- 自動注文番号やインボイスの番号から、どの輸入案件かを引き当てる
- 自動台帳に「仮登録」の行として書き込み、信頼度の低い項目と書類どうしで値が違う項目に印を付ける
- 人担当者が仮登録の行を開き、印の付いた項目を中心に元の書類と見比べて確かめる
- 人確かめた行を「書類受領」にし、通関業者への依頼の準備に回す
各工程の詳しい説明を読む
- 共有のメールボックスに届いた書類のメールを開き、添付のPDFを案件のフォルダへ保存する
- 件名や本文、インボイスの番号から、どの輸入案件の書類かを探す
- インボイスを開き、品名、数量、単価、合計金額、インボイスの番号と日付を台帳へ打ち込む
- パッキングリストを開き、梱包の数、正味重量、総重量、容積を打ち込む
- B/L を開き、B/L の番号、船名と航海番号、積地、揚地、船積日を打ち込む
- 入港予定日を、仕入先の船積通知のメールや船会社の案内から探して打ち込む
- 台帳の状態を「書類受領」にし、通関業者への依頼の準備に回す
(a)3つの書類を行き来する。 1件の案件に書類が3種類あり、台帳の項目はその3つに散らばっています。画面を切り替えるたびに、どこまで打ったかを見失います。 1件15分の大半は、書類と台帳の間を目で往復する時間です。
(b)桁と単位を打ち間違える。 欧州の仕入先は「1.234,50」のように小数点と桁の区切りが逆の書き方をします。重量が LBS で書かれている書類もあります。そのまま打ち込むと、重量が千倍になったり、ポンドのままキログラムの欄に入ったりします。
(c)同じ値が書類ごとに違う。 B/L の総重量とパッキングリストの総重量が数キログラムずれていることがあります。どちらを打つかは担当者の判断で、台帳の値が人によって変わります。
(d)月末と船の入港が重なると追いつかない。 船は曜日を選ばずに着き、書類は入港の数日前にまとめて届きます。書類の受領から台帳に載るまでが2日、3日と延び、通関の依頼が入港に間に合わなくなることがあります。
- 【自動】 共有のメールボックスに届いたメールの添付のPDFを、保管先の受付の場所へ保存する
- 【自動】 保存をきっかけに処理が動き、形式・サイズ・ページ数を確かめる
- 【自動】 OCRが書類を読み取り、台帳の項目に当たる値と表、それぞれの信頼度を返す
- 【自動】 生成AIが、書類の種類を見分け、読み取り結果を台帳の項目の形に並べ直す
- 【自動】 プログラムが、単位の換算と日付の解釈を行い、項目ごとに正とする書類の値を選ぶ
- 【自動】 注文番号やインボイスの番号から、どの輸入案件かを引き当てる
- 【自動】 台帳に「仮登録」の行として書き込み、信頼度の低い項目と書類どうしで値が違う項目に印を付ける
- 【人】 担当者が仮登録の行を開き、印の付いた項目を中心に元の書類と見比べて確かめる
- 【人】 確かめた行を「書類受領」にし、通関業者への依頼の準備に回す
8番目が、この設計の分かれ目です。人は全部の項目を打ち直しません。 読み取った値が並んだ行を見て、印の付いた項目だけを元の書類で確かめます。 全項目を元の書類と見比べる設計にすると、打ち込みが見比べに変わっただけで、60.0時間はあまり減りません。
5番目をプログラムで行っているのも、意図してのことです。 単位の換算や日付の解釈は、決まった規則で答えが1つに決まる作業です。AIに任せる理由がなく、任せると、まれに違う答えを出します。
02今回想定するシステム構成
仕入先からのメール(B/L・パッキングリスト・インボイスのPDF) ▼【トリガー】添付の保存 Amazon S3(受付の場所) ▼ AWS Lambda ── 形式・サイズ・ページ数の確認 ▼ AWS Textract(StartDocumentAnalysis:QUERIES・TABLES・FORMS) │ 項目ごとの答えと表、信頼度を返す ▼ 完了の通知(Amazon SNS) AWS Lambda ── 読み取り結果を受け取る ▼ Claude API ── 書類の種類の判別と、台帳の項目への並べ直し(構造化出力) ▼ AWS Lambda ── 単位の換算・日付の解釈・正とする書類の値の選択・案件の引き当て ▼ 輸入案件の台帳(仮登録の行と、要確認の印) ▼ 【担当者が印の付いた項目を確認】──▶ 書類受領 ──▶ 通関業者への依頼
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | AWS Textract(AnalyzeDocument の QUERIES・TABLES・FORMS) | Azure AI Document Intelligence、Google Document AI |
| 生成AI | Claude API(書類の種類の判別と、台帳の項目への並べ直し) | OpenAI API、Gemini API |
| 連携 | AWS Lambda(保存を起点に処理を動かし、換算と台帳への書き込みを行う) | Amazon EventBridge |
| 保管 | Amazon S3(書類のPDFと読み取り結果) | 社内のファイルサーバー |
| 通知 | Amazon SNS(読み取りの完了の通知) | Amazon SQS |
台帳と販売管理システムは、新しく足すものではありません。 台帳には「仮登録」という状態を1つ足し、この構成はその状態の行だけを書き込みます。「書類受領」への変更は人が行います。 販売管理システムには書き込みません。
読み取りの土台は、AWS Textract の文書の分析(AnalyzeDocument)です。 取り出せるのは、キーと値の組(FORMS)、表とセル(TABLES)、そしてあらかじめ決めた問いへの答え(QUERIES)です。問いへの答えには信頼度が付きます。本記事では、台帳の項目のうち書類の中の位置が決まらないものを問いで取り、品目の明細は表で取ります。
Textract は、日本語の書類を読めません。 対応しているのは英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語で、手書きの文字は英語だけ、縦書きには対応していません。 問いによる取り出し(QUERIES)は英語の書類だけです。この構成が成り立つのは、船積書類が英文で届くからです。 日本語や中国語の書類が混ざる場合は、Azure AI Document Intelligence か Google Document AI に置き換えてください。
人の確認を組み込む仕組みとして、Textract には Amazon Augmented AI(A2I)との連携がありますが、A2I は2026年7月に保守の段階に入り、新規の顧客を受け付けていません。 本記事の人の確認は、台帳の仮登録の行で行う形にしています。
03どうやって実装するのか
処理の起点を決める
共有のメールボックスに届いたメールの添付を、保管先の受付の場所へ保存したことを起点にします。 保存は、メールの振り分けの規則か、メールボックスを見張る仕組みで行います。1日1回の定時実行にはしません。 書類は入港の数日前に集中して届き、まとめて処理すると、台帳に載るのが通関の依頼の締め切りに間に合わなくなります。
書類は3種類がそろって届くとは限りません。 インボイスが先に届き、B/L が数日後に届くことはよくあります。そのため、処理の単位は案件ではなく書類1通にします。 届いた書類から順に読み取り、台帳の同じ案件の行へ項目を足していきます。
同じメールが二度届いたときに、読み取りを二重に動かさない工夫をします。 Textract の非同期の処理には、同じ依頼を二度出しても同じ処理番号(JobId)を返す ClientRequestToken があります。ファイルの中身から作った値をこれに入れ、再送されたメールで同じ書類を二度読まないようにします。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 書類のPDF | B/L、パッキングリスト、コマーシャルインボイス。受け取った日時と送信元 | 共有のメールボックス |
| 読み取り結果 | 問いへの答え、表とセル、キーと値の組、それぞれの信頼度 | AWS Textract |
| 輸入案件の台帳 | 案件番号、注文番号、仕入先、状態、これまでに埋まった項目 | 台帳 |
| 仕入先の情報 | 仕入先コード、名称の表記の一覧、よく使う単位と数字の書き方 | 仕入先の一覧 |
| 正とする書類の表 | 台帳の項目ごとに、どの書類の値を採るか | 自社で用意する表 |
質を決めるのは、いちばん下の表です。 たとえば総重量はパッキングリスト、船名と B/L の番号は B/L、品名と数量はインボイスを正とする、といった取り決めを表にします。この表が無いと、同じ値が2つの書類から取れたときに、プログラムがどちらを採るかを決められません。
仕入先の情報の「数字の書き方」も効きます。 「1.234,50」と書く仕入先だと分かっていれば、読み取った文字列を数値にするときの規則を仕入先ごとに切り替えられます。 分かっていない仕入先は、両方の読み方を試して、合計と明細の和が合う方を採ります。
データの取得方法を決める
読み取りは非同期の処理(StartDocumentAnalysis)で行います。 同期の処理(AnalyzeDocument)は、PDF と TIFF が1ページまでです。B/L は裏面の約款まで含めて複数ページのPDFで届くことが多いため、全部の書類を非同期で扱います。 非同期なら、PDF と TIFF は500MB・3,000ページまで扱えます。
完了は通知で受け取ります。 非同期の処理は、完了の状態を Amazon SNS のトピックに送ります。公式のドキュメントは、結果の取得の操作(Get)を繰り返し呼んで完了を待つことを勧めておらず、呼びすぎると絞られるとしています。通知を受けて Lambda を動かし、そこで結果を取りに行きます。
結果は自社の保管先に出させます。 非同期の結果は、既定では Textract の側で暗号化して7日間保存され、取得できるのは処理の開始から7日までです。 OutputConfig で自社の保管先を指定し、読み取り結果を残します。
| 取るもの | どう取るか | 何に使うか |
|---|---|---|
| B/L の番号、船名、航海番号、積地、揚地、船積日 | QUERIES(問いと別名を決めておく) | 台帳の輸送の項目 |
| インボイスの番号と日付、注文番号、合計金額、通貨 | QUERIES | 案件の引き当てと、台帳の金額の項目 |
| 品目の明細(品名・数量・単位・単価・金額) | TABLES | 台帳の品目の行 |
| 梱包の数、正味重量、総重量、容積 | QUERIES と TABLES | 台帳の数量と重量の項目 |
| 荷送人、荷受人、通知先 | FORMS | 仕入先と自社の名称の確認 |
問いは、書類の種類ごとに決めます。 問いには本文と別名(Alias)を付けられ、答えの側にはその問いが繰り返されて返ります。別名を台帳の項目名にしておけば、答えを項目へ対応付ける手間がなくなります。 1ページあたりの問いは、非同期で30までです。
AIへ渡す前に整形する
- 形式の確認 … JPEG、PNG、PDF、TIFF であることを確かめます。XFA 形式の PDF には対応していません
- パスワードの確認 … パスワードで保護された PDF は読めません。 仕入先に保護を外して送り直してもらいます
- 大きさの確認 … 非同期の PDF は500MB・3,000ページまで。画像は各辺10,000ピクセル以下です
- 文字の大きさの確認 … 読み取れる文字の高さの下限は15ピクセルで、150DPIで8ポイントの文字に当たります
- 1ファイルに複数の書類がないかの確認 … インボイスとパッキングリストが1つのPDFにまとまっているものは、ページで分けます
- 重複の確認 … ファイルの中身から作った値で、同じ書類が既に読まれていないかを見ます
4番目を軽く見ないでください。 仕入先が紙の書類をスキャンして送ってくると、B/L の細かい字がこの下限に近くなります。小さな字の船名や航海番号が、読めずに空の答えになります。 空の答えが続く仕入先には、PDF を元のデータから書き出して送ってもらうよう頼みます。
5番目は、案件の引き当てに効きます。 1つのPDFに3種類の書類がまとまっていると、どのページがどの書類かが分からず、問いの答えが混ざります。ページごとに書類の種類を見分けてから、問いを当てるページを決めます。
AIに処理させる
AIがするのは2つです。 OCR が値と信頼度を読み取り、生成AIがそれを台帳の項目の形に並べ直します。 換算と選択と引き当ては、プログラムが行います。
| 担当 | させること | 判断できないときの扱い |
|---|---|---|
| OCR | 問いへの答え、表、キーと値の組を、信頼度とともに返す | 答えが見つからなければ空のまま返る |
| 生成AI | 書類の種類を見分け、読み取り結果を台帳の項目と品目の行に並べ直す | 項目に当たる値が無ければ not_found |
| プログラム | 単位の換算、日付の解釈、正とする書類の値の選択、案件の引き当て | 規則で決まらなければ needs_check |
真ん中の行の「並べ直す」が、生成AIの仕事のすべてです。 パッキングリストの表は、仕入先によって列の順も列の名前も違います。「G.W.」「Gross Wt」「Gross Weight (KGS)」を同じ総重量の列だと見分け、明細の行を台帳の品目の行の形にそろえるところだけを任せます。
| させないこと | 理由 |
|---|---|
| 単位の換算 | LBS から KG への換算は規則で決まる。プログラムで行い、元の値も残す |
| 日付の解釈 | 「09/12/2026」が9月12日か12月9日かは仕入先の国で決まる。仕入先の情報で決める |
| 空の答えを他の書類から補う | 補うと、どの書類から採った値か分からなくなる |
| 書類どうしの値の食い違いの解消 | 採る値は正とする書類の表で決める。違いは印を付けて人へ |
| 入港予定日の推測 | 船積日と航路から計算しない。書かれていなければ空 |
3行目がいちばん起きやすい失敗です。 B/L で総重量の答えが空だったときに、パッキングリストの値で埋めたくなります。埋めると台帳の値は正しく見えますが、どちらの書類から採ったかという記録が消えます。 補うかどうかは、正とする書類の表に従ってプログラムが決めます。
指示内容を固定する
あなたは輸入の案件を管理する部署で、英文の船積書類の読み取り結果を
輸入案件の台帳の形に並べ直す立場です。
OCRが返した読み取り結果だけを使ってください。推測で埋めないでください。
【まずすること】
読み取り結果がどの書類かを、次から1つ選んで document_type に入れてください。
bill_of_lading / packing_list / commercial_invoice / other
【並べ直す項目】
- 輸送:B/L番号、船名、航海番号、積地、揚地、船積日
- 取引:インボイス番号、インボイス日付、注文番号、通貨、合計金額
- 梱包:梱包の数と種類、正味重量、総重量、容積
- 品目の行:品名、品番、数量、数量の単位、単価、金額
【厳守事項】
- 値は書類に書かれた文字列のまま raw に入れてください。
数字の区切り、単位、日付の書き方を直さないでください。
- 単位は書かれているとおり unit に入れてください。換算しないでください。
- 日付を別の書き方に直さないでください。月と日を入れ替えないでください。
- 読み取り結果に無い項目は status を not_found にし、raw を空にしてください。
他の書類や他の項目から補わないでください。
- 入港予定日(ETA)が書かれていなければ not_found です。
船積日や航路から計算しないでください。
- 表の列の名前が違っても同じ意味なら同じ項目に並べてください。
どの列を採ったかを source_label に写してください。
- 1つの項目に候補が2つ以上あるときは、両方を candidates に入れ、
status を ambiguous にしてください。どちらかを選ばないでください。
- confidence は OCR が返した値をそのまま入れてください。
- 書類どうしで値が合っているかを判断しないでください。
【読み取り結果】{textract_result}
【この仕入先の情報】{supplier_profile}
「換算しない」「月と日を入れ替えない」を明記しないと、親切に直します。 「2,205 LBS」を渡すと、何も言わなければ「1,000 kg」と書いて返すことがあります。直した値が正しくても、元の書類に何と書かれていたかが台帳から消えます。 換算はプログラムで行い、元の値と並べて残します。
「候補が2つ以上なら選ばない」も同じ理由です。 B/L には、船積日と発行日という2つの日付が並んでいることがあります。どちらかを選ばせると、選んだ理由が残りません。
出力形式を固定する
Claude API の構造化出力を使い、次の形のJSONで受け取ります。 構造化出力は、応答を指定した JSON スキーマに従わせ、必須の項目と型がそろった、読み込める形を保証するとされています。
{
"file_id": "",
"document_type": "bill_of_lading | packing_list | commercial_invoice | other",
"fields": [
{ "item": "vessel_name", "status": "ok | not_found | ambiguous",
"raw": "", "unit": "", "candidates": [], "confidence": 0, "source_label": "" }
],
"line_items": [
{ "description": "", "part_no": "", "qty_raw": "", "qty_unit": "",
"unit_price_raw": "", "amount_raw": "", "confidence": 0 }
],
"keys_for_matching": { "po_no": "", "invoice_no": "", "bl_no": "" }
}
1つ目の理由は、raw と台帳の値を別の層に置けることです。 AIが埋めるのは書かれたとおりの raw だけで、台帳に入る数値と日付はプログラムが作ります。 仕入先の数字の書き方が分かったら、直すのは規則だけです。
2つ目は、status で「無かった」と「迷った」を分けられることです。 not_found は書類に書かれていない、ambiguous は候補が複数あった、ということです。前者は他の書類を待てば埋まることが多く、後者は人が決めるものです。
3つ目は、keys_for_matching で案件を引き当てられることです。 注文番号、インボイスの番号、B/L の番号のどれかで台帳の行を探します。
| 引き当ての順 | 使う値 | 見つからないとき |
|---|---|---|
| 1 | 注文番号 | 次の値で探す |
| 2 | インボイスの番号(先に届いた書類で登録済みのもの) | 次の値で探す |
| 3 | B/L の番号 | 案件を特定できないものとして人へ |
台帳に入る値は、正とする書類の表で選びます。 正とする書類の値が ok ならそれを採り、not_found なら表に書いた次の書類の値を採って「代替」の印を付けます。 書類どうしで値が違うときは、採った値の横に「要確認」の印を付けます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 共有のメールボックス | 添付の保存 | 書類のPDFを受付の場所へ置く |
| Amazon S3 | 保存のイベント | Lambda を動かす |
| AWS Textract | 非同期の処理 | 問いへの答え・表・キーと値の組・信頼度を返す |
| Amazon SNS | 完了の通知 | 結果を取りに行く Lambda を動かす |
| Claude API | API呼び出し | 書類の種類の判別と、台帳の項目への並べ直し |
| 輸入案件の台帳 | 行の追加と更新 | 状態が「仮登録」の行だけを書き込む |
台帳への書き込みは、「仮登録」の行に限ります。 担当者が「書類受領」にした行は、この構成から書き換えません。後から届いた書類で値が変わりそうなときも、上書きせずに「後着の書類で値が違う」と印を付けます。
販売管理システムには書き込みません。 台帳の値を販売管理システムへ移すのは、これまでどおり人の仕事です。読み取りの誤りが仕入の計上まで一息に進む経路を作りません。
人が確認する
人が見るのは、仮登録の行の全部ですが、元の書類と見比べるのは印の付いた項目だけです。
- 案件を特定できなかった書類を先に見る … どの案件の書類かを決め、引き当てます
- 「要確認」の項目を見る … 書類どうしで値が違うものです。どちらを採るかを決め、必要なら仕入先に訂正を求めます
- 信頼度の低い項目を見る … 元の書類の該当箇所を開いて、値を確かめます
- 「代替」の印の項目を見る … 正とする書類に無かった値です。後から正とする書類が届く予定かを確かめます
- 残りの項目を流し見て、状態を「書類受領」にする
2番目を省かないでください。 総重量が書類ごとに違うまま通関業者に渡すと、申告の段階で問い合わせが来ます。 食い違いを直すのは UC-0061 のような突合の仕組みか人の仕事で、この構成は印を付けて渡すところまでです。
目標は、240件をならして1件4分です。 印の付く項目が1件あたり数個という想定で、それより多い月は、仕入先の数字の書き方の情報が足りていないか、スキャンの書類が増えています。
例外に対処する
| 起きること | 対応 |
|---|---|
| パスワード付きの PDF | 読めない。仕入先に保護を外して送り直してもらう |
| XFA 形式の PDF | 対応していない。印刷してPDFにし直すか、仕入先に別の形式で頼む |
| 日本語や中国語の書類が混ざる | 読めない。other として人へ回す。多い仕入先は別の OCR に切り替える |
| 文字が小さすぎる | 高さ15ピクセルが下限。空の答えが続く仕入先には元のデータからのPDFを頼む |
| 1つのPDFに書類がまとまっている | ページごとに種類を見分けて分ける。分けられなければ人へ |
| 案件を特定できない | 注文番号・インボイスの番号・B/L の番号のどれでも引けなければ人へ |
| 同じ書類が二度届く | ClientRequestToken で二重の処理を防ぎ、台帳の行も増やさない |
| 読み取りの処理が同時に多すぎる | LimitExceededException が出る。キューに並べて順に流す |
| 読み取りの結果を7日以内に取り損ねる | 既定の保存は7日。自社の保管先に出させる設定にしておく |
上から4行目までが大半を占めます。 どれもAIの問題ではなく、仕入先の書類の送り方の問題です。 仕入先ごとに傾向が出るので、まとめて頼むほうが、読み取りの精度を上げるより効きます。
記録を残す
- 元の書類のPDFと、受け取った日時・送信元
- Textract の読み取り結果の全文(問いへの答え、表、キーと値の組、信頼度)
- 生成AIが返したJSON(
raw、status、candidates) - 台帳へ書いた値と、その値を採った書類と規則(正とする書類か代替か)
- 人が値を直した記録と、「書類受領」にした人と日時
- 仕入先ごとの
not_foundと信頼度の低い項目の発生率
4つ目で「どの書類から採ったか」を残すのは、後から台帳の値を疑うときのためです。 通関業者から重量の問い合わせが来たとき、台帳の値が B/L から来たのかパッキングリストから来たのかが分からないと、答えられません。
最後の行は、仕入先への依頼の材料になります。 特定の仕入先だけ空の答えが続くなら、書類の送り方に理由があります。
04実装レベルの3段階
最小構成は確かめるための段階です。 1通ずつ貼り付けるので、月720通には使えません。 半自動化で、1件15分が8分程度になります。 読み取りと並べ直しは自動になりますが、一覧から台帳へ写す作業と、単位の換算と案件の特定が手で残ります。本格構成で4分になり、この段階が本記事の想定です。 段階を飛ばさないでください。 半自動化の一覧を1か月見ると、数字の書き方が違う仕入先と、空の答えが多い仕入先が先に分かります。そこを仕入先の情報に入れてから本格構成に進むほうが、印の付く項目が減ります。
05工数削減シミュレーション
導入後 240件 × 4分 ÷ 60 = 16 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 海外の仕入先から機械部品・化学品・雑貨・食品原料などを輸入し、船積書類が英文のPDFでメールに添付されて届く商社・メーカー・小売。輸入の案件が月に百件以上あり、書類の中身を輸入案件の台帳へ手で打ち込んでいる場合。仕入先が多く、書類の様式が仕入先や船会社ごとに違う場合。
- 船積書類が日本語、または中国語・韓国語などで届く場合(この構成のOCRは英語など6言語しか読めません)。フォワーダーや通関業者から、書類の中身を電子データで受け取れている場合。輸入の案件が月に数件で、手で打ち込めば足りる場合。書類どうしの食い違いの点検が目的の場合(その用途は別の構成が向いています)。
07最小構成で試す方法
- 先月の輸入の案件から10件を選び、B/L、パッキングリスト、インボイスの30通をそろえる(欧州の仕入先とスキャンの書類を必ず入れる)
- その10件の台帳の行を、正解として写しておく
- 30通を1通ずつ Textract のコンソールで読み、問いへの答えと表の読み取りを見る
- 読み取り結果を手元のAIサービスに貼り、「台帳の項目に並べ直してください。書かれたとおりの文字列で、単位は換算せず、無いものは無いと書いてください」と指示する
- 出てきた値を、台帳の正解と項目ごとに突き合わせる
30通は必ずやってください。 仕組みを組む前に、「英文の書類から、台帳の項目が読み取れるのか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 大半の項目が正解と一致した | 非同期の処理と台帳への書き込みに進む |
| 単位や日付を勝手に直した | 指示の書き方で直る。構成は有効 |
| スキャンの書類で空の答えが多い | 仕入先の書類の送り方が先。 AIの問題ではない |
3行目が出ることは珍しくありません。 その場合は、仕入先に元のデータから書き出したPDFを頼んだうえで、同じ書類を読み直してください。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| AIが単位を換算して返す | 換算を禁じ、書かれた文字列のまま受け取る。 換算はプログラムで |
| 日付の月と日が入れ替わる | 仕入先の国で解釈を決める。AIに書き直させない |
| 空の答えを他の書類で埋める | 正とする書類の表で決め、「代替」の印を付ける |
| 日本語の書類で読み取りが空になる | Textract は英語など6言語だけ。 別の OCR に回す |
| 複数ページの B/L が同期の処理で読めない | 同期は PDF 1ページまで。非同期で扱う |
| 完了を待って結果の取得を繰り返し呼ぶ | 呼びすぎると絞られる。SNS の通知で動かす |
| 読み取り結果が7日で消える | OutputConfig で自社の保管先に出させる |
| 人の確認に A2I を使おうとする | 2026年7月から新規の受付を停止。 台帳の仮登録で確認する |
| 同じメールの再送で二重に読む | ClientRequestToken を使う |
| 書類どうしの食い違いを台帳で直してしまう | 印を付けて人へ。突合は別の仕組みで |
上の2行が、この構成の失敗のほとんどです。 どちらも、AIが「親切に」値を直すところから出発しています。書かれたとおりに受け取り、直すのはプログラムと人に限ることで、運用に乗るかが決まります。
下の2行も、早く効いてきます。 再送のたびに台帳の行が増えると、同じ貨物の通関を二度依頼しかねません。 食い違いを台帳の側で黙って直すと、仕入先に訂正を求める機会が消えます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 仕入先と荷受人の名称と住所、品名と数量と金額、そして通知先として書かれている取引先の担当者の氏名と連絡先です。
- 外部へ渡す範囲を、台帳の項目に必要なところまでに限る … 生成AIに渡すのは読み取り結果のうち項目と表に当たる部分です。書類の画像そのものは生成AIに渡しません
- 読み取り結果を自社の保管先に置く … 既定では Textract の側に7日間保存されます。自社の保管先に出させ、暗号化の鍵も自社で管理する設定にできます
- 台帳の確定を自動にしない … 書き込むのは仮登録までです。「書類受領」にするのは人です
- 仕入先に訂正を求める連絡を自動で送らない … 食い違いの印は人が見て、訂正を求めるかを人が決めます
- この構成は通関の判断を代替しない … 台帳の値は通関業者に渡す情報の元になりますが、申告の内容を確かめるのは通関業者と自社の担当者です
誤りが起きた場合のリスクは、誤った値が台帳に載ったまま通関業者へ渡ることと、同じ貨物の案件が二重にできることの2つです。 前者は AIに値を直させると起き、後者は再送のメールを二度読むと起きます。どちらも「書かれたとおりに受け取り、同じものを二度読まない」ことで防ぎます。
10まず何から始めるか
1週目:正とする書類の表を作る
台帳の項目ごとに、どの書類の値を採るかを表にします。総重量はパッキングリスト、船名は B/L、品名と数量はインボイス、といった取り決めです。通関業者にも見てもらい、申告で使う値と合わせます。
2週目:30通で試す
先月の10件分の書類を Textract のコンソールで読み、手元のAIサービスで並べ直させます。台帳の正解と突き合わせ、単位や日付を勝手に直していないかを最優先で見ます。
3週目:仕入先の情報を作る
取引の多い上位20社について、数字の書き方、よく使う単位、日付の書き方を一覧にします。この20社で月の案件の大半が埋まります。
4週目:保存から一覧までをつなぐ
保存を起点に非同期の読み取りを動かし、並べ直した結果を一覧に書き出すところまで作ります。この時点では台帳に書き込まず、一覧だけを見ます。
2か月目: 単位の換算、正とする書類の選択、案件の引き当てを足し、台帳の仮登録を始めます。印の付いた項目の数を毎週数えます。3か月目以降: 1件15分が何分になったかを実測します。仕入先ごとの空の答えの発生率を見て、書類の送り方を仕入先と相談し終えた時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 対応形式が JPEG・PNG・PDF・TIFF で XFA 形式の PDF に対応しないこと。同期は10MB・PDF と TIFF は1ページ、非同期は PDF と TIFF が500MB・3,000ページであること。パスワード保護の PDF は不可。画像は各辺10,000ピクセル以下。縦書きに対応しないこと。対応言語が英・仏・独・伊・葡・西で、問いは英語の書類のみ、手書きは英語のみであること。文字の高さの下限が15ピクセル(150DPIで8ポイント)であること。問いは1ページあたり同期15・非同期30までであること | AWS: Set Quotas in Amazon Textract | 2026-09-30 |
| AnalyzeDocument が FORMS・TABLES・QUERIES・SIGNATURES・LAYOUT を返し、問いの答えに信頼度が付くこと。同期の処理であること。A2I が2026年7月に保守の段階に入り新規の顧客を受け付けていないこと | AWS: AnalyzeDocument | 2026-09-30 |
| 問いに本文と別名を付けられ、答えの側に問いが繰り返されて返ること。答えが見つからないときは空のまま返ること | AWS: Queries | 2026-09-30 |
非同期の処理の完了が SNS のトピックに送られること。結果の取得を繰り返し呼ぶと絞られるため勧められないこと。結果が既定で7日間保存され、OutputConfig で自社の保管先を指定できること。ClientRequestToken で同じ依頼に同じ JobId が返ること。同時の処理が多すぎると LimitExceededException が出ること | AWS: Calling Amazon Textract Asynchronous Operations | 2026-09-30 |
| 構造化出力が応答を指定した JSON スキーマに従わせ、必須の項目と型がそろった形を保証すること | Claude: Structured outputs | 2026-09-30 |
| 輸入の申告に、仕入書(インボイス)、包装明細書、船荷証券又は海上運送状などの提出が必要とされること。仕入書が品名・数量・価格などを記載したもので、船荷証券が船会社から取得する本船貨物受領書であること | 税関: 輸入申告の際に必要な書類 | 2026-09-30 |
通関の申告に使う値の扱いは、通関業者と自社の担当者で決めてください。 本記事は公開されている製品の仕様と税関のページで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0395)についてのご相談はこちらから。
