コンテナのリース会社が海外のデポから届く英文の修理見積(EOR)を読み取り、損傷の箇所・修理の内容・金額を修理の基準と単価表に照らして、過大な見積と利用者の負担の区分を拾う
海外のデポから届く英文のコンテナの修理見積を読み取り、行ごとの部位・位置・損傷・修理のコードと工数・金額を見積の明細にそろえます。取り決めの単価、標準の工数、材料の単価、リースの契約に照らし、過大な見積と負担者の区分の確かめどころを承認の担当に回します。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- AWS Textract/Azure AI/Google Document AI
- 連携・自動化
- Python
- 対象業界
- 商社/物流
- 対象部門
- 購買
- 対象業務
- データ入力・転記/内容確認・チェック
- 主な課題
- 入力作業が多い/属人化している/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 判断支援/属人化解消/工数削減
- 導入難易度
- ★★★★☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- デポから届いた修理見積のPDFを、コンテナ番号ごとのフォルダに保存する
- 機器の管理の仕組みで、コンテナ番号・利用者・貸出と返却の日付を確かめる
- 見積の作業の単価と材料費を、デポとの取り決めの一覧と見比べる
- 行ごとの工数を、自社の標準の工数表と見比べる
- 負担者の区分を、損傷の種類とリースの契約の条件で確かめる
- 工数×単価の作業費と、行の合計・見積の合計を確かめる
- 承認・一部の否認・見積の出し直しの依頼のどれかをデポに返す
- 人修理の管理の担当が、届いた修理見積のPDFをデポごとの受け取りの場所(Amazon S3)に保存する
- 自動保存をきっかけに、AWS Textract が表と項目の読み取りを非同期で始める
- 自動プログラムが、見積の見出しの項目と行ごとの明細を組み立てる
- 自動コードの無い行について、Claude API が作業の文を自社のコードの表に当てはめ、根拠の文を写す
- 自動プログラムが、コンテナ番号の確認の数字と、機器の管理の仕組みの貸出・返却の記録を確かめる
- 自動プログラムが、作業の単価・材料の単価・標準の工数・合計を照らし、負担者の区分の確かめどころを出す
- 人承認の担当が、確かめどころの付いた行を見て、承認・否認・出し直しの依頼を決める
- 人承認の担当が、決めた内容をデポに返し、利用者の負担の行を請求の手続きに回す
各工程の詳しい説明を読む
- デポから届いた修理見積のPDFを、コンテナ番号ごとのフォルダに保存する
- 機器の管理の仕組みで、コンテナ番号・利用者・貸出と返却の日付を確かめる
- 見積の作業の単価と材料費を、デポとの取り決めの一覧と見比べる
- 行ごとの工数を、自社の標準の工数表と見比べる
- 負担者の区分を、損傷の種類とリースの契約の条件で確かめる
- 工数×単価の作業費と、行の合計・見積の合計を確かめる
- 承認・一部の否認・見積の出し直しの依頼のどれかをデポに返す
(a)照らし合わせの表が多い。 作業の単価はデポごと、材料の単価はデポと材料ごと、工数は部位と修理のコードの組ごとに違います。担当者は3つの表を横に開いて、1行ずつ探しています。
(b)コードの無い行がある。 小さなデポの見積には、コードの代わりに「Replace floor board 2 pcs」「Straighten side panel」と文で書かれた行があります。標準の工数表はコードで引くので、文の行は担当者が頭の中でコードに直してから引いています。
(c)承認の基準が担当者の経験に頼る。 標準の工数より少し多い見積を、承認する担当者と否認する担当者がいます。どの程度の超過を認めるかの決まりが文書になっていないので、同じデポの同じ修理でも承認する金額がそろいません。
(d)負担者の区分の誤りに気づきにくい。 長く使われて傷んだ箇所の修理が利用者の負担として出てくることや、荷役の際の損傷が所有者の負担として出てくることがあります。金額の確認に目が向いている間に、区分の確認が抜けます。
- 【人】 修理の管理の担当が、届いた修理見積のPDFをデポごとの受け取りの場所(Amazon S3)に保存する
- 【自動】 保存をきっかけに、AWS Textract が表と項目の読み取りを非同期で始める
- 【自動】 プログラムが、見積の見出しの項目と行ごとの明細を組み立てる
- 【自動】 コードの無い行について、Claude API が作業の文を自社のコードの表に当てはめ、根拠の文を写す
- 【自動】 プログラムが、コンテナ番号の確認の数字と、機器の管理の仕組みの貸出・返却の記録を確かめる
- 【自動】 プログラムが、作業の単価・材料の単価・標準の工数・合計を照らし、負担者の区分の確かめどころを出す
- 【人】 承認の担当が、確かめどころの付いた行を見て、承認・否認・出し直しの依頼を決める
- 【人】 承認の担当が、決めた内容をデポに返し、利用者の負担の行を請求の手続きに回す
4番目と6番目を分けているのが、この設計の分かれ目です。 「Replace floor board 2 pcs」を床板の交換のコードに当てはめるのは言葉を扱う作業です。一方、その工数が標準より多いかは、表を引いて比べるだけの作業です。 AIには当てはめまでをさせ、比べるのはプログラムにさせます。
6番目で負担者を「直す」のではなく「確かめどころ」にしているのは、区分の決め手が見積の外にあるからです。 損傷が利用者の使用中に起きたかは、貸出と返却の時点の検査の記録や、リースの契約の条件で決まります。プログラムが出すのは、契約の条件と見積の区分が合わない行の印までです。
02今回想定するシステム構成
修理見積(英文のPDF。海外のデポからメールで届く) │ 修理の管理の担当がデポごとの場所へ保存 ▼【トリガー】Amazon S3 への保存 AWS Lambda ── StartDocumentAnalysis(FeatureTypes:TABLES、FORMS、QUERIES) ▼ AWS Textract(非同期の文書分析)── 完了の通知(Amazon SNS) ▼ AWS Lambda ── GetDocumentAnalysis ├──▶ Python:見出しと行ごとの明細を組み立てる ├──▶ Claude API:コードの無い行のコードの当てはめ(根拠の文付き) ├──▶ Python:コンテナ番号と貸出・返却の記録の確認 └──▶ Python:単価・工数・合計の照合と、負担者の確かめどころ ▼ 点検の結果と確かめどころの一覧(承認の担当が確認) ▼ デポへの承認・否認の返事(人)/利用者への請求の手続き
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | AWS Textract(StartDocumentAnalysis/GetDocumentAnalysis。TABLES・FORMS・QUERIES) | Azure AI Document Intelligence、Google Document AI |
| 生成AI | Claude API(コードの無い行のコードの当てはめ) | OpenAI API、Gemini API |
| 差異計算 | Python(単価・工数・合計の照合、負担者の確かめどころ) | 機器の管理の仕組みの見積の点検の機能 |
| 連携 | AWS Lambda(保存と完了の通知を起点に処理を動かす) | AWS Step Functions |
| 保管 | Amazon S3(修理見積の原本、読み取り結果、確認の記録) | 社内のファイルサーバー |
土台は、AWS Textract の表の読み取りです。 修理見積は列の多い表で、行と列の対応が崩れると、ある行の工数が隣の行の材料費に付きます。 Textract の表の機能は、セルごとに行の番号と列の番号を返し、列の見出しや合計の行のセルを区別する印を付けるとされています。
Textract を選べるのは、修理見積が英文だからです。 公式の対応言語は英語・フランス語・ドイツ語・イタリア語・ポルトガル語・スペイン語で、手書きは英語だけです。南米や欧州のデポで現地語の見積が届いても、この6言語なら読めます。 デポの検査員が手書きで追記した行は、英語なら読めます。
機器の管理の仕組みには書き込みません。 承認の結果は、承認の担当がデポに返し、機器の管理の仕組みに入力します。
03どうやって実装するのか
処理の起点を決める
デポごとの受け取りの場所(S3 のフォルダ)にPDFが保存されたことを起点にします。 フォルダは eor/<デポコード>/ の形にし、どのデポの見積かを保存した場所で決めます。 見積の見出しのデポ名から決めると、同じ会社の別の港のデポと取り違え、別の単価表を引きます。
読み取りを始めるとき、ClientRequestToken に「デポコード+見積番号+改訂の番号」を入れます。 公式のページでは、同じトークンで StartDocumentAnalysis を呼ぶと同じ JobId が返り、同じジョブを誤って二度始めるのを防げるとされています。保存の時点では見積番号が分からないので、ファイル名に担当者が見積番号を付けて保存する運用にします。
完了は Amazon SNS の通知で受け、JobTag に入れたデポコードと見積番号で、どの見積かを知ります。 JobId は7日間だけ有効なので、結果は受け取ったその場で S3 に保存します。
否認や出し直しの依頼の後、デポから改訂の見積が届きます。 同じ見積番号で改訂の番号が上がったものは、前の版と行ごとに並べ、変わった行だけを確かめどころにします。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 修理見積 | コンテナ番号、機器の種類、デポ、利用者、返却の日付、見積番号と改訂の番号、作業の単価、通貨、保険の制度の対象か、行ごとの部位・位置・損傷・修理のコード、寸法、数量、負担者、工数、作業費、材料費、合計、備考 | デポから届くPDF |
| 読み取り結果 | 表のセル、キーと値の組、問い合わせの答え、行と単語、信頼度、手書きか印刷か | AWS Textract |
| 貸出・返却の記録 | コンテナ番号ごとの利用者、貸出と返却の日付と場所、契約の番号 | 機器の管理の仕組みから書き出したファイル |
| デポとの取り決め | デポごとの作業の単価と通貨、材料ごとの単価 | 取り決めの一覧 |
| 標準の工数表 | 部位・修理のコード・寸法の範囲ごとの標準の工数 | 自社の工数表 |
| リースの契約の条件 | 契約ごとの、損傷の修理の負担、保険の制度の有無と上限、通常の損耗の扱い | 契約の条件の一覧 |
| コードの表 | 自社で使う部位・損傷・修理のコードと、その説明、文での書き方の例 | 自社で用意する表 |
質を決めるのは、標準の工数表です。 IICLの指針では、部位・損傷・修理のコードの組み合わせの推奨は、IICLの Equipment Code Standards(ECS)の文書にまとめられているとされています。自社の工数表をこのコードの組み合わせに合わせておくと、どのデポの見積でも同じ表で引けます。
リースの契約の条件には、保険の制度の扱いを必ず入れます。 見積の見出しには保険の制度の対象かの欄があり、負担者のコードにも保険の制度(I)があります。対象のコンテナで利用者の負担の行が並んでいたら、契約の上限と照らす必要があります。
コードの表の「文での書き方の例」は、コードの無い行の当てはめに使います。 「Replace floor board」「Renew floorboard」「F/B replace」のような書き方を、床板の交換のコードの行に並べておきます。
データの取得方法を決める
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 行ごとの明細 | TABLES の TABLE・CELL のブロック(行の番号・列の番号・列の見出し) | 部位・位置・損傷・修理・寸法・数量・負担者・工数・金額の行 |
| 負担者ごとの合計 | 表の合計の行(TABLE_SUMMARY の印)、下の集計の表 | 行の合計との照らし合わせ |
| 見出しの項目 | FORMS のキーと値の組、QUERIES の QUERY_RESULT | コンテナ番号・デポ・作業の単価・通貨・返却の日付・見積番号 |
| 手書きの追記 | WORD のブロックの TextType | 検査員が後から書き足した行の印 |
見出しの項目は、キーと値の組で取り、問い合わせで補います。 IICLの指針が示す見積の形には、コンテナ番号、デポ、機器の種類、返却の日付、見積番号、改訂の番号、作業の単価、見積の通貨、保険の制度の対象かなどの見出しの項目があります。ただし、指針は「リース会社ごとに見積の項目と形は違う」としているので、デポごとに見出しの言い方の一覧を持ちます。
| 問い合わせ(Text) | Alias |
|---|---|
| What is the unit number? | UNIT_NO |
| What is the labor rate? | LABOR_RATE |
| What is the estimate currency? | CURRENCY |
| What is the estimate number? | EST_NO |
**問い合わせには Pages: ["*"] を付けます。 ページを指定しないと既定で1ページ目だけに当てるとされ、2ページ目の見出しの項目が取れません。結果は NextToken が返る限り GetDocumentAnalysis を呼び続け、全ページ分をそろえてから組み立てます。**
AIへ渡す前に整形する
- 形式の確認 … JPEG、PNG、PDF、TIFF のどれかであることを確かめます。XFA の形式のPDFとパスワードで保護されたPDFは扱えないとされています
- コンテナ番号の確認 … 4文字の英字と6桁の数字と確認の数字の形かを確かめ、確認の数字を計算して照らします。合わない番号は、読み取りの誤りか見積の書き間違いとして人に回します
- 位置のコードの形の確認 … IICLの指針では、位置のコードは4文字で、1文字目が面(右側・左側・屋根・床・前面・扉・下部構造など)、2文字目が区画を表すとされています。形に合わないコードは、読み取りの誤りとして印を付けます
- 数字の確かめ … 工数×作業の単価が作業費と合うか、作業費+材料費が行の合計と合うかを、行ごとに計算します
- 手書きの追記の印 … 単語の TextType が手書きのものに印を付けます
2番目を軽く見ないでください。 番号を1文字読み違えると、別の利用者に貸し出したコンテナの見積として扱い、別の利用者に請求することになります。 確認の数字で読み取りの誤りの多くを止められます。
AIに処理させる
させるのは、コードの無い行と、コードと文が食い違う行に、自社のコードの表から候補を当てはめることだけです。
| させること | 中身 | できないときの扱い |
|---|---|---|
| コードの当てはめ | 作業の文を、コードの表の部位・損傷・修理のコードに当てはめる | 決められなければ unclear |
| 文とコードの食い違いの指摘 | コードがある行で、文がそのコードの説明と合わないものを指摘する | 判断できなければ指摘しない |
| 備考の区分 | 備考の文が、損傷の原因(荷役・貨物・事故)、通常の損耗、以前の修理の不良、のどれを書いているかを分ける | 決められなければ unclear |
| 根拠の文 | 当てはめと区分に使った文を、そのまま写す | 必ず埋める |
備考の区分は、負担者を決めるためではありません。 「forklift damage」と書かれていれば、損傷の原因として荷役を挙げたという事実を書き出すだけです。その損傷を利用者の負担とするかは、契約の条件と承認の担当が決めます。
| させないこと | 理由 |
|---|---|
| 工数・金額の計算 | プログラムが表を引いて計算する |
| 負担者の決定 | 契約の条件と承認の担当が決める |
| 承認・否認の判断 | 承認の担当が決める |
| コードの表に無いコードの提示 | 表に無いコードを作り出さない |
| 寸法や数量の補い | 書かれていない値を、修理の内容から推して埋めない |
5行目がいちばん起きやすい失敗です。 「Straighten side panel」とだけ書かれた行に、AIは一般的な寸法を補いがちです。標準の工数は寸法の範囲で決まるので、補った寸法で工数を引くと、過大な見積を見逃します。 寸法が無い行は、そのまま確かめどころにします。
指示内容を固定する
あなたはコンテナのリース会社で、海外のデポから届いた修理見積の行を
整理する担当者を手伝います。
渡された「行の一覧(行番号・部位・位置・損傷・修理のコード・作業の文・備考)」と
「コードの表(コード・説明・文での書き方の例)」だけを見てください。
【やること】
- コードの欄が空の行には、作業の文からコードの表の部位・損傷・修理のコードを選び、
suggested_codes に入れてください。
- コードがある行で、作業の文がそのコードの説明と明らかに合わない場合は、
code_text_conflict に true を入れてください。
- 備考の文について remark_type を次のどれかで付けてください。
handling ...... 荷役・フォークリフトなどによる損傷と書かれている
cargo ......... 貨物による損傷・汚れと書かれている
accident ...... 事故・衝突と書かれている
wear .......... 長年の使用による損耗・腐食と書かれている
prior_repair .. 以前の修理の不良と書かれている
none .......... 備考が無い
unclear ....... 上のどれかを文から決められない
- evidence に、判断に使った文をそのまま写してください。
【厳守事項】
- コードの表に無いコードを書かないでください。
- 工数や金額を計算しないでください。
- 寸法や数量が書かれていない行に、値を補わないでください。
- 利用者の負担か所有者の負担かを書かないでください。
- 迷ったときにコードを選ばないでください。unclear にしてください。
「利用者の負担か所有者の負担かを書かない」を明記しないと、AIは備考から負担者まで書きます。 「rust」とあれば所有者の負担と書きがちですが、錆の原因が貨物の液漏れなら、契約によっては利用者の負担です。 備考は事実の区分までにとどめます。
出力形式を固定する
AIの出力は、Claude API の構造化出力で形を決めて受けます。 公式のページでは、output_config.format に JSON スキーマを渡すと、スキーマに合う JSON が返るとされ、正式提供の機能です。コードは自社のコードの表の値を列挙した型にします。数値の minimum/maximum などの制約はスキーマに書けないとされているので、値の範囲はプログラムで確かめます。
{
"estimate_no": "D-SGP03/E-26-1182/R0",
"rows": [
{ "row_no": 4, "text": "Replace floor board 2 pcs",
"suggested_codes": { "component": "FLB", "damage": "BR", "repair": "RP" },
"code_text_conflict": false, "remark_type": "handling",
"evidence": "Replace floor board 2 pcs / forklift damage" }
]
}
プログラムは、これに照合の結果を足して点検の結果にします。
{
"unit_no": "ABCU1234560", "check_digit_ok": true,
"lessee": "L-0031", "labor_rate": { "estimate": 28.00, "agreed": 25.00 },
"lines": [
{ "row_no": 4, "party": "U", "hours": 2.0, "std_hours": 1.5,
"flags": [ "labor_rate_over", "hours_over_std", "ai_mapped_code" ] }
],
"totals_ok": true
}
形を分けるのは、当てはめと照合を別の層に置くためです。 rows はAIが埋め、lines の flags はプログラムが決めます。単価表や工数表を直しても、当てはめをやり直さずに照合だけやり直せます。
flags | 決め方(プログラム) |
|---|---|
| labor_rate_over | 見積の作業の単価が、デポとの取り決めより高い |
| material_over | 材料費が、材料の単価×数量より高い |
| hours_over_std | 工数が、標準の工数に自社で決めた幅を足した値より多い |
| ai_mapped_code | コードをAIが当てはめた行 |
| line_math | 工数×単価・作業費+材料費が、行の金額と合わない |
| party_check | 負担者が契約の条件や備考の区分と合わない(例:通常の損耗と書かれた行が利用者の負担) |
| no_dimension | 寸法の要る修理で寸法が無い |
| duplicate_line | 同じ部位・位置・修理の行が2つある |
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| Amazon S3 | 保存の通知で Lambda を動かす | デポをフォルダ、見積番号をファイル名で決める |
| AWS Textract | StartDocumentAnalysis/GetDocumentAnalysis | 表のセル・キーと値の組・問い合わせの答え・行・信頼度 |
| 貸出・返却の記録、取り決め、工数表、契約の条件 | 書き出したファイルを読む | 読み取りだけ |
| Claude API | API呼び出し(構造化出力) | コードの当てはめと備考の区分 |
| 承認の担当 | 点検の結果を共有の一覧に書き出し、チャットで知らせる | 確認、承認・否認の決定 |
機器の管理の仕組みとデポへの返事は、人が行います。 点検の結果がそのまま否認になると、取り決めの単価表が古かっただけの見積まで否認し、修理が止まってコンテナを貸し出せなくなります。
人が確認する
check_digit_okが false のものを先に見る … コンテナ番号を原本で確かめますparty_checkを確かめる … 返却の検査の記録と契約の条件を見て、負担者を決めますlabor_rate_over・material_over・hours_over_stdを確かめる … 超過を認めるか、否認するかを決めます。認めた理由を記録に残しますai_mapped_codeの行を原本で確かめる … 当てはめたコードが作業の文と合うかを見ます- デポに返事をする … 承認・一部の否認・出し直しの依頼を返します
例外に対処する
| 起きること | 対応 |
|---|---|
| パスワード付き・XFA のPDF | 読めない。デポに送り直してもらう |
| コンテナ番号の確認の数字が合わない | 照合を止め、原本で確かめる |
| 貸出・返却の記録に無いコンテナ | 別の会社のコンテナの見積が誤って届いた可能性。デポに確かめる |
| デポとの取り決めが一覧に無い | 単価の照合を止め、単価の確かめどころだけを外してほかの照合は行う |
| 見積の通貨が取り決めの通貨と違う | 換算せず人へ |
| 保険の制度の対象のコンテナで、行の負担者が利用者のまま | party_check。契約の上限と対象の範囲を見て、承認の担当が負担者を決める |
| 改訂の見積で、否認した行がそのまま残っている | 前の版の決定と照らし、同じ行に同じ印を付け直す |
| 6言語以外だけで書かれた見積 | 対応言語の外。人が読む |
4行目が、この構成で最も守りたいことです。 取り決めが無いデポの見積を、ほかのデポの単価で照らすと、それらしい超過の印が付き、正当な見積を否認することになります。 取り決めが無ければ単価の印を出しません。
記録を残す
- 修理見積の原本と、保存した場所(デポ・見積番号・改訂の番号)
- Textract が返した結果の全文と、組み立てた行の一覧
- AIの当てはめと備考の区分の結果、根拠の文
- 照合の結果(
flags)と、そのとき使った単価表・工数表・契約の条件の版 - 承認の担当の決定 … どの行を承認・否認し、超過を認めた理由は何か
- デポへの返事と、改訂の見積との対応
5つ目の記録は、承認の基準を文書にする材料になります。 超過を認めた理由が積み上がれば、どの程度の超過をどの条件で認めるかを、工数表の幅として決め直せます。
04実装レベルの3段階
半自動化で、1件18分が6分になり、この段階が本記事の想定です。 写す作業と表を引く作業は無くなり、人は印の付いた行と負担者の区分を確かめます。 本格構成は、承認の基準を工数表の幅として決め直してから検討します。 基準が担当者の経験に頼ったまま登録まで自動にすると、その時点の担当者の基準が固まってしまいます。
05工数削減シミュレーション
導入後 400件 × 6分 ÷ 60 = 40 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 海上コンテナを船会社やフォワーダーに貸し出し、返却を受けた世界各地のデポから修理見積が届くリース会社、または自社のコンテナを持つ船会社の機器の管理の部署。電子データの交換(EDI)に対応していない小さなデポから、PDFの修理見積が月に数百件届き、担当者が単価表と工数表を横に置いて1行ずつ確かめている場合。承認の基準が担当者の経験に頼っていて、同じ損傷でも担当者によって承認する金額が違う場合。
- 修理見積がすべて EDI の電子のデータ(修理見積のメッセージ)で届き、読み取りが要らない場合。月の見積が数十件で、目で確かめて足りる場合。見積が英語・フランス語・ドイツ語・イタリア語・ポルトガル語・スペイン語以外の言語だけで書かれている場合(この構成で使う読み取りのサービスはこの6言語に対応します)。なお、修理を承認するか、どこまでを利用者の負担として請求するかの判断は、修理を承認する担当とリースの契約の担当が行います。この構成は確かめる点を出すまでです。
07最小構成で試す方法
- 承認が終わった先月の修理見積から、デポの違う20件を選ぶ(うち数件は、コードの無い行のあるもの、否認したもの、負担者を直したものを入れる)
- AWS のコンソールで Textract の文書分析を開き、表とキーと値の読み取りを有効にして読み取る
- 読み取った表を表計算に書き出し、単価表・工数表を引く式を入れて照らす
- コードの無い行を手元のAIサービスに貼り、コードの表から当てはめさせる
- 照らした結果を、当時の承認の担当の判断と比べる
比べるのは「印」と「当時の判断」です。 当時否認した行に印が付いているか、当時承認した行に印が付きすぎていないかを見ます。
| 出てきた内容 | 判断 |
|---|---|
| 当時否認した行に印が付き、承認した行の印が少ない | 保存から照合までをつなぐ段階に進む |
承認した行に hours_over_std が多く付いた | 工数表の幅の問題。構成は有効 |
| AIが表に無いコードを当てはめた | 指示とスキーマの縛りで直す。構成は有効 |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 列の多い表で工数と金額の列がずれる | 列の見出しの言い方の一覧で列を決め、行ごとの計算で確かめる |
| コンテナ番号の読み違いで別の利用者に請求する | 確認の数字で確かめ、合わなければ照合を止める |
| 位置のコードの読み違い | 4文字の形と、面・区画の文字の決まりで確かめる |
| AIが寸法を補って工数を引いてしまう | 寸法の無い行は no_dimension にし、補わせない |
| AIが備考から負担者を決めてしまう | 備考は事実の区分までに縛る |
| 取り決めの無いデポで単価の印が付く | 取り決めが無ければ単価の印を出さない |
3行目は、IICLの指針の位置のコードの決まりで確かめられます。 指針では、側面・屋根・床・下部構造は、20フィートのコンテナで5つ、40フィートで10の区画に分けて番号を振り、損傷が1つの区画だけなら3文字目に区画の番号、4文字目に「N」を入れるとされています。「N」は4文字目にしか使えないともされています。この決まりに合わないコードは、読み取りか見積の誤りです。IICLは乾貨物のコンテナの技術の資料(修理の基準の改訂など)も公開しているので、工数表と承認の基準を見直すときの材料にします。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: コンテナ番号、利用者の名前、貸出と返却の記録、デポとの取り決めの単価、リースの契約の条件、修理の金額です。個人情報は少ないものの、取り決めの単価と契約の条件は取引の条件そのものです。
- 生成AIに渡す範囲を絞る … 当てはめには行の文とコードの表だけを渡します。単価、利用者の名前、契約の条件は渡しません
- 受け取りの場所の権限を絞る … S3 のフォルダは機器管理部と処理のプログラムだけが読めるようにし、結果は KMSKeyId を指定した暗号化で保存します
- 点検の結果をそのまま否認にしない … 承認の担当が確かめてからデポに返事をします
- 利用者への請求を自動にしない … 利用者の負担の行は、承認の担当が負担者を確かめてから請求の手続きに回します
- 負担者の区分をAIに決めさせない … 区分は契約の条件と返却の検査の記録で決まります
誤りが起きた場合のリスクは、過大な見積を承認して修理の費用が膨らむことと、利用者の負担の誤りで請求の取り逃がしや過大な請求が起きることの2つです。 前者は単価・工数の照合で、後者は負担者を人が決める設計で防ぎます。
10まず何から始めるか
1週目:工数表とコードの表を整える
件数の多い修理から、部位・修理のコード・寸法の範囲ごとの標準の工数を表にします。コードの表には、文での書き方の例を並べます。
2週目:20件で読み取りと照合を試す
デポの違う20件をコンソールで読み取り、表計算の式で単価表と工数表を引きます。列のずれと、コンテナ番号の読み違いが無いかを最優先で見ます。
3週目:印を当時の判断と比べる
当時否認した行と承認した行に、印がどう付くかを比べます。工数表の幅を決め直し、コードの当てはめの指示を直します。
4週目:保存から照合までをつなぐ
保存を起点に読み取り、行を組み立て、コードを当てはめ、照合するところまで作ります。最初は件数の多いデポ3か所から始めます。
2か月目: 対象のデポを増やし、印の種類ごとの件数を毎週数えます。3か月目以降: 1件18分が何分になったかを実測し、承認の基準を工数表の幅として文書にします。担当者が替わっても同じ基準で承認できるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 対応する形式が JPEG・PNG・PDF・TIFF で XFA の形式のPDFは扱えないこと。パスワードで保護されたPDFは扱えないこと。対応言語が英語・フランス語・ドイツ語・イタリア語・ポルトガル語・スペイン語で、手書きは英語だけであること。問い合わせは英語の文書だけであること | AWS: Set Quotas in Amazon Textract | 2026-10-15 |
| StartDocumentAnalysis の FeatureTypes に TABLES・FORMS・QUERIES があること。文書を S3 に置くこと。完了の状態が SNS に通知されること。ClientRequestToken で同じジョブの二重の開始を防げること。JobTag が通知に含まれること。KMSKeyId で結果を暗号化できること。JobId が7日間だけ有効であること | AWS: StartDocumentAnalysis | 2026-10-15 |
| GetDocumentAnalysis が表を TABLE と CELL、キーと値の組を KEY_VALUE_SET、問い合わせを QUERY と QUERY_RESULT、行と単語を LINE と WORD のブロックで返し、単語に手書きか印刷かの TextType が付くこと。NextToken でページを送ること | AWS: GetDocumentAnalysis | 2026-10-15 |
| 表のセルに行と列の位置が付くこと。セルに COLUMN_HEADER・TABLE_SUMMARY などの印が付くこと | AWS: Tables(Amazon Textract) | 2026-10-15 |
output_config.format に JSON スキーマを渡すとスキーマに合う JSON が返ること。正式提供の機能であること。数値の minimum/maximum などの制約に対応しないこと | Claude Docs: Structured outputs | 2026-10-15 |
| 負担者のコード(利用者 U・所有者 O・デポ D・保険の制度 I・第三者 T など)。位置のコードが4文字で、面と区画を表し、20フィートは5区画・40フィートは10区画で、「N」は4文字目だけに使うこと。見積の見出しと行の項目の推奨の形。リース会社ごとに見積の項目と形が違うこと。部位・損傷・修理のコードの組み合わせの推奨が ECS の文書にあること | IICL: TB 002 Preferred Electronic Data Interchange Standards(2022年5月12日改訂) | 2026-10-15 |
| IICLが乾貨物のコンテナの技術の資料(修理の基準の改訂など)を公開していること | IICL: Dry Van Technical Bulletins | 2026-10-15 |
修理を承認するか、どこまでを利用者の負担として請求するかは、リースの契約にもとづいて承認の担当と契約の担当が決めてください。 本記事は公開されている製品の仕様と資料で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1593)についてのご相談はこちらから。
