音楽出版社が海外のサブパブリッシャー・著作権管理団体から届く英文の分配明細を読み取り、楽曲ごと・作家ごとの分配額を支払の台帳に転記して、楽曲コードの不一致を拾う
海外のサブパブリッシャーや著作権管理団体から届く英文の分配明細を読み取り、楽曲ごとの収入の種類・総額・手数料・税額・手取りを行にそろえます。自社の楽曲台帳と作品コードで照らし、作家ごとの分配額の下書きを支払の台帳に起こして、照合できない楽曲とコードの食い違いを拾います。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- AWS Textract/Azure AI/Google Document AI
- 連携・自動化
- Python
- 対象業界
- その他
- 対象部門
- 経理
- 対象業務
- データ入力・転記/台帳・マスタ管理
- 主な課題
- 入力作業が多い/属人化している/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/属人化解消/工数削減
- 導入難易度
- ★★★★☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 届いた分配明細のPDFを、相手方と対象期間ごとのフォルダに保存する
- 明細の楽曲ごとの行を、表計算のひな形に1行ずつ写す
- 相手方の楽曲コード・題名・作家名から、自社の楽曲台帳で楽曲を探して楽曲コードを付ける
- 見つからない行は「未照合」として別の表に移す
- 作家との契約の分配率を見て、作家ごとの分配額を計算する
- 行の合計と明細の合計を比べ、合わなければ写し間違いを探す
- 支払の台帳に作家ごとの分配額を転記する
- 人印税の担当が、届いた分配明細のPDFを相手方ごとの受け取りの場所(Amazon S3)に保存する
- 自動保存をきっかけに、AWS Textract が表と項目の読み取りを非同期で始める
- 自動プログラムが表のセルから楽曲ごとの行を組み立て、行の合計と明細の合計を確かめる
- 自動Claude API が、収入の種類の書き方を自社の区分に当てはめる
- 自動プログラムが、ISWC、相手方の楽曲コードの対応表、題名と作家名の完全一致の順で楽曲台帳と照らす
- 自動決まらなかった行について、プログラムが台帳から候補を5件まで絞り、Claude API が根拠を付けて1件を選ぶか「該当なし」と返す
- 自動プログラムが、作家との契約の分配率で作家ごとの分配額の下書きを作り、確かめる点を出す
- 人印税の担当が、AIが選んだ候補とコードの食い違いを先に見て、照合を確定する
- 人確定した下書きを支払の台帳に登録し、未照合の行は相手方への照会の一覧に回す
各工程の詳しい説明を読む
- 届いた分配明細のPDFを、相手方と対象期間ごとのフォルダに保存する
- 明細の楽曲ごとの行を、表計算のひな形に1行ずつ写す
- 相手方の楽曲コード・題名・作家名から、自社の楽曲台帳で楽曲を探して楽曲コードを付ける
- 見つからない行は「未照合」として別の表に移す
- 作家との契約の分配率を見て、作家ごとの分配額を計算する
- 行の合計と明細の合計を比べ、合わなければ写し間違いを探す
- 支払の台帳に作家ごとの分配額を転記する
(a)写すだけで時間がかかる。 1件の明細に数百行あることもあります。相手方の仕組みから出したPDFは、文字が細かく、ページをまたいで表が続きます。 写し間違いがあると6番目の合計で合わず、どの行が違うかを探し直します。
(b)楽曲を探すのに時間がかかる。 「Kimi no Uta」「KIMI NO UTA (TV SIZE)」「君の歌」は同じ楽曲かもしれず、別の楽曲かもしれません。作家名もローマ字の書き方が揺れ、名字と名前の順も相手方ごとに違います。 経験の長い担当者は相手方ごとの書き方の癖を知っていますが、その知識は担当者の頭の中にしかありません。
(c)未照合の行が積み上がる。 探しても見つからない行は別の表に移しますが、次の明細の処理に追われて、照会されないまま残ります。 分配額が作家に届かず、相手方の側でも別の権利者に誤って登録されているかもしれません。
(d)コードの食い違いに気づきにくい。 相手方の明細のISWCが自社の台帳のISWCと違う、自社の持分が台帳の持分と違う、という行は、題名で照合できた時点で目が先に進み、見落とします。
- 【人】 印税の担当が、届いた分配明細のPDFを相手方ごとの受け取りの場所(Amazon S3)に保存する
- 【自動】 保存をきっかけに、AWS Textract が表と項目の読み取りを非同期で始める
- 【自動】 プログラムが表のセルから楽曲ごとの行を組み立て、行の合計と明細の合計を確かめる
- 【自動】 Claude API が、収入の種類の書き方を自社の区分に当てはめる
- 【自動】 プログラムが、ISWC、相手方の楽曲コードの対応表、題名と作家名の完全一致の順で楽曲台帳と照らす
- 【自動】 決まらなかった行について、プログラムが台帳から候補を5件まで絞り、Claude API が根拠を付けて1件を選ぶか「該当なし」と返す
- 【自動】 プログラムが、作家との契約の分配率で作家ごとの分配額の下書きを作り、確かめる点を出す
- 【人】 印税の担当が、AIが選んだ候補とコードの食い違いを先に見て、照合を確定する
- 【人】 確定した下書きを支払の台帳に登録し、未照合の行は相手方への照会の一覧に回す
5番目と6番目を分けているのが、この設計の分かれ目です。 ISWCや相手方のコードで決まる行は、規則で決めたほうが確実です。生成AIに渡すのは、コードで決まらなかった行だけです。 全部の行をAIに照合させると、コードで決まるはずの行まで題名の似た別の楽曲に当てる危険が増え、費用も行数に比例して増えます。
6番目で「該当なし」を選べるようにしているのは、台帳に無い楽曲が本当にあるからです。 相手方の登録の誤りで、他社の楽曲が自社の明細に載ることがあります。候補の中から必ず1件を選ばせると、その行が自社の作家に分配されます。
02今回想定するシステム構成
分配明細(英文のPDF。サブパブリッシャー・管理団体から届く) │ 印税の担当が相手方ごとの場所へ保存 ▼【トリガー】Amazon S3 への保存 AWS Lambda ── StartDocumentAnalysis(FeatureTypes:TABLES、QUERIES) ▼ AWS Textract(非同期の文書分析)── 完了の通知(Amazon SNS) ▼ AWS Lambda ── GetDocumentAnalysis ├──▶ Python:表のセルから楽曲ごとの行を組み立て、合計を確かめる ├──▶ Claude API:収入の種類の区分 ├──▶ Python:ISWC・相手方のコード・題名と作家名で楽曲台帳と照合 ├──▶ Claude API:決まらなかった行の候補選び(根拠付き) └──▶ Python:契約の分配率で作家ごとの分配額を計算 ▼ 支払の台帳の下書きと確認事項の一覧(印税の担当が確認) ▼ 支払の台帳への登録(人)/相手方への照会の一覧
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | AWS Textract(StartDocumentAnalysis/GetDocumentAnalysis。TABLES・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 の表の機能は、セルごとに行の番号と列の番号を返し、列の見出し・小見出し・合計の行のセルを区別する印を付けるとされています。数十ページの明細があるので、非同期の StartDocumentAnalysis を使います。
Textract を選べるのは、分配明細が欧米の言語で書かれているからです。 公式の対応言語は英語・フランス語・ドイツ語・イタリア語・ポルトガル語・スペイン語で、問い合わせ(クエリ)は英語の文書でだけ使えます。欧州の管理団体からフランス語やドイツ語の明細が届いても表は読めますが、問い合わせは使えません。 アジアの相手方の明細で現地語だけのものは対象の外です。
楽曲台帳と会計の仕組みには書き込みません。 支払の台帳への登録も、印税の担当が確かめてから行います。
03どうやって実装するのか
処理の起点を決める
相手方ごとの受け取りの場所(S3 のフォルダ)にPDFが保存されたことを起点にします。 フォルダは royalty/<相手方コード>/<対象期間>/ の形にし、どの相手方・どの期間の明細かを、保存した場所で決めます。 明細の表紙の社名から相手方を決めると、同じグループの別の国の会社と取り違えます。
読み取りを始めるとき、ClientRequestToken に「相手方コード+対象期間+ファイルの番号」を入れます。 公式のページでは、同じトークンで StartDocumentAnalysis を呼ぶと同じ JobId が返り、同じジョブを誤って二度始めるのを防げるとされています。同じ明細を二度保存しても、分配が二重になりません。
完了は Amazon SNS の通知で受け、JobTag に入れた相手方コードと対象期間で、どの明細かを知ります。 JobId は7日間だけ有効なので、結果は受け取ったその場で S3 に保存します。
修正版の明細が後から届くことがあります。 同じ相手方・対象期間のフォルダに2つ目のファイルが入ったら、前の下書きを無効にせず並べ、行ごとの違いを確認事項に出します。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 分配明細 | 相手方、対象期間、地域、通貨、楽曲ごとの行(相手方の楽曲コード・ISWC・題名・作家名・持分・収入の種類・総額・手数料・税額・手取り)、合計 | 相手方から届くPDF |
| 読み取り結果 | 表のセル(行・列・見出し・合計の印)、問い合わせの答え、行と単語、信頼度 | AWS Textract |
| 楽曲台帳 | 自社の楽曲コード、題名(原題・英語の題名・別の表記)、作家と役割、持分、ISWC | 楽曲台帳から書き出したファイル |
| 相手方の楽曲コードの対応表 | 相手方ごとの楽曲コードと自社の楽曲コードの組 | 過去の照合の結果から育てる表 |
| 契約の分配率 | 楽曲ごと・作家ごと・収入の種類ごとの分配率 | 契約の担当が整える一覧 |
| 収入の種類の区分の表 | 自社の区分(演奏・録音・配信・映像への使用・その他)と、相手方の書き方の例 | 自社で用意する表 |
質を決めるのは、相手方の楽曲コードの対応表です。 一度照合を確定した行は、相手方のコードと自社のコードの組として対応表に足します。次の月からは同じ楽曲がコードで決まり、AIに渡す行が減っていきます。
契約の分配率の一覧には、有効な期間も持たせます。 作家との契約が更新されて分配率が変わったとき、明細の対象期間が更新の前なら前の分配率で計算する必要があるからです。明細が届く日ではなく、明細の対象期間で分配率を選びます。 海外の分配は利用からかなり時間をおいて届くので、届いた日で選ぶと分配率を取り違えます。
ISWCは、楽曲台帳の側でも履歴を持ちます。 ISWCの公式のページでは、ISWCは楽曲(作品)を識別する番号で、録音や楽譜などは識別しないとされています。また、誤って割り当てられたISWCは、後から統合や分離ができるとされています。台帳のISWCが変わることがあるので、古いISWCでも引けるようにします。
データの取得方法を決める
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 楽曲ごとの行 | TABLES の TABLE・CELL のブロック(行の番号・列の番号・列の見出し) | 楽曲ごとの行の組み立て |
| 小見出しの行 | TABLE_SECTION_TITLE の印の付いたセル | 収入の種類や地域で区切られた明細の区切り |
| 合計の行 | TABLE_SUMMARY の印の付いたセル | 行の合計との照らし合わせ |
| 対象期間・通貨・合計・源泉の税額 | QUERIES の QUERY_RESULT | 明細の見出しの情報 |
表は、TABLE のブロックから CELL を行の番号・列の番号の順に並べて組み立てます。 公式のページでは、セルには行と列の位置が付き、列の見出し・小見出し・合計の行のセルにはそれぞれ COLUMN_HEADER・TABLE_SECTION_TITLE・TABLE_SUMMARY の印が付くとされています。小見出しの文字(たとえば「PERFORMANCE」「MECHANICAL」)は、その下の行の収入の種類として引き継ぎます。合計の行を楽曲の行として数えると、分配が二重になります。
**問い合わせは、表の外にある項目だけに使い、Pages: ["*"] を付けます。 公式のページでは、ページを指定しないと既定で1ページ目だけに当てる**とされています。合計と源泉の税額は最後のページにあることが多いからです。
| 問い合わせ(Text) | Alias |
|---|---|
| What is the statement period? | PERIOD |
| What is the currency? | CURRENCY |
| What is the total amount payable? | TOTAL_PAYABLE |
| What is the withholding tax amount? | WHT |
結果は NextToken が返る限り GetDocumentAnalysis を呼び続け、全ページ分をそろえてから組み立てます。 公式のページでは、1回で返るブロックは最大1,000件とされています。数十ページの明細では何十回にも分かれます。
AIへ渡す前に整形する
- 形式の確認 … JPEG、PNG、PDF、TIFF のどれかであることを確かめます。XFA の形式のPDFとパスワードで保護されたPDFは扱えないとされています
- ページをまたぐ表のつなぎ … 列の見出しが同じ表は、1つの表としてつなぎます。小見出しはページをまたいで引き継ぎます
- 金額の読み方 … 小数点がカンマかピリオドかを相手方ごとの設定で読み分け、「(12.40)」「-12.40」を負の数として読みます
- 行の合計の確かめ … 楽曲ごとの手取りの合計が、明細の合計と一致するかを確かめます。一致しなければ下書きを作らず、人に回します
- 題名と作家名の正規化 … 大文字と小文字、記号、括弧の中の「TV SIZE」「INST」などを外した形を別に作ります。元の文字列も残します
- ISWCの形の確かめ … 「T」に続く9桁と確認の数字の形になっているかを確かめます。形が違うものはコードとして使いません
4番目を軽く見ないでください。 写し間違いや行のずれは、合計の不一致として必ず表に出ます。合計が合わないまま照合と計算に進むと、どこかの作家の分配が増え、別の作家の分配が減ります。 合計が合ってから先に進みます。
AIに処理させる
させるのは2つだけです。 収入の種類の書き方を区分に当てはめることと、コードで決まらなかった行に、渡された候補の中から楽曲を選ぶことです。
| させること | 中身 | できないときの扱い |
|---|---|---|
| 収入の種類の区分 | 「PERF RADIO」「MECH DSP」のような書き方を、自社の区分(演奏・録音・配信・映像への使用・その他)に当てはめる | 決められなければ unclear |
| 楽曲の候補選び | 行の題名・作家名・持分と、プログラムが絞った台帳の候補5件を見比べ、1件を選ぶか none を返す | 決められなければ none |
| 根拠 | 一致した点と、違う点を書く | 必ず埋める |
候補選びでは、作家名の一致を題名の一致より重く見させます。 同じ題名の楽曲は台帳に何曲もありますが、題名と作家の両方が一致する楽曲は、ほとんどの場合1曲です。 作家名が1人も一致しない候補は、題名が同じでも選ばせません。
| させないこと | 理由 |
|---|---|
| 金額の計算と合計 | プログラムが読み取った値から計算する |
| 作家ごとの分配額 | 契約の分配率で計算の規則が決める |
| 候補の外の楽曲を挙げること | 台帳に無い楽曲を作り出さない |
| 持分の食い違いの扱いの結論 | 相手方への照会で決まる |
| ISWCの補い | 書かれていないISWCを、台帳の値で埋めて明細の値として扱わない |
3行目がいちばん起きやすい失敗です。 候補に当てはまるものが無いとき、AIは「おそらく○○という楽曲」と台帳の外の題名を書きがちです。選べるのは渡した候補の番号と none だけにし、出力の形で縛ります。
指示内容を固定する
あなたは音楽出版社の印税の担当者を手伝い、海外から届いた分配明細の行に
自社の楽曲台帳の楽曲を当てる作業をします。
渡された「明細の行(題名・作家名・持分・相手方の楽曲コード)」と
「候補の楽曲(候補番号・題名・別の表記・作家と役割・持分)」だけを見てください。
【やること】
- 行ごとに、候補の中から同じ楽曲を1件選び、candidate_no に入れてください。
- 同じ楽曲と判断できる候補が無ければ、candidate_no に "none" を入れてください。
- matched_points に一致した点(題名・作家名・持分)を、
mismatched_points に違う点を書いてください。
【厳守事項】
- 作家名が1人も一致しない候補は、題名が同じでも選ばないでください。
- 作家名は、名字と名前の順の違いとローマ字の書き方の違いを同じとみなしてよいです。
ただし、別の人の名前に読み替えないでください。
- 候補に無い楽曲の題名を書かないでください。
- 金額や持分の計算をしないでください。
- 迷ったときに候補を選ばないでください。"none" にしてください。
- 括弧の中の「TV SIZE」「INST」「REMIX」などは、同じ楽曲の別の版として扱ってよいです。
ただし、自社の台帳でそれが別の楽曲として登録されている候補があれば、その候補を選んでください。
「作家名が1人も一致しない候補は選ばない」を書くのは、題名の一致に引っ張られるからです。 「Sakura」の行に「Sakura」の候補が3件あると、AIは作家名の違いを「ローマ字の揺れ」と読み替えて選びがちです。作家名の一致を必須の条件として先に書きます。
括弧の中の版の扱いを書くのは、台帳の登録の仕方が会社ごとに違うからです。 版ごとに別の楽曲として登録している会社では、元の楽曲に当てると分配率がずれます。
出力形式を固定する
AIの出力は、Claude API の構造化出力で形を決めて受けます。 公式のページでは、output_config.format に JSON スキーマを渡すと、スキーマに合う JSON が返るとされ、正式提供の機能です。candidate_no は候補番号と none だけを列挙した値にします。数値の minimum/maximum などの制約はスキーマに書けないとされているので、値の範囲はプログラムで確かめます。
{
"statement_id": "royalty/SP-FR/2026H1/1",
"matches": [
{ "row_no": 212, "candidate_no": "2",
"matched_points": ["題名 SAKURA NO UTA", "作家 YAMADA TARO(作曲)"],
"mismatched_points": ["作詞者の記載なし"] },
{ "row_no": 213, "candidate_no": "none",
"matched_points": ["題名 SAKURA"],
"mismatched_points": ["作家名が候補のどれとも一致しない"] }
]
}
プログラムは、これに照合の方法と分配の計算を足して下書きにします。
{
"row_no": 212, "work_code": "W-004518", "match_method": "ai_candidate",
"income_type": "performance", "net": 84.20, "currency": "EUR",
"allocations": [
{ "writer_id": "A-0091", "role": "composer", "rate": 0.5, "amount": 42.10 },
{ "writer_id": "A-0144", "role": "lyricist", "rate": 0.5, "amount": 42.10 }
],
"checks": [ "lyricist_missing_on_statement" ]
}
match_method を残すのは、照合の確かさが方法で違うからです。 iswc と partner_code で決まった行は流し見で足り、ai_candidate の行は人が確かめます。
checks | 決め方(プログラム) |
|---|---|
| unmatched | AIが none を返した、または候補が絞れなかった |
| iswc_mismatch | 明細のISWCと台帳のISWCが違う |
| share_mismatch | 明細の自社の持分と台帳の持分が違う |
| total_mismatch | 行の合計と明細の合計が合わない |
| no_contract_rate | 楽曲または収入の種類の分配率が一覧に無い |
| duplicate_line | 同じ楽曲・期間・地域・収入の種類の行が、別の明細にもある |
| revised_statement | 同じ相手方・期間の修正版がある |
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| Amazon S3 | 保存の通知で Lambda を動かす | 相手方と期間をフォルダで決める |
| AWS Textract | StartDocumentAnalysis/GetDocumentAnalysis | 表のセル・問い合わせの答え・行・信頼度 |
| 楽曲台帳・契約の分配率 | 書き出したファイルを読む | 読み取りだけ |
| Claude API | API呼び出し(構造化出力) | 収入の種類の区分と候補選び |
| 印税の担当 | 下書きと確認事項を共有の場所に置き、チャットで知らせる | 確認、照合の確定、支払の台帳への登録 |
楽曲台帳には書き込みません。 ISWCや持分の食い違いが見つかっても、台帳を直すのは楽曲の登録の担当で、相手方への照会の結果を待ってからです。 明細の値で台帳を上書きすると、相手方の誤りが自社の台帳に入ります。
相手方の楽曲コードの対応表だけは、確定した照合から足します。 足すのは印税の担当が確定した行だけで、AIの候補のまま足しません。
人が確認する
total_mismatchを先に見る … 合計が合わない明細は、行のずれか読み取りの誤りです。原本で確かめますai_candidateの行を確かめる …matched_pointsとmismatched_pointsを読み、台帳で確かめて確定しますunmatchedを照会の一覧に回す … 相手方に、楽曲の登録の内容を問い合わせますiswc_mismatchとshare_mismatchを楽曲の登録の担当に渡す … 台帳と相手方の登録のどちらが正しいかを確かめます- 支払の台帳に登録する … 確定した下書きだけを登録します。作家への支払は会計の手続きで行います
例外に対処する
| 起きること | 対応 |
|---|---|
| パスワード付き・XFA のPDF | 読めない。相手方に送り直してもらう |
| 行の合計と明細の合計が合わない | 下書きを作らず人へ。合うまで計算に進まない |
| 分配率が一覧に無い楽曲 | 金額を出さず no_contract_rate。契約の担当へ |
| 負の金額の行(前の分配の取り消し) | そのまま負の分配として計算し、元の分配の行を探す材料を出す |
| 修正版の明細が届く | 前の下書きと並べ、行ごとの違いを出す |
| 源泉の税額が明細の合計だけに書かれる | 行に割り振らず、明細の単位で持つ。作家ごとの割り振り方は経理と税理士が決める |
| 明細の通貨と送金の通貨が違う | 換算せず明細の通貨のまま下書きを作り、換算は入金の記録が届いてから経理が行う |
| 現地語だけの明細 | 対応言語の外。人が写す |
3行目が、この構成で最も守りたいことです。 分配率が分からないまま「作曲と作詞で半分ずつ」と仮に計算すると、それらしい数字が支払の台帳に入り、そのまま作家に払われます。 分配率が無いときは金額を出しません。
記録を残す
- 分配明細の原本と、保存した場所(相手方・対象期間・版)
- Textract が返した結果の全文と、組み立てた行の一覧
- AIの出力(収入の種類の区分、候補選びの結果と根拠)
- 印税の担当が確定・変更した照合 … どの行を、どの楽曲に、なぜ当てたか
- 計算に使った分配率と、作家ごとの分配額の下書き
- 照会の一覧に回した行と、相手方からの回答
4つ目の記録は、相手方の楽曲コードの対応表と指示の改善に使います。 AIの候補を人が変えた行が多い相手方は、題名の書き方に癖があります。
04実装レベルの3段階
半自動化で、1件50分が15分になり、この段階が本記事の想定です。 写す作業とコードで決まる照合は無くなり、人はAIの候補と食い違いを確かめます。 相手方の楽曲コードの対応表が育つほど、人が見る行は減っていきます。 本格構成は、楽曲台帳を仕組みで持っている会社で検討します。 ただし、その前に対応表と分配率の一覧を半年回して整えておく必要があります。
05工数削減シミュレーション
導入後 60件 × 15分 ÷ 60 = 15 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 邦楽の楽曲を数千曲以上管理し、海外のサブパブリッシャーや著作権管理団体から英文の分配明細がPDFで毎月数十件届く音楽出版社。印税の担当が明細の行を表計算に写し、題名で自社の楽曲台帳を探して作家ごとの分配額を手で計算している場合。題名の英語の表記や作家名のローマ字の書き方の違いで楽曲を探すのに時間がかかり、どの楽曲がどの明細で照合できなかったかが担当者の頭の中にしかない場合。
- 海外からの分配明細が月に数件で、目で写して足りる場合。相手方から分配明細が電子のデータ(表計算や決められた形式のファイル)で届き、読み取りが要らない場合。分配明細が英語・フランス語・ドイツ語・イタリア語・ポルトガル語・スペイン語以外の言語だけで書かれている場合(この構成で使う読み取りのサービスはこの6言語に対応します)。なお、照合できなかった楽曲の分配をどう扱うか、相手方に照会するか、作家にいくら支払うかの判断は、印税の担当と契約の担当が行います。この構成は支払の台帳の下書きと確かめる点を出すまでです。
07最小構成で試す方法
- 処理が終わった過去の分配明細から、相手方の違う5件を選ぶ(うち1件は、未照合の行が多かったものを入れる)
- AWS のコンソールで Textract の文書分析を開き、表の読み取りを有効にして読み取る
- 読み取った表を表計算に書き出し、当時写した表と並べて行と合計を比べる
- 当時未照合だった行と、台帳から手で選んだ候補5件を手元のAIサービスに貼り、候補を選ばせる
- 選んだ結果を、当時の担当者の判断と比べる
最初に見るのは、合計が一致するかです。 合計が一致すれば、読み取りの層は使えます。候補選びは、当時「該当なし」とした行に、AIが無理に候補を当てていないかを見ます。
| 出てきた内容 | 判断 |
|---|---|
| 表が崩れずに読め、合計も一致した | 照合と計算の規則の組み立てに進む |
| ページをまたぐ表や小見出しで行がずれた | 組み立ての手順で直る。構成は有効 |
| AIが作家名の違う候補を選んだ | 指示の縛りで直す。構成は有効 |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 合計の行を楽曲の行として数える | TABLE_SUMMARY の印と、合計の一致で確かめる |
| 小見出しの収入の種類が次のページで消える | 小見出しをページをまたいで引き継ぐ |
| 問い合わせの答えが最後のページから取れない | 問い合わせに Pages: ["*"] を付ける |
| AIが題名だけで別の作家の楽曲を選ぶ | 作家名の一致を必須の条件として指示に書く |
| 台帳のISWCが統合・分離で変わる | 台帳でISWCの履歴を持ち、古いISWCでも引けるようにする |
| 明細の値で台帳を上書きしてしまう | 台帳への書き込みを持たない。食い違いは登録の担当へ |
| 契約の更新の前の期間の分配に新しい分配率を使う | 分配率に有効な期間を持たせ、明細の対象期間で選ぶ |
| 同じ利用の分配が2つの明細に載る | 楽曲・期間・地域・収入の種類で duplicate_line を出し、二重に払わない |
下の2行は、AIではなく台帳と規則の問題です。 サブパブリッシャーと管理団体の両方から同じ地域の分配が届く楽曲では、どちらの経路で受け取る取り決めかを、楽曲台帳か相手方の一覧に持たせておく必要があります。 取り決めが無いと、二重の行を見つけても、どちらを正とするかが決まりません。
5行目は、ISWCの仕組みから来ています。 ISWCの公式のページでは、ISWCは今は一元的に割り当てられ、誤って割り当てられたものは後から統合や分離ができるとされています。登録に要る最低限の情報は、原題と題名の種類のコード、作家ごとの番号と役割のコードとされています。台帳の側でも作家の役割を持っておくと、明細との照合で役割の食い違いにも気づけます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 楽曲と作家の名前、作家ごとの分配率と分配額、相手方との手数料の条件、源泉の税額です。作家ごとの収入は、個人の収入の情報そのものです。
- 生成AIに渡す範囲を絞る … 候補選びには題名・作家名・持分・候補だけを渡し、金額と分配率は渡しません
- 受け取りの場所の権限を絞る … S3 のフォルダは印税の担当と処理のプログラムだけが読めるようにし、結果は KMSKeyId を指定した暗号化で保存します
- 下書きをそのまま支払わない … 印税の担当が確かめてから支払の台帳に登録します
- 相手方への照会を自動にしない … 照会の文面は担当者が確かめて送ります
- 台帳を明細で直さない … 食い違いは楽曲の登録の担当が、相手方への照会を経て直します
誤りが起きた場合のリスクは、別の作家の楽曲の分配を自社の作家に払うことと、自社の作家に払うべき分配を未照合のまま放置することの2つです。 前者は候補選びで作家名の一致を必須にし、後者は未照合の行を照会の一覧に必ず載せる設計で防ぎます。
10まず何から始めるか
1週目:分配率の一覧と区分の表を整える
契約の担当と一緒に、分配の件数の多い楽曲から、作家ごと・収入の種類ごとの分配率を一覧に起こします。収入の種類の区分の表も作ります。
2週目:5件で読み取りを試す
相手方の違う5件をコンソールで読み取り、当時の表と並べます。合計が一致するか、ページをまたぐ表と小見出しで行がずれないかを最優先で見ます。
3週目:候補選びを当時の判断と比べる
当時未照合だった行と照合に迷った行で、手元のAIサービスに候補を選ばせます。作家名の違う候補を選んでいないかを確かめ、指示を直します。
4週目:保存から照合までをつなぐ
保存を起点に読み取り、行を組み立て、合計を確かめ、ISWCと相手方のコードで照合するところまで作ります。最初は件数の多い相手方1社から始めます。
2か月目: 候補選びと分配額の下書きを足し、unmatched と ai_candidate の件数を毎週数えます。3か月目以降: 1件50分が何分になったかを実測し、相手方を増やします。相手方の楽曲コードの対応表が育ち、未照合の行が照会の一覧で追えるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 対応する形式が JPEG・PNG・PDF・TIFF で XFA の形式のPDFは扱えないこと。パスワードで保護されたPDFは扱えないこと。非同期でPDFは3,000ページまでであること。対応言語が英語・フランス語・ドイツ語・イタリア語・ポルトガル語・スペイン語で、手書きは英語だけであること。問い合わせは英語の文書だけで、非同期で1ページ30件までであること | AWS: Set Quotas in Amazon Textract | 2026-10-15 |
| StartDocumentAnalysis の FeatureTypes に TABLES・FORMS・QUERIES・SIGNATURES・LAYOUT があること。文書を S3 に置くこと。完了の状態が SNS に通知されること。ClientRequestToken で同じジョブの二重の開始を防げること。JobTag が通知に含まれること。KMSKeyId で結果を暗号化できること。JobId が7日間だけ有効であること | AWS: StartDocumentAnalysis | 2026-10-15 |
| GetDocumentAnalysis が表を TABLE と CELL、問い合わせを QUERY と QUERY_RESULT、行と単語を LINE と WORD のブロックで返すこと。1回で返すのは最大1,000件で、NextToken でページを送ること | AWS: GetDocumentAnalysis | 2026-10-15 |
問い合わせの Pages を指定しないと既定で1ページ目だけになること。* で全ページを指定できること | AWS: Query | 2026-10-15 |
| 表のセルに行と列の位置が付くこと。セルに COLUMN_HEADER・TABLE_SECTION_TITLE・TABLE_SUMMARY などの印が付くこと | AWS: Tables(Amazon Textract) | 2026-10-15 |
output_config.format に JSON スキーマを渡すとスキーマに合う JSON が返ること。正式提供の機能であること。数値の minimum/maximum などの制約に対応しないこと | Claude Docs: Structured outputs | 2026-10-15 |
| ISWCが楽曲(作品)を識別する国際的な番号で、録音や楽譜などは識別しないこと。「T」と9桁と確認の数字からなること。今は一元的に割り当てられること。誤った割り当ては統合・分離できること。最低限の情報が原題と題名の種類のコード、作家の番号と役割のコードであること | CISAC: The ISWC | 2026-10-15 |
照合できなかった楽曲の扱い、相手方への照会、作家への支払額は、契約にもとづいて印税の担当と契約の担当が決めてください。 本記事は公開されている製品の仕様と資料で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1591)についてのご相談はこちらから。
