大学に海外の出版社から届く英文の論文掲載料(APC)の請求書を読み取り、論文・著者・割引の適用を契約条件と照らして、支払いの可否を一次判定する
海外の出版社から届く英文の論文掲載料(APC)の請求書を読み取り、論文・責任著者・割引の適用を出版社との契約条件と学内の申請に照らします。支払ってよいもの、契約で精算されるはずのもの、割引が付いていないものを一次判定して担当者に回します。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- AWS Textract/Azure AI/Google Document AI
- 連携・自動化
- Python
- 対象業界
- 医療/教育
- 対象部門
- 経理
- 対象業務
- 内容確認・チェック/比較検討
- 主な課題
- 入力作業が多い/属人化している/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/判断支援/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 研究者が、届いた請求書のPDFを学内のAPCの支払申請に添付し、研究費の予算の番号を書いて出す
- 経理の担当者が請求書を開き、請求番号・金額・通貨・支払期限・原稿番号・誌名・責任著者を申請と見比べる
- 図書館の契約条件の一覧を開き、その出版社と契約があるか、誌が対象か、責任著者の所属の条件を満たすかを調べる
- 割引の契約がある出版社なら、請求額に割引が付いているかを定価の表と比べて確かめる
- 契約の対象のはずなら、図書館の担当者に問い合わせ、出版社の管理画面で論文の状態を見てもらう
- 同じ原稿番号の請求をすでに払っていないかを、財務会計システムの支払の記録で探す
- 問題が無ければ支払の手続きに回し、問題があれば出版社へ英文のメールで照会する
- 人研究者が、学内のAPCの支払申請に請求書のPDFを添付して出す(いまと同じ)
- 自動申請の受付をきっかけに、添付のPDFを申請番号の付いた場所(Amazon S3)に保存する
- 自動AWS Textract が、請求書の読み取り(請求番号・金額・割引・税・通貨・明細)と、問い合わせによる論文の情報(原稿番号・誌名・責任著者・論文の種類)の読み取りを非同期で行う
- 自動プログラムが、ISSN か誌名で契約条件の一覧を引く。誌名で引けないときだけ、Claude API が一覧の誌との対応の候補を出す
- 自動プログラムが責任著者の氏名で研究者の名簿を引く。表記がゆれて引けないときは、Claude API が候補を理由付きで出す
- 自動Claude API が明細の行を種類(APC・割引・税・カラー図版の料金・その他)に分ける
- 自動プログラムが、契約の条件・割引率・申請の内容・支払済みの記録と照らし、一次判定を規則で決める
- 自動保留になったものは、Claude API が出版社への照会の英文の下書きを作る
- 人経理の担当者が、一次判定と根拠を確かめる。契約の対象の疑いがあるものは図書館の担当者に回す
- 人支払うものを支払の手続きに回し、保留のものは照会を直して送る
各工程の詳しい説明を読む
- 研究者が、届いた請求書のPDFを学内のAPCの支払申請に添付し、研究費の予算の番号を書いて出す
- 経理の担当者が請求書を開き、請求番号・金額・通貨・支払期限・原稿番号・誌名・責任著者を申請と見比べる
- 図書館の契約条件の一覧を開き、その出版社と契約があるか、誌が対象か、責任著者の所属の条件を満たすかを調べる
- 割引の契約がある出版社なら、請求額に割引が付いているかを定価の表と比べて確かめる
- 契約の対象のはずなら、図書館の担当者に問い合わせ、出版社の管理画面で論文の状態を見てもらう
- 同じ原稿番号の請求をすでに払っていないかを、財務会計システムの支払の記録で探す
- 問題が無ければ支払の手続きに回し、問題があれば出版社へ英文のメールで照会する
(a)契約の対象かどうかを調べるのに時間がかかる。 一覧の誌名と請求書の誌名を目で照らすので、略称の誌名や改名した誌は見つからないことがあります。
(b)責任著者の所属を確かめにくい。 請求書には所属が書かれていないことが多く、「Yamada, T.」が本学に何人いるかを数えるところから始まります。
(c)割引の付け漏れに気づきにくい。 割引が別の行で示される請求書と、単価から最初に引かれている請求書があり、割引が無いことに気づくには定価を知っている必要があります。 詳しい担当者が1名いて、その人が休むと確認が止まります。
(d)契約で精算されるはずの論文に払ってしまう。 研究者は「払うもの」と思って予算の番号を書いて申請します。経理が気づかなければ、研究費から二重に払われます。
- 【人】 研究者が、学内のAPCの支払申請に請求書のPDFを添付して出す(いまと同じ)
- 【自動】 申請の受付をきっかけに、添付のPDFを申請番号の付いた場所(Amazon S3)に保存する
- 【自動】 AWS Textract が、請求書の読み取り(請求番号・金額・割引・税・通貨・明細)と、問い合わせによる論文の情報(原稿番号・誌名・責任著者・論文の種類)の読み取りを非同期で行う
- 【自動】 プログラムが、ISSN か誌名で契約条件の一覧を引く。誌名で引けないときだけ、Claude API が一覧の誌との対応の候補を出す
- 【自動】 プログラムが責任著者の氏名で研究者の名簿を引く。表記がゆれて引けないときは、Claude API が候補を理由付きで出す
- 【自動】 Claude API が明細の行を種類(APC・割引・税・カラー図版の料金・その他)に分ける
- 【自動】 プログラムが、契約の条件・割引率・申請の内容・支払済みの記録と照らし、一次判定を規則で決める
- 【自動】 保留になったものは、Claude API が出版社への照会の英文の下書きを作る
- 【人】 経理の担当者が、一次判定と根拠を確かめる。契約の対象の疑いがあるものは図書館の担当者に回す
- 【人】 支払うものを支払の手続きに回し、保留のものは照会を直して送る
7番目が、この設計の分かれ目です。 AIに「この論文は契約の対象ですか」と聞かず、対象誌・所属・論文の種類の3つの条件を規則で当てます。 どれかが決められなければ、保留にして人に回します。
9番目で図書館に回すのは、契約の対象かの最終の確認が、出版社の管理画面を見られる図書館の担当者にしかできないからです。
02今回想定するシステム構成
APCの請求書(英文のPDF。研究者が学内の申請に添付) │ 申請の受付で、申請番号の付いた場所へ保存 ▼【トリガー】Amazon S3 への保存 AWS Lambda ├──▶ StartExpenseAnalysis(請求書の項目と明細) └──▶ StartDocumentAnalysis(FeatureTypes:QUERIES。原稿番号・誌名・責任著者) ▼ AWS Textract(非同期)── 完了の通知(Amazon SNS) ▼ AWS Lambda ── GetExpenseAnalysis/GetDocumentAnalysis ├──▶ Python:通貨と数の整理、契約条件の一覧と研究者の名簿を引く ├──▶ Claude API:引けなかった誌名・著者名の対応の候補、明細の行の区分 ├──▶ Python:契約の条件・割引率・申請・支払済みと照らし、一次判定 └──▶ Claude API:保留のものの照会の英文の下書き ▼ 一次判定の一覧(経理の担当者が確認。契約の疑いは図書館へ) ▼ 支払の手続き/出版社への照会(担当者が送る)
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | AWS Textract(StartExpenseAnalysis と、QUERIES を付けた StartDocumentAnalysis) | Azure AI Document Intelligence、Google Document AI |
| 生成AI | Claude API(誌名・著者名の対応の候補、明細の区分、照会の英文の下書き) | OpenAI API、Gemini API |
| 差異計算 | Python(契約の条件・割引率・申請・支払済みとの照合と一次判定) | 財務会計システムの照合の機能 |
| 連携 | AWS Lambda(保存と完了の通知を起点に処理を動かす) | AWS Step Functions |
| 保管 | Amazon S3(請求書の原本、読み取り結果、判定、確認の記録) | 学内のファイルサーバー |
土台は、AWS Textract の請求書の読み取り(Analyze Expense)です。 公式のページでは、テンプレートや設定なしに、ほとんどの請求書と領収書から項目を取り出し、請求書番号・請求番号・領収書番号のように呼び方の違う項目を INVOICE_RECEIPT_ID のような標準の名前にそろえて返す、とされています。出版社ごとに書式が違っても、合計や割引を同じ名前で受け取れます。
Textract を選べるのは、請求書が英文だからです。 公式の対応言語は英語・フランス語・ドイツ語・イタリア語・ポルトガル語・スペイン語です。APCの請求書は英文で届くので、この範囲に入ります。国内の学会誌の日本語の請求書は対象にしません。
財務会計システムには書き込みません。 一次判定は一覧として担当者に返し、支払の手続きは担当者が既存の手順で行います。
03どうやって実装するのか
処理の起点を決める
学内のAPCの支払申請が受け付けられたことを起点にします。 添付のPDFを S3 の apc/<年月>/<申請番号>/ に保存し、どの申請の請求書かを保存した場所で決めます。 宛名から申請を探すと、同じ研究者の別の論文と取り違えます。
保存をきっかけに、請求書の項目と明細を取る StartExpenseAnalysis と、論文の情報を問い合わせで取る StartDocumentAnalysis を同時に始めます。 請求書の読み取りの機能には問い合わせを渡す口が無いため、2つに分けます。
どちらも ClientRequestToken に「申請番号+版」を入れます。 公式のページでは、同じトークンで呼ぶと同じ JobId が返り、二重の開始を防げるとされています。完了は Amazon SNS の通知で受け、JobTag に入れた申請番号でどの申請かを知ります。 JobId は7日間だけ有効なので、結果は受け取ったその場で S3 に保存し、2つがそろってから照合を始めます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 請求書 | 請求番号、請求日、出版社名、宛名、支払期限、明細(APC・割引・税・その他の料金)、合計、通貨 | 研究者が申請に添付したPDF |
| 論文の情報 | 原稿番号、誌名、論文の題名、責任著者、論文の種類、DOI | 同じPDF(問い合わせで取る) |
| 読み取り結果 | 標準の項目と明細、各項目の信頼度、問い合わせの答えと信頼度 | AWS Textract |
| 契約条件の一覧 | 出版社ごとの契約の種類(転換契約/割引/無し)、対象誌(誌名・ISSN)、責任著者の所属の条件、対象の論文の種類、割引率、契約の期間 | 図書館が持つ一覧 |
| 研究者の名簿 | 氏名(漢字・ローマ字・旧姓)、所属、ORCID の番号、在籍の期間 | 学内の名簿 |
| APCの支払申請 | 申請番号、申請者、原稿番号、誌名、予算の番号、申請の金額 | 学内の申請のワークフロー |
| 支払済みの記録 | 出版社への過去の支払、請求番号、摘要 | 財務会計システムから書き出す |
質を決めるのは、契約条件の一覧の「対象誌のISSN」と「対象の論文の種類」の列です。 ISSN があれば誌名の表記のゆれに関係なく引けます。論文の種類の列が無いと、契約で対象外とされた種類まで「契約の対象」と判定してしまいます。 名簿には論文で使うローマ字の表記と旧姓を入れます。
データの取得方法を決める
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 請求番号・請求日・支払期限 | GetExpenseAnalysis の SummaryFields(INVOICE_RECEIPT_ID・INVOICE_RECEIPT_DATE・DUE_DATE) | 支払済みの記録との照合、期限の管理 |
| 出版社名・宛名 | SummaryFields(VENDOR_NAME・RECEIVER_NAME) | 契約条件の一覧の出版社、責任著者の手がかり |
| 金額と通貨 | SummaryFields(SUBTOTAL・DISCOUNT・TAX・TOTAL・AMOUNT_DUE)と Currency | 割引率の確かめ、申請の金額との照合 |
| 明細の行 | LineItemGroups(ITEM・PRICE) | APC・割引・税・その他の料金の区分 |
| 原稿番号・誌名・責任著者・論文の種類・DOI | GetDocumentAnalysis の QUERY_RESULT | 論文の特定、契約の条件の当てはめ |
請求書の項目は、標準の名前で受けます。 公式のページでは、書類に書かれた項目名は LabelDetection、値は ValueDetection として、それぞれ信頼度付きで返るとされています。GetExpenseAnalysis は1回に20件までしか返さないので、NextToken が返る限り呼び続けます。途中でやめると、2ページ目の割引や税の行が落ちます。
論文の情報は、問い合わせで取ります。 問い合わせは英語の文書でだけ使え、非同期では1ページあたり30件までです。答えは QUERY_RESULT として信頼度付きで返り、見つからなければ空のまま返るので、原稿番号の書かれていない請求書を見分けられます。
| 問い合わせ(Text) | Alias |
|---|---|
| What is the manuscript number or article reference? | MANUSCRIPT_ID |
| What is the journal name? | JOURNAL |
| What is the ISSN of the journal? | ISSN |
| Who is the corresponding author? | CORRESPONDING_AUTHOR |
| What is the article type? | ARTICLE_TYPE |
| What is the DOI? | DOI |
AIへ渡す前に整形する
- 形式の確認 … 請求書の読み取りは JPEG・PNG・PDF に対応すると公式のページにあります。TIFF で届いたものはPDFに変換します。 XFA の形式のPDFは扱えないとされています
- パスワードの確認 … パスワードで保護されたPDFは扱えません。 研究者に解除して添付し直してもらいます
- 1ファイルに複数の請求書がないかの確認 … 請求書の読み取りは、書類の中の請求書の数を
ExpenseIndexで返します。2件以上なら、申請と1対1にならないので人に回します - 通貨と数の整理 … 値の通貨のコードと、明細の行の通貨がそろっているかを確かめ、数を数値に直します
- 原稿番号の整え … 前後の空白と記号をそろえ、出版社ごとの原稿番号の形(英字と数字の並び)に合うかを確かめます
- ISSN の確かめ … ISSN は8桁で、最後の1桁が検査用の数字(X のこともある)です。計算が合わないものは読み取りの誤りとして扱い、誌名で引き直します
- 合計の確かめ … 明細の行を足した額が
TOTALと合うかを確かめます
7番目は、明細の読み落としを照合の前で止めるためのものです。 割引の行が読み取れていないと、割引の付け漏れに見えます。
AIに処理させる
させるのは、表記のゆれと言葉を扱う4つの仕事だけです。 項目の読み取りは Textract、照合と判定はプログラムが行います。
| させること | 中身 | できないときの扱い |
|---|---|---|
| 誌名の対応の候補 | ISSN で引けなかったときだけ、読み取った誌名と、その出版社の契約の対象誌の一覧から、同じ誌の候補を最大3つ、理由付きで出す | 候補が無ければ「対応なし」 |
| 責任著者の候補 | 名簿で引けなかったときだけ、ローマ字の氏名の並び・頭文字・旧姓から、名簿の候補を理由付きで出す | 候補が無ければ「該当なし」 |
| 明細の行の区分 | 明細の行を apc/discount/tax/color_charge/page_charge/other に分ける | 当たらなければ other と原文 |
| 照会の下書き | 保留の理由ごとに、原稿番号・誌名・請求番号・根拠を並べた英文のメール | 理由が unknown のものは事実だけを書く |
1行目と2行目は、候補を出すまでです。 採るかはプログラムが規則(著者なら名簿の在籍の期間が論文の時期に合うか)で決め、決められなければ人に回します。
| させないこと | 理由 |
|---|---|
| 契約の対象かどうかの結論 | 対象誌・所属・論文の種類の3つの条件を規則で当てる |
| 割引率の計算と、正しい請求額の算出 | 割引率は契約条件の一覧の値で、比べるのはプログラム |
| 研究費から払えるかの判断 | 研究費の種類ごとの使い方は学内の規程と配分の条件で決まる |
| 支払を拒むかの判断 | 出版社との関係と研究者の論文の公開に関わる |
| 名簿に無い研究者を本学所属とみなす | 所属は名簿と在籍の期間で決める |
3行目を外すのは、研究費ごとに使い方の決まりが違うからです。 予算の番号が申請に書かれているかを確かめるところまでが、この構成の仕事です。
指示内容を固定する
責任著者の候補を出す指示です。
あなたは大学の経理課で、論文掲載料の請求書に書かれた責任著者が、
本学の研究者の名簿の誰に当たるかの候補を挙げる担当者を手伝います。
渡された「請求書の責任著者の表記」と「名簿の抜粋」だけを見てください。
【やること】
- 名簿の抜粋から、同じ人の可能性がある研究者を最大3人挙げてください。
- 挙げた理由を、表記のどこが一致するか(姓、名、頭文字、旧姓、ミドルネーム)で書いてください。
【厳守事項】
- 名簿の抜粋に無い人を挙げないでください。
- 姓だけが一致する候補には、理由に「姓のみ一致」と書いてください。
- 本学の所属かどうか、契約の対象かどうかを書かないでください。
- 候補が無ければ、candidates を空にしてください。推測で埋めないでください。
明細の行を分け、照会の下書きを作る指示です。
あなたは大学の経理課で、海外の出版社の論文掲載料の請求書を扱う担当者を手伝います。
【明細の区分】
渡された明細の行を、次のどれかに分けてください。
apc(論文掲載料)/discount(割引・会員の値引き・免除)/tax(税)/
color_charge(カラー図版の料金)/page_charge(ページ超過の料金)/other
- 行の言葉だけで判断してください。金額の大きさから推し量らないでください。
- 行の原文を raw にそのまま残してください。
- 「waiver」「voucher」「prepaid」「agreement」の語があれば、その語を qualifier に写してください。
【照会の下書き】
- 原稿番号、誌名、請求番号、請求額を、渡された値のままで書いてください。
- 保留の理由(contract_covered/discount_missing/duplicate)ごとに、
根拠として渡された契約の条件や過去の請求番号を並べてください。
- 支払わないと書かないでください。確認をお願いする形にしてください。
- 割引の額や正しい請求額を計算して書かないでください。
「agreement」「prepaid」を写させるのは、契約で精算済みであることが明細に書かれていることがあるからです。 「Covered by institutional agreement」で合計が0の書類は通知で、支払の手続きに回さずに済みます。
出力形式を固定する
一次判定は、プログラムがJSONで出します。 生成AIの出力も、Claude API の構造化出力で形を決めて受けます。公式のページでは、output_config.format に JSON スキーマを渡すと、スキーマに合う JSON が返るとされ、正式提供の機能です。
{
"request_no": "APC-2026-0912",
"invoice": { "invoice_id": "", "publisher": "", "currency": "EUR",
"subtotal": 2890.00, "discount": 0.00, "tax": 0.00, "total": 2890.00,
"due_date": "2026-11-13", "sum_check": "matched" },
"article": { "manuscript_id": "", "journal": "", "issn": "",
"issn_check": "ok | failed | missing",
"corresponding_author": "Yamada, Taro", "article_type": "Research Article" },
"matching": {
"contract_type": "transformative | discount | none",
"journal_covered": "yes | no | unknown",
"author_affiliated": "yes | no | unknown",
"article_type_covered": "yes | no | unknown",
"expected_discount_rate": 0.15, "applied_discount_rate": 0.00,
"request_found": true, "budget_code_present": true,
"duplicate_of": ""
},
"verdict": "payable | hold_contract | hold_discount | hold_request | duplicate | needs_human",
"reasons": [ "Journal ISSN in agreement list; author matched (Faculty of Medicine)" ],
"min_confidence": 96.4
}
契約の3つの条件を別々の列で持つので、どれが unknown かで図書館に何を確かめてもらえばよいかが決まります。 verdict は規則で決めます。
verdict | 決め方(プログラム) |
|---|---|
| hold_contract | 転換契約の出版社で、3つの条件がすべて yes なのに請求額が0でない |
| hold_discount | 割引の契約の出版社で、applied_discount_rate が expected_discount_rate より小さい |
| duplicate | 同じ原稿番号か同じ請求番号の支払済みの記録がある |
| hold_request | 申請が見つからない、予算の番号が無い、申請の金額と請求額の差が設定の幅を超える |
| needs_human | 条件のどれかが unknown、合計が合わない、信頼度が設定の値を下回る |
| payable | 上のどれにも当たらない |
上から順に当てます。 hold_contract を先に置くのは、契約で精算されるはずの論文に払う誤りが、いちばん取り戻しにくいからです。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 学内の申請のワークフロー | 申請の受付の通知で添付を取り出す | 申請番号と添付のPDF、予算の番号 |
| Amazon S3 | 保存の通知で Lambda を動かす | 申請番号の付いた場所に原本を置く |
| AWS Textract | StartExpenseAnalysis/StartDocumentAnalysis と、それぞれの Get | 請求書の項目と明細、論文の情報、信頼度 |
| 契約条件の一覧・名簿・財務会計システム | 書き出したファイルを読む | 読み取りだけ |
| Claude API | API呼び出し(構造化出力) | 誌名と著者の候補、明細の区分、照会の下書き |
| 経理と図書館の担当者 | 一次判定の一覧を共有の場所に置き、チャットで知らせる | 確認、図書館への回付、照会の送信 |
財務会計システムにも申請にも書き込みません。 一次判定を申請に書き戻すと、研究者には「経理が却下した」と見えます。
Claude を Amazon Bedrock から使う場合は、構造化出力の対応を先に確かめます。 公式のページでは、Bedrock では構造化出力が旧来の連携でだけ使え、Claude in Amazon Bedrock では使えないとされています。
人が確認する
経理の担当者が全件の一次判定を確かめます。 payable は一覧で根拠を流し見て、保留のものに時間を使います。
hold_contractを先に見る … 3つの条件の根拠を確かめ、図書館の担当者に出版社の管理画面で論文の状態を見てもらいますneeds_humanの unknown を埋める … どの条件が決められなかったかを見て、原本で確かめますhold_discountの割引率を確かめる … 一覧の割引率と、請求書の割引の行を見比べますduplicateの過去の支払を開く … 再送の請求か、別の料金(カラー図版など)の請求かを見ます- 照会を直して送る … 下書きの番号と根拠を確かめ、送信は担当者が行います。研究者にも同時に知らせます
payable も、最初の3か月は全件を原本で見ます。 規則の漏れは、payable の中にしか現れないからです。
例外に対処する
| 起きること | 対応 |
|---|---|
| パスワード付き・XFA のPDF | 読めない。研究者に添付し直してもらう |
| JobStatus が FAILED か PARTIAL_SUCCESS | Warnings のページを見て、その項目を人が写す |
| 1ファイルに請求書が2件以上 | 申請と1対1にならない。分けて申請し直してもらう |
| 原稿番号の答えが空 | 論文を特定できない。題名と DOI で探し、無ければ needs_human |
| 合計が0の通知(契約で精算済み) | 支払の手続きに回さず、図書館の記録に回す |
| 見積書(Quote・Pro forma)が添付されている | 請求書ではない。正式な請求書が届くまで保留 |
| 契約の期間の切れ目の論文 | 受理日と契約の期間を図書館に確かめる。判定は needs_human |
最後の行は、契約の対象が受理日で決まるか出版日で決まるかが契約ごとに違い、請求書だけでは決められないためです。
記録を残す
- 請求書の原本と、保存した場所(申請番号・版)
- Textract が返した結果の全文(請求書の項目と明細、問い合わせの答え)
- 照合に使った契約条件の一覧と研究者の名簿の、その時点の版
- 一次判定(
matching、verdict、reasons)と、生成AIが出した候補と採否 - 担当者が判定を覆した記録 … どの条件を、どう直したか
- 図書館への回付と出版社への照会、その回答
- 出版社ごとの保留の件数と理由の推移
3つ目で一覧の版を残すのは、契約の対象誌が年ごとに変わるからです。 当時の一覧が残っていないと、判定が正しかったかを確かめられません。
04実装レベルの3段階
半自動化で、1件30分が15分程度になります。 写しと契約の照合は無くなりますが、申請との突き合わせと支払済みの記録の確認、照会の英文が手作業のまま残ります。 本格構成で8分になり、この段階が本記事の想定です。 段階を飛ばさないでください。 半自動化で3か月回すと、契約条件の一覧のISSNの抜けと名簿のローマ字の表記の抜けが分かり、埋めてから一次判定を出すほうが needs_human が減ります。
05工数削減シミュレーション
導入後 60件 × 8分 ÷ 60 = 8 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 研究者が海外の学術誌に論文を多く出し、複数の出版社と転換契約や割引の契約を結んでいる大学・研究機関。APCの請求書が出版社ごとに違う書式の英文のPDFで届き、経理と図書館の担当者が契約の対象かどうか、割引が付いているかを1件ずつ契約書と照らしている場合。契約で精算されるはずの論文に研究費から払ってしまう、割引の付け漏れに気づかない、といったことが起きている場合。
- APCの請求がほぼ出版社の管理画面での一括の精算に移っていて、個別の請求書がほとんど届かない場合。論文の数が少なく、月に数件の請求書を目で見れば足りる場合。請求書が日本語で届く国内の学会誌が中心の場合(この構成で使う読み取りのサービスは英語など6言語に対応します)。なお、どの研究費から支払えるか、契約の対象かどうかの最終の判断、出版社へ支払いを拒むかは、経理と図書館の責任者が決めます。この構成は一次判定の候補を挙げるまでです。
07最小構成で試す方法
- 先月の請求書から、出版社の違う15件を選ぶ(うち数件は、契約の対象だったと分かっているものと、割引の付け漏れがあったものを入れる)
- AWS のコンソールで Textract の請求書の読み取りを開き、15件を読ませる
- 請求番号・合計・割引・通貨が取れているか、当時担当者が見た値と並べる
- 同じ15件で問い合わせを試し、原稿番号・誌名・責任著者が取れるかを見る
- 手元のAIサービスに、取れた誌名と契約条件の一覧の誌名を貼り、対応を付けさせる
契約の対象だった請求書は必ず入れ、3つの条件の材料が読み取れるかを最初に確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 項目と論文の情報が取れ、誌名も対応が付いた | 照合のプログラムに進む |
| 割引の行が明細として取れなかった | 合計の確かめで止められる。構成は有効 |
| 責任著者が取れない請求書が多い | 申請の画面で責任著者を入力してもらう。手順で直る |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 誌名の略称や改名で対象誌を引けない | ISSN で先に引く。 一覧に ISSN の列を足し、改名前の誌名も残す |
| 「Yamada, T.」で名簿の候補が何人も出る | 所属と在籍の期間で絞り、決められなければ人へ |
| 割引の行が読み落とされ、割引の付け漏れに見える | 明細の合計と請求の合計を照らし、合わないものは割引の判定に進めない |
| 契約の対象外の論文の種類を対象と判定する | 一覧に対象の論文の種類の列を持たせる |
| 合計が0の通知を支払に回す | 明細の qualifier の「agreement」を見て、支払の手続きから外す |
| 2ページ目の明細が落ちる | GetExpenseAnalysis は1回に20件まで。NextToken を最後まで追う |
| 見積書を請求書として扱う | 書類の題を見て、正式な請求書が届くまで保留 |
| Bedrock で構造化出力が使えない | Claude API を直接使うか、対応を先に確かめる |
上の3行が、この構成の失敗のほとんどです。 どれも、表記のゆれと読み落としが判定の誤りに化ける失敗で、ISSN・在籍の期間・明細の合計という機械で確かめられる材料を先に当てることで減らせます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 研究者の氏名と所属、出版前の論文の題名と原稿番号、研究費の予算の番号、出版社への支払の金額です。出版前の論文の題名は、研究の内容を推し量れる情報です。
- 出版前の論文の情報を外へ広げない … 生成AIに渡すのは、誌名の対応には誌名だけ、著者の候補には氏名と名簿の抜粋だけ、照会の下書きには保留の論文の行だけです。論文の題名は照会の下書きに要るときだけ渡します
- 受け取りの場所の権限を絞る … S3 の場所は経理課と図書館の担当、処理のプログラムだけが読めるようにし、結果は KMSKeyId を指定した暗号化で保存します
- 名簿の全体を渡さない … 姓か頭文字で絞った抜粋だけを渡します
- 支払も照会も自動で進めない … 一次判定は候補で、照会は下書きまでです。研究者に知らせずに出版社へ照会しないでください
- 研究費の使い方の判断に使わない … どの研究費から払えるか、契約の対象かの最終の判断は、経理と図書館の責任者が決めます
誤りが起きた場合のリスクは、契約で精算されるはずの論文に研究費から払うことと、払ってよい請求を保留にして研究者の論文の公開を遅らせることの2つです。 前者は3つの条件を規則で当てることで、後者は保留の理由と根拠を一覧で示し、担当者がすぐに解けるようにすることで防ぎます。
10まず何から始めるか
1週目:契約条件の一覧に2つの列を足す
図書館と一緒に、契約条件の一覧に対象誌の ISSN の列と、対象の論文の種類の列を足します。5社すべてを一度に埋める必要はありません。請求書の多い出版社から埋めます。
2週目:15件で読み取りを試す
出版社の違う15件の請求書をコンソールで読み取り、当時の値と並べます。契約の対象だった請求書で、誌名・責任著者・論文の種類が取れるかを最優先で見ます。
3週目:研究者の名簿にローマ字の表記を足す
APCの申請の多い学部から、論文で使っているローマ字の氏名と旧姓を名簿に足します。
4週目:読み取りと契約の照合をつなぐ
申請の受付を起点に読み取り、契約条件の一覧と名簿を引くところまで作ります。この時点では一次判定を出さず、3つの条件の yes/no/unknown だけを見ます。
2か月目: 割引率の比較、申請と支払済みの照合を足し、verdict を出します。needs_human の件数を毎週数えます。3か月目以降: 照会の下書きを足し、1件30分が何分になったかを実測します。出版社ごとの保留の推移を図書館が契約の見直しに使い始めた時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 対応する形式が JPEG・PNG・PDF・TIFF で XFA の形式のPDFは扱えないこと。非同期の処理はPDFが500MB・3,000ページまでであること。パスワードで保護されたPDFは扱えないこと。対応言語が英語・フランス語・ドイツ語・イタリア語・ポルトガル語・スペイン語であること。問い合わせは英語の文書だけで、非同期で1ページ30件までであること | AWS: Set Quotas in Amazon Textract | 2026-10-14 |
請求書の読み取りがテンプレートなしに項目を取り出し、呼び方の違う項目を INVOICE_RECEIPT_ID などの標準の名前にそろえること。標準の項目に VENDOR_NAME・RECEIVER_NAME・DUE_DATE・TOTAL・SUBTOTAL・TAX・DISCOUNT・AMOUNT_DUE・ITEM・PRICE などがあること。LabelDetection・ValueDetection・信頼度・ExpenseIndex が返ること | AWS: Analyzing Invoices and Receipts | 2026-10-14 |
| StartExpenseAnalysis が JPEG・PNG・PDF を扱い、S3 の文書を対象とすること。完了が SNS に通知されること。ClientRequestToken で二重の開始を防げること。JobTag が通知に含まれること。KMSKeyId で結果を暗号化できること。JobId が7日間だけ有効であること | AWS: StartExpenseAnalysis | 2026-10-14 |
| GetExpenseAnalysis の MaxResults が既定・最大とも20で NextToken によりページを送ること。SummaryFields・LineItemGroups・Currency が返ること。JobStatus が IN_PROGRESS・SUCCEEDED・FAILED・PARTIAL_SUCCESS であること | AWS: GetExpenseAnalysis | 2026-10-14 |
| 問い合わせの答えが QUERY_RESULT として信頼度付きで返り、答えが見つからなければ空のまま返ること | AWS: Queries(Amazon Textract) | 2026-10-14 |
output_config.format に JSON スキーマを渡すとスキーマに合う JSON が返ること。正式提供の機能であること。Amazon Bedrock では旧来の連携でだけ使え、Claude in Amazon Bedrock では使えないこと | Claude Docs: Structured outputs | 2026-10-14 |
| 転換契約が出版社への支払を購読料からオープンアクセスの出版料に移すことを意図したものであること。購読契約にOAで出版できる権利を加えた Read & Publish の契約があること。出版社によってAPCの割引を適用する提案があること | 国立国会図書館 カレントアウェアネス: CA2064 国内の大学における電子ジャーナルの転換契約をめぐる動向 | 2026-10-14 |
契約の対象かどうか、どの研究費から払えるか、支払を拒むかは、経理と図書館の責任者が決めてください。 本記事は公開されている製品の仕様と資料で確認できた範囲だけを扱っています。契約の条件は出版社と大学ごとに違います。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1430)についてのご相談はこちらから。
