海外のストック素材サイトの英文のライセンス証書と請求書を読み取って素材台帳に転記し、期限切れ間近と範囲外の利用を拾う
海外のストック素材サイトから届く英文のライセンス証書と請求書を読み取り、素材ID・ライセンス種別・ライセンシー・期間・案件名を素材台帳に転記します。毎月、期限切れ間近のライセンスと、案件の使用計画が購入したライセンスの範囲を超えているものを拾います。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- AWS Textract/Azure AI/Google Document AI
- 連携・自動化
- Python
- 対象業界
- EC/小売/広告
- 対象部門
- マーケティング/知財
- 対象業務
- データ入力・転記/台帳・マスタ管理
- 主な課題
- 入力作業が多い/期限・対応漏れが起きる/確認ミスが多い
- AIで行う処理
- 抽出
- 主な効果
- 入力漏れ削減/工数削減/機会損失防止
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- デザイナーや制作進行の担当者が素材を購入し、証書と請求書のPDFを自分のフォルダに保存する
- 月末に知財の担当者が、各担当者に今月の購入分の証書を出してもらう
- 証書を1件ずつ開き、素材ID、ライセンス種別、ライセンシー、購入日、期間を台帳に写す
- 請求書を開き、金額と注文番号を台帳に写し、どの案件の費用かを制作進行に聞く
- 案件管理の仕組みで、その素材を使う案件の媒体・印刷部数・掲載期間を確かめる
- 期間のあるライセンスの終了日と、案件の掲載期間を見比べる
- 印刷部数や媒体がライセンスの条件を超えていないかを、サイトの規約を開いて確かめる
- 人購入した担当者が、証書と請求書のPDFを案件コード付きで受付フォルダに入れる(注文確認のメールを転送してもよい)
- 自動保存をきっかけに処理が動き、形式・ページ数・パスワードの有無を確かめる
- 自動OCRが証書と請求書の表、見出しのキーと値、信頼度を返す
- 自動素材ID・ライセンス種別・ライセンシー・購入日・期間・金額を取り出し、素材ごとの行にする
- 自動素材台帳の「仮登録」の行として書き込む
- 自動毎月1日に、台帳の全行を案件の使用計画とライセンス種別の条件表に照らし、印を付ける
- 人知財の担当者が、仮登録の行の印の付いたものだけを画像と見比べて確定する
- 人印の付いた計画を制作進行と確かめ、追加ライセンスの購入や計画の変更を決める
各工程の詳しい説明を読む
- デザイナーや制作進行の担当者が素材を購入し、証書と請求書のPDFを自分のフォルダに保存する
- 月末に知財の担当者が、各担当者に今月の購入分の証書を出してもらう
- 証書を1件ずつ開き、素材ID、ライセンス種別、ライセンシー、購入日、期間を台帳に写す
- 請求書を開き、金額と注文番号を台帳に写し、どの案件の費用かを制作進行に聞く
- 案件管理の仕組みで、その素材を使う案件の媒体・印刷部数・掲載期間を確かめる
- 期間のあるライセンスの終了日と、案件の掲載期間を見比べる
- 印刷部数や媒体がライセンスの条件を超えていないかを、サイトの規約を開いて確かめる
(a)台帳が埋まらない。 2番目の回収が月末に集中し、出てこない証書は台帳に載りません。台帳に無い素材は、6番目と7番目の確認の対象からも外れます。
(b)ライセンシーの名義が案件と合わない。 クライアントの代わりに買うのか、自社で使うのかで、証書の名義が変わります。名義が自社のまま、クライアントの自社サイトに素材が渡ることがあります。
(c)期間のあるライセンスに気づかない。 多くのストック素材は使用期限の無いライセンスですが、期間を定めて許諾される素材や、契約の期間に結び付いた音源もあります。 台帳に期間の列が無いと、掲載期間の延長で終了日を越えます。
(d)カンプの素材が最終の制作物に残る。 iStock では、電子透かし入りのコンテンツはテストやサンプルレイアウトに限って無料で使え、最終製品には使えず、使用期間もダウンロード後30日間のみとされています。本番の購入を忘れると、台帳にも証書にも残らない素材が制作物に入ります。
- 【人】 購入した担当者が、証書と請求書のPDFを案件コード付きで受付フォルダに入れる(注文確認のメールを転送してもよい)
- 【自動】 保存をきっかけに処理が動き、形式・ページ数・パスワードの有無を確かめる
- 【自動】 OCRが証書と請求書の表、見出しのキーと値、信頼度を返す
- 【自動】 素材ID・ライセンス種別・ライセンシー・購入日・期間・金額を取り出し、素材ごとの行にする
- 【自動】 素材台帳の「仮登録」の行として書き込む
- 【自動】 毎月1日に、台帳の全行を案件の使用計画とライセンス種別の条件表に照らし、印を付ける
- 【人】 知財の担当者が、仮登録の行の印の付いたものだけを画像と見比べて確定する
- 【人】 印の付いた計画を制作進行と確かめ、追加ライセンスの購入や計画の変更を決める
7番目が、この設計の分かれ目です。 担当者は420件を写すのではなく、読み取りの信頼度が低い行や、ライセンシーが案件と合わない行だけを画像と見比べます。 印の無い行は、一覧で流し見て確定します。
6番目の照合をAIにさせないのも、意図してのことです。 印刷部数の上限、エディトリアル専用か、期間の終了日。どれもライセンス種別の条件表と使用計画の比較で、AIには証書から値を取り出すところまでをさせます。
02今回想定するシステム構成
ライセンス証書・請求書(PDF。購入の画面または注文確認のメール) ▼【トリガー】受付フォルダ(Amazon S3)への保存 AWS Lambda ── 形式・ページ数・サイズ・パスワードの確認 ▼ AWS Textract(StartDocumentAnalysis:TABLES/FORMS) │ 素材の明細の表、見出しのキーと値、信頼度 ▼ Claude API ── 素材ごとの行にそろえる │ ① 素材IDと種類 ② ライセンス種別 ③ ライセンシー ④ 購入日と期間 ⑤ 金額 ▼ 素材台帳(仮登録) ▼【トリガー】毎月1日 Python ── 使用計画とライセンス種別の条件表に照らす ▼ 判定(ok / expiring / over_print / editorial_in_ad / licensee_mismatch / no_license / needs_human) ▼ 【知財の担当者が印の付いたものを確認】 └──▶ 制作進行と追加購入・計画の変更を決める
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | AWS Textract(StartDocumentAnalysis/GetDocumentAnalysis) | Azure AI Document Intelligence、Google Document AI |
| 生成AI | Claude API(素材ごとの行への整理、確認の文の下書き) | OpenAI API、Gemini API |
| 差異計算 | Python(使用計画と条件表との照合、期限の計算) | 案件管理の仕組みの集計の機能 |
| 連携 | AWS Lambda(保存と完了の通知、月次の照合を起点に処理を動かす) | Amazon EventBridge |
| 保管 | Amazon S3(証書、請求書、読み取り結果) | 共有ドライブ |
素材台帳と案件管理の仕組みは、新しく足すものではありません。 最初の準備は、素材台帳に「ライセンシー」「期間の終了日」「確定済みか」の列を足すことと、知財の担当者がライセンス種別の条件表を作ることです。
ライセンス種別の条件表が、この構成の中心です。 サイトごと・ライセンス種別ごとに、印刷部数の上限、再販用の製品に使えるか、ロゴや商標に使えるか、エディトリアル専用か、期間の有無を1行にします。条件は各サイトの使用許諾契約から知財の担当者が写すもので、AIに推測させません。 たとえば iStock の標準ライセンスなら、印刷は500,000回まで、カードやTシャツなど再販用の製品は不可、商標・ロゴの要素としての使用は不可、と書きます。
OCRに AWS Textract を選ぶのは、証書と請求書が英文だからです。 公式の上限の表で、対応言語は英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語とされ、日本語は読めません。 国内の素材サイトの日本語の証書は、この構成の対象から外します。
この題材で効くのは、表の読み取り(TABLES)です。 証書と請求書の多くは、素材ID、説明、ライセンス種別、金額を列に並べた表です。表はセルごとに行と列の番号と信頼度付きで返り、列見出し(COLUMN_HEADER)の種類が付くので、どの列が素材IDかを見出しから決められます。
03どうやって実装するのか
処理の起点を決める
起点は2つあります。証書が受付フォルダに入ったときと、毎月1日です。
1つ目は、受付フォルダ(Amazon S3)に証書と請求書が保存されたことです。購入した担当者が、ファイル名の先頭に案件コードを付けて入れます。注文確認のメールを専用のアドレスに転送すると添付が受付フォルダに入る仕組みも置き、購入した日のうちに台帳の仮登録まで進めます。 月末の回収をやめるのが目的です。
2つ目は、毎月1日の定時です。台帳の全行を、案件の使用計画とライセンス種別の条件表に照らします。月1回にしているのは、使用計画のほうが月の途中で動くためです。 印刷部数の増刷や掲載期間の延長は、購入の時点ではまだ決まっていません。
期間の終了日が60日以内に来る行は、毎週月曜にも一覧にします。 掲載の延長を決めるのに、月1回では遅いことがあります。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| ライセンス証書 | PDF。素材ID、説明、ライセンス種別、ライセンシー、購入日、期間 | 受付フォルダ(Amazon S3) |
| 請求書 | PDF。注文番号、日付、素材IDごとの金額、合計、通貨 | 受付フォルダ(Amazon S3) |
| 読み取り結果 | 表とセル、列見出し、キーと値、それぞれの信頼度 | AWS Textract |
| 使用計画 | 案件コード、クライアント、媒体、印刷部数、掲載の開始日と終了日、使う素材ID | 案件管理の仕組み |
| ライセンス種別の条件表 | サイトとライセンス種別ごとの印刷の上限、再販用の製品、商標・ロゴ、エディトリアル専用、期間 | 知財の担当者が作る表 |
| ライセンシーの名義の一覧 | 自社名とクライアント名の、証書に出てくる書き方 | 知財の担当者が作る一覧 |
質を決めるのは、ライセンス種別の条件表です。 証書に書かれたライセンス種別の名前(Standard License、Extended License など)を、条件表の行に対応付けて初めて、印刷部数や媒体と比べられます。条件表に無い種別は、照合をせずに人に回します。
使用計画に素材IDの列が無いと、照合は始まりません。 案件管理の仕組みに「使う素材ID」を入れる欄を足すのは、制作進行の側の準備です。
データの取得方法を決める
読み取りは StartDocumentAnalysis にS3の場所と FeatureTypes を渡して始めます。完了は NotificationChannel に指定した Amazon SNS のトピックに通知され、状態が SUCCEEDED なら GetDocumentAnalysis で結果を取ります。
| 指定するもの | 値 | 理由 |
|---|---|---|
FeatureTypes | TABLES、FORMS | 素材の明細の表と、注文番号・日付・ライセンシーの見出し |
ClientRequestToken | 案件コードとファイルのハッシュ | 同じ証書で二重に読み取りを始めない |
JobTag | 案件コード | 完了の通知から案件を引く |
表は、セルの行と列の番号で組み立て直します。 列見出しの付いたセルから、Asset ID、Description、License、Price の列を決め、行ごとに「素材ID・説明・ライセンス種別・金額」の組にします。 見出しの書き方はサイトで違うので、Image #、Item、Content ID のような別名を、サイトごとの列の対応表に持ちます。
1点ごとに1ページの証書は、表ではなくキーと値で返ります。 Licensee:、License Type:、Date: のキーと値を取り、ページごとに1行にします。表とキーと値のどちらで来るかはサイトで決まるので、サイトごとに読み方を切り替えます。
結果は1回最大1,000ブロックで区切られます。NextToken が返る限り呼び直し、まとめ買いの証書の後半のページが抜けないようにします。
使用計画は案件管理の仕組みからCSVで出し、条件表とあわせて Python が読みます。生成AIには渡しません。
AIへ渡す前に整形する
- 形式の確認 … JPEG、PNG、PDF、TIFF であることを確かめます。メール本文だけの注文確認は、PDFにして入れます
- パスワードの確認 … PDFはパスワードで保護されていてはいけないとされています
- サイズとページ数の確認 … 非同期の処理で、PDFとTIFFは500MB・3,000ページまでです
- 証書と請求書の組み合わせ … 注文番号で、同じ注文の証書と請求書を組にします
- 重複の検知 … 同じ注文番号と素材IDの組がすでに台帳にあれば、再ダウンロードの証書として印を付けます
- サイトの特定 … 送信元のドメインかファイル名から購入先を決め、列の対応表と読み方を選びます
4番目で組にならないものも、そのまま進めます。 証書だけ、請求書だけの行は、台帳で「片方が未着」と分かるようにしておき、月次の照合の前に担当者が足します。
5番目は、同じ素材を別の担当者が買い直していないかの手がかりにもなります。 注文番号が違って素材IDが同じなら、二重購入の可能性として一覧に出します。
AIに処理させる
させるのは、証書と請求書の読み取り結果を、素材ごとの台帳の行にそろえることです。 範囲に入るかの判断はさせません。
| 見るもの | 取り出し方 | 判断できないときの扱い |
|---|---|---|
| 素材ID | 原文のまま。先頭のゼロや記号を残す | 桁が欠けていれば unreadable |
| 素材の種類 | 写真・動画・イラスト・音源・フォントのどれか | 決まらなければ unknown |
| ライセンス種別 | 書かれた名前のまま | 書かれていなければ missing |
| ライセンシー | 書かれた名義のまま | 欄が無ければ not_stated |
| 購入日・期間 | 原文と、日付として確定できるときだけ解釈 | 順序が決まらない日付は ambiguous |
| 金額と通貨 | 素材IDごとの金額と通貨 | 合計しかなければ素材ごとの金額は空 |
| エディトリアル専用の表示 | 証書や説明に Editorial use only があるか | 判断できなければ unknown |
期間は、書かれているときだけ入れます。 多くの証書には期間の欄がありません。期間が書かれていないことを、無期限と書き換えさせません。 無期限かどうかは、条件表のライセンス種別の行が決めます。
エディトリアル専用の表示を拾うのは、範囲外の利用のいちばん大きな手がかりだからです。 iStock の使用許諾契約では、「エディトリアル専用」と表示されたコンテンツは、商業、販売促進、広告などの目的に使えないとされています。
| させないこと | 理由 |
|---|---|
| 使い方がライセンスの範囲に入るかの判断 | 知財の担当者が条件表と使用計画で判断する |
| ライセンス種別から条件を推測すること | 条件はサイトごとの契約にあり、知財の担当者が表にする |
| 期間の無い証書を無期限と書くこと | 無期限かは条件表の行が決める |
| 合計から素材ごとの金額を割り振ること | 請求の按分を誤る |
| 素材IDの桁や記号の補完 | 別の素材に結び付く |
2行目がいちばん起きやすい失敗です。 Standard License と書かれていると、一般的な知識から「印刷は○部まで」と条件を書き足そうとします。サイトごとに条件が違うので、書き足した瞬間に台帳が誤った条件を持ちます。
指示内容を固定する
あなたは広告会社の知財の担当で、海外のストック素材サイトのライセンス証書と
請求書を、素材台帳の行にそろえる担当です。
OCRの読み取り結果だけを使ってください。推測で埋めないでください。
【取り出す項目】
order:site、order_no、order_date_raw、order_date、licensee_raw、currency、total
assets:素材ごとに次を入れてください。
asset_id、asset_type(photo / video / illustration / music / font / unknown)、
description、license_type_raw、editorial_only(true / false / unknown)、
term_raw、term_start、term_end、price、status、source(ページと表の行)
【厳守事項】
- asset_id は書かれた文字列をそのまま入れてください。桁や記号を補わないでください。
- license_type_raw は書かれた名前のまま入れてください。
ライセンスの条件(印刷部数、媒体、期間など)を書き足さないでください。
- term_raw は期間が書かれているときだけ入れてください。
書かれていなければ空にし、「無期限」と書かないでください。
- 日付は日と月の順序が文面から決まるときだけ YYYY-MM-DD にし、
決まらなければ空にして status を ambiguous にしてください。
- 素材ごとの金額が書かれていなければ price を空にしてください。
合計から割り振らないでください。
- editorial_only は "Editorial use only" などの表示があるときだけ true にしてください。
- その使い方が許されるかを書かないでください。
- 証書でも請求書でもない書類は、項目を取り出さず document_type に種類を書いてください。
【読み取り結果】{textract_tables_and_forms}
【このサイトの列の対応表】{column_alias}
「条件を書き足さない」を明記しないと、書き足します。 ライセンス種別の名前だけを見て、一般的な知識から部数の上限や使える媒体を description に足して返し、その値が台帳に残ると、誰も条件表を見に行かなくなります。
出力形式を固定する
Claude API の構造化出力(output_config.format に json_schema を指定)で、次の形のJSONを受け取ります。
{
"file": "",
"project_code": "",
"document_type": "license_certificate",
"order": { "site": "", "order_no": "", "order_date_raw": "", "licensee_raw": "", "currency": "USD", "total": 0 },
"assets": [
{ "asset_id": "", "asset_type": "photo", "description": "",
"license_type_raw": "Standard License", "editorial_only": "false",
"term_raw": "", "term_end": "", "price": 0, "status": "ok", "source": "p1:T1:R3" }
]
}
1つ目の理由は、素材ごとの行がそのまま台帳の行になることです。 assets の1要素が台帳の1行で、注文番号と案件コードが付いて仮登録されます。
2つ目は、照合をプログラムの側に置けることです。 Python が毎月1日に、台帳の行と使用計画と条件表を突き合わせて印を付けます。
| 印 | 付ける条件 |
|---|---|
ok | 条件表に種別があり、使用計画の媒体・部数・期間が条件に収まる |
expiring | 期間の終了日が60日以内で、使用計画の掲載終了日がそれより後 |
over_print | 使用計画の印刷部数が、条件表の上限を超える |
editorial_in_ad | editorial_only が true で、使用計画の媒体が広告・販促 |
licensee_mismatch | ライセンシーが、自社名にも案件のクライアント名にも当たらない |
no_license | 使用計画に素材IDがあるのに、台帳に証書の行が無い |
needs_human | 条件表に無い種別、ambiguous、unreadable、unknown がある |
3つ目は、no_license を出せることです。 使用計画の側から素材IDを数えるので、証書が無いまま使われている素材、つまりカンプのまま残った素材が、台帳の外から見つかります。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 受付フォルダ(Amazon S3) | 保存の通知 | 証書と請求書の保存を検知して AWS Lambda を動かす |
| AWS Textract | API呼び出し(非同期) | 読み取りを始め、完了の通知で結果を取る |
| Claude API | API呼び出し | 素材ごとの行への整理、確認の文の下書き |
| 素材台帳 | 書き込み(仮登録の行) | 素材ごとの行と、照合の印を書く |
| 案件管理の仕組み | CSV出力の読み取り | 媒体・部数・掲載期間・素材IDを読む |
| ライセンス種別の条件表 | 読み取り | 種別ごとの条件を引く |
素材台帳には「仮登録」として書き込み、確定は人が行います。 確定済みの行を自動で書き換えることはしません。案件管理の仕組みにも書き込みません。 掲載期間や部数を変えるのは制作進行の判断です。
人が確認する
知財の担当者が開くのは、印の付いた行と、仮登録のうち信頼度の低い行です。 印の無い仮登録の行は、一覧で流し見て確定します。
needs_humanを先に片付ける … 条件表に無い種別は、そのサイトの契約を読んで条件表に1行足しますlicensee_mismatchの理由を確かめる … クライアントの代わりに買ったものか、自社で使うものかを購入した担当者に聞きますover_print、editorial_in_ad、expiringを制作進行と確かめる … 追加ライセンスの購入か、計画の変更か、素材の差し替えかを決めますno_licenseを最優先で止める … 証書の無い素材が入った制作物は、購入か差し替えが済むまで公開に回しません
4番目は、他の印より先に扱ってください。 証書が無いということは、ライセンスを持っていない可能性があるということです。
例外に対処する
| 起きること | 対応 |
|---|---|
| パスワードで保護されたPDF | 読めない。購入の画面から取り直す |
| 日本語の証書 | 読み取りに回さず、担当者が台帳に手で入れる |
| 表の列見出しが無い | 列の役割が決まらないので、needs_human にして人へ |
| 証書と請求書が組にならない | 片方が未着として台帳に残し、月次の照合の前に担当者が足す |
| 同じ素材IDを別の注文で購入 | 二重購入の可能性として一覧に出す |
| 条件表に無いライセンス種別 | 照合をせず、知財の担当者が条件表に足す |
ジョブが FAILED または PARTIAL_SUCCESS | StatusMessage と Warnings のページ番号を記録し、そのページを人へ |
| 使用計画に素材IDが入っていない | 照合できない案件として制作進行へ返す |
最後の行が、導入の初めの数か月でいちばん多く出ます。 使用計画に素材IDを入れる習慣が付くまでは、照合の対象そのものが欠けます。 件数を毎月数え、制作進行に返します。
記録を残す
- 元の証書と請求書、受け取った日時、案件コード、購入した担当者
- AWS Textract が返したJSONの全文
- Claude API が返したJSON(
orderとassetsの全行) - 月次の照合の結果と、そのとき使った条件表の版と使用計画の内容
- 担当者が仮登録を直した記録 … どの項目を、どう直したか
- 追加ライセンスの購入や素材の差し替えの決定と、その理由
条件表の版を残すのは、サイトの契約が改定されるためです。 購入した時点の条件で使っていたことを後から説明するには、当時の条件表と証書の両方が要ります。
04実装レベルの3段階
本記事の想定は半自動化です。 転記と照合が自動になり、担当者は印の付いた行を確かめて確定します。1件10分が4分になるのはこの段階です。 本格構成で足すのは、漏れの側の管理です。 担当者が受付フォルダに入れ忘れた証書は、半自動化では台帳に載りません。サイトの購入履歴と台帳を突き合わせれば、入れ忘れが分かります。 ただし、購入履歴を取り出せる方法はサイトごとに違うので、使えるかを先に確かめます。 段階を飛ばさないでください。 半自動化を2〜3か月回すと、条件表に無い種別と、ライセンシーの名義の書き方が出そろいます。そこを整えてから本格構成に進むほうが、needs_human が減ります。
05工数削減シミュレーション
導入後 420件 × 4分 ÷ 60 = 28 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 広告会社・制作会社や、自社で販促物を作るEC事業者・小売業で、海外のストックフォト・ストック動画・音源・フォントの販売サイトから毎月数百点のライセンスを購入している場合。ライセンス証書と請求書のPDFが担当者ごとのメールやダウンロード履歴に散らばり、素材台帳への転記が後回しになっている場合。同じ素材を複数の案件で使い回し、どの案件のどの媒体で使ってよいかを台帳で追いたい場合。
- ライセンス証書が日本語で発行される国内の素材サイトが中心の場合(この構成のOCRは英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語しか読めません)。購入が月に数点の場合。制作物の公開前に素材ごとの利用条件の条文を確かめたい場合(UC-0192 の構成が向きます)。なお、ある使い方がライセンスの範囲に入るかの判断と、追加ライセンスを買うかの判断は知財・法務の担当者が行うもので、この構成では代替できません。
07最小構成で試す方法
- 先月購入した素材から30件を選ぶ(エディトリアル専用のもの、ライセンシーがクライアント名のもの、まとめ買いの証書を必ず入れる)
- 手元の生成AIの画面に証書を1件ずつ貼り付け、「この証書の素材ID、ライセンス種別、ライセンシー、購入日、期間を、書かれたとおりに表にしてください。期間が書かれていなければ空欄にし、ライセンスの条件は書き足さないでください」と指示する
- 出てきた表を、素材台帳の該当の行(あれば)と見比べる
- 案件管理の仕組みの媒体と部数を、手で条件と見比べる
30件は必ずやってください。 仕組みを組む前に、ライセンスの条件を書き足さないか、期間の空欄を無期限と書かないかを確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 書かれたとおりに取り出した | OCRのAPIと台帳への仮登録に進む |
| 条件を書き足した | 指示で禁じる。直るまで先に進まない |
| 素材IDの桁を落とした | スキャンではなく購入の画面のPDFを使う。構成は有効 |
このとき、台帳に行が無い素材の数を数えてください。 30件のうち何件が台帳に無いかが、この構成でまず埋まる量の目安になります。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| ライセンス種別から条件を書き足す | 条件の書き足しを禁じ、条件は知財の担当者が作る表から引く |
| 期間の空欄を無期限と書く | 期間は書かれているときだけ。無期限かは条件表が決める |
| エディトリアル専用を見落とす | 表示の有無を項目にし、使用計画の媒体と照らす |
| ライセンシーが自社のままクライアントへ渡る | 名義の一覧で照らし、licensee_mismatch を付ける |
| カンプの素材が制作物に残る | 使用計画の側から素材IDを数え、no_license を出す |
| 担当者が受付フォルダに入れ忘れる | 注文確認のメールの転送で自動で入るようにする |
| 使用計画に素材IDが無い | 照合できない案件として毎月数えて返す |
| 列見出しの書き方がサイトで違う | サイトごとの列の対応表を持つ |
| 日本語の証書を読ませて失敗する | 6言語以外は読み取りに回さない |
| 合計しか無い請求書で金額を割り振る | 割り振りを禁じ、素材ごとの金額は空にする |
上の2行が、この構成の失敗のほとんどです。 どちらも「書かれていない条件を、AIがそれらしく埋める」誤りです。台帳が持つ条件は、知財の担当者が契約から写した表からだけ来る、という一点を守ります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 購入した素材の一覧、注文番号と金額、ライセンシーの名義、そして案件のクライアント名と媒体・掲載期間です。公表前のキャンペーンの情報を含みます。
- 素材そのものを生成AIに渡さない … 渡すのは証書と請求書の読み取り結果だけです。iStock の使用許諾契約では、明示的に許可する場合を除き、コンテンツ(キャプション、キーワード、メタデータを含む)を機械学習や人工知能に関連する用途に使えないとされています。素材の画像や音源は、この構成の入力にしません
- 範囲に入るかを判定させない … この構成が出すのは照合の印までで、判断と追加ライセンスの購入は知財の担当者が決めます
- 公表前の案件の情報を外部へ出しすぎない … 使用計画は Python の照合にだけ使い、生成AIには渡しません
- アカウントの共有をしない … iStock の標準ライセンスや定額使用契約は単一ユーザー用とされています。受付フォルダに証書を集めても、購入のアカウントを共有してよいことにはなりません
- 条件表を書き換える権限を限る … 条件表の1行が、その種別のすべての照合の結果を変えます。変更は知財の担当者が行い、版を残します
誤りが起きた場合のリスクは、ライセンスの範囲を超えて素材を使ってしまうことです。 多くは条件の書き足しと、台帳に載らない素材から起きるので、条件は表から引き、素材は使用計画の側から数える設計を崩さないでください。
10まず何から始めるか
1週目:ライセンス種別の条件表を作る
購入の多い3つのサイトについて、使っているライセンス種別を洗い出し、印刷の上限、再販用の製品、商標・ロゴ、エディトリアル専用、期間の有無を1行ずつ表にします。各サイトの使用許諾契約から、知財の担当者が写します。
2週目:30件で試す
先月の証書から30件を選び、手元の生成AIの画面で素材ごとの表を作らせます。条件を書き足さないか、期間の空欄を無期限と書かないかを最優先で見ます。
3週目:受付フォルダと使用計画の欄を決める
ファイル名の付け方(案件コードを先頭に)と、注文確認のメールの転送先を決めます。案件管理の仕組みに「使う素材ID」の欄を足し、制作進行と入れ方を決めます。
4週目:受付フォルダから仮登録までをつなぐ
S3、Lambda、Textract、Claude API をつなぎ、素材台帳に仮登録の行を書き込むところまで作ります。この時点では月次の照合を動かさず、仮登録の行の正しさだけを見ます。
2か月目: 毎月1日の照合を動かし、needs_human と no_license の件数を毎週数えます。3か月目以降: 期間の終了日の週次の一覧を足し、1件10分が何分になったかを実測します。台帳に載っていない素材が、制作物に入る前に見つかるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 標準ライセンスと追加ライセンスがあること。追加ライセンスを購入しない場合、物理的な印刷物で500,000回を超えて複製できないこと。再販用の製品(カード、Tシャツ、ポスターなど)と電子テンプレートへの使用、商標・ロゴの要素としての使用が制限されること。「エディトリアル専用」のコンテンツは商業・販売促進・広告などに使えないこと。電子透かし入りのコンテンツはカンプに限り、最終製品に使えず、使用期間がダウンロード後30日間であること。標準ライセンスと定額使用契約が単一ユーザー用であること。雇用主やクライアントの代理で購入した場合の扱い。コンテンツを機械学習や人工知能に関連する用途に使えないこと | iStock: 使用許諾契約 | 2026-10-07 |
| 対応する形式がJPEG、PNG、PDF、TIFFであること。同期はPDF1ページ・10MB、非同期はPDFとTIFFで500MB・3,000ページであること。PDFはパスワードで保護できないこと。対応言語が英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語であること | AWS: Set Quotas in Amazon Textract | 2026-10-07 |
StartDocumentAnalysis の FeatureTypes(TABLES/FORMS ほか)、ClientRequestToken、JobTag、NotificationChannel で Amazon SNS に完了を通知すること | AWS: StartDocumentAnalysis | 2026-10-07 |
GetDocumentAnalysis の JobStatus(SUCCEEDED/FAILED/PARTIAL_SUCCESS ほか)、MaxResults(最大1,000)と NextToken、StatusMessage、Warnings | AWS: GetDocumentAnalysis | 2026-10-07 |
| 表がセル、結合セル、表題、脚注のブロックで返り、セルが行・列の番号と信頼度を持ち、列見出し(COLUMN_HEADER)などの種類が付くこと | AWS: Tables | 2026-10-07 |
構造化出力を output_config.format に json_schema を指定して受け取れること | Claude Docs: Structured outputs | 2026-10-07 |
ライセンスの条件はサイトとライセンス種別ごとに違い、改定されることがあります。 本記事は iStock の使用許諾契約で確認できた範囲を例にしており、ほかのサイトの条件は各サイトの契約で確かめてください。使い方が範囲に入るかの判断は知財・法務の担当者が行います。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0707)についてのご相談はこちらから。
