海外の試験・認証機関から届く英文の試験報告書を読み取り、試験項目・適用規格・判定を認証台帳に転記して、不合格と条件付き合格の項目を拾う
海外の試験・認証機関から届く英文の試験報告書を読み取り、試験項目ごとの適用規格・版・判定・備考を認証台帳の形にそろえます。不合格と、条件付きの合格や備考付きの項目だけを品質管理の担当者に返します。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- AWS Textract/Azure AI/Google Document AI
- 連携・自動化
- Python
- 対象業界
- 医療/商社/製造
- 対象部門
- 品質管理
- 対象業務
- データ入力・転記/内容確認・チェック
- 主な課題
- 入力作業が多い/属人化している/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/品質標準化/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 試験機関からメールで届いた報告書のPDFを、ファイルサーバーの製品フォルダに保存する
- 表紙と冒頭のページから、報告書番号・発行日・試験機関・対象製品・型式・適用規格を読み、台帳の見出しに写す
- 試験結果の一覧(Summary of test results など)のページを探す。機関ごとに場所と呼び方が違う
- 一覧の各行について、試験項目・規格の条項番号・判定(Pass/Fail/N/A など)を台帳に1行ずつ写す
- 備考欄や脚注に条件が書かれていないかを探し、あれば台帳の備考に写す
- Fail の項目と条件付きの項目を、開発部門と営業部門にメールで知らせる
- 台帳の行を上長が見て、認証の申請に進めてよいかを決める
- 人届いた報告書のPDFを、受付用の保存場所(Amazon S3)に入れる
- 自動保存をきっかけに処理が動き、形式・ページ数・パスワードの有無を確かめる
- 自動AWS Textract が報告書を非同期で解析し、表・項目と値・本文を返す
- 自動プログラムが表を行と列に組み直し、試験結果の一覧らしい表を選ぶ
- 自動生成AIが、表の行を台帳の形(試験項目・規格・版・条項・判定・備考)にそろえる
- 自動プログラムが判定を正規化し、Pass 以外と、備考・脚注の付いた行に印を付ける
- 自動認証台帳にある「この製品に必要な規格と版」と突き合わせ、版の違いと試験されていない規格を拾う
- 人担当者が、印の付いた行と版の違いだけを報告書の該当ページと見比べて確かめる
- 人確かめた結果を台帳に確定させ、Fail と条件付きを開発部門と営業部門に知らせる
各工程の詳しい説明を読む
- 試験機関からメールで届いた報告書のPDFを、ファイルサーバーの製品フォルダに保存する
- 表紙と冒頭のページから、報告書番号・発行日・試験機関・対象製品・型式・適用規格を読み、台帳の見出しに写す
- 試験結果の一覧(Summary of test results など)のページを探す。機関ごとに場所と呼び方が違う
- 一覧の各行について、試験項目・規格の条項番号・判定(Pass/Fail/N/A など)を台帳に1行ずつ写す
- 備考欄や脚注に条件が書かれていないかを探し、あれば台帳の備考に写す
- Fail の項目と条件付きの項目を、開発部門と営業部門にメールで知らせる
- 台帳の行を上長が見て、認証の申請に進めてよいかを決める
(a)判定欄を探すところから始まる。 一覧表が冒頭にある報告書、末尾の付録にある報告書、条項ごとに判定が本文中に散らばっている報告書があります。200ページの報告書で判定欄を探すだけで10分以上かかることがあります。
(b)条件付きの合格を読み落とす。 判定欄は Pass なのに、脚注に「試験は特定の電源条件に限る」「製品の表示を直すことを条件とする」と書かれていることがあります。台帳には Pass としか残らず、条件は報告書の中に置き去りになります。 申請の段階で認証機関から指摘されて初めて気づく、という形で表に出ます。
(c)版の違いを見落とす。 適用規格の番号は同じでも、版(年号)が違えば試験の中身が違います。台帳に番号だけを写すと、旧版で試験したものが新版の要求を満たしているように見えます。
(d)読み方が担当者に寄っている。 どの機関の報告書のどこを見ればよいかは、経験の長い1名の頭の中にあります。その人が休むと、報告書が溜まります。
- 【人】 届いた報告書のPDFを、受付用の保存場所(Amazon S3)に入れる
- 【自動】 保存をきっかけに処理が動き、形式・ページ数・パスワードの有無を確かめる
- 【自動】 AWS Textract が報告書を非同期で解析し、表・項目と値・本文を返す
- 【自動】 プログラムが表を行と列に組み直し、試験結果の一覧らしい表を選ぶ
- 【自動】 生成AIが、表の行を台帳の形(試験項目・規格・版・条項・判定・備考)にそろえる
- 【自動】 プログラムが判定を正規化し、Pass 以外と、備考・脚注の付いた行に印を付ける
- 【自動】 認証台帳にある「この製品に必要な規格と版」と突き合わせ、版の違いと試験されていない規格を拾う
- 【人】 担当者が、印の付いた行と版の違いだけを報告書の該当ページと見比べて確かめる
- 【人】 確かめた結果を台帳に確定させ、Fail と条件付きを開発部門と営業部門に知らせる
8番目が、この設計の分かれ目です。 担当者が見るのは全行ではありません。Pass と読めて備考の無い行は、件数だけを確かめて流します。 全行を見る設計にすると、①と②の時間がそのまま残ります。
6番目と7番目を AI ではなくプログラムに置いているのも、意図してのことです。 「Pass 以外を拾う」「版が違うものを拾う」は規則で決まる作業です。規則で決まることを AI に判断させると、拾い漏れの理由が説明できなくなります。
02今回想定するシステム構成
試験機関からのメール(英文の試験報告書PDF) │ 担当者が受付用の保存場所に入れる ▼【トリガー】Amazon S3 への保存 AWS Lambda ── 形式・ページ数・パスワードの確認 ▼ AWS Textract(StartDocumentAnalysis:TABLES/FORMS/QUERIES/LAYOUT) │ 完了を Amazon SNS に通知 ▼ AWS Lambda ── GetDocumentAnalysis で結果を取り、表を行と列に組み直す ▼ Claude API ── 表の行を台帳の形にそろえる(試験項目・規格・版・条項・判定・備考) ▼ Python ── 判定の正規化、Pass 以外と備考付きの抽出、必要な規格・版との突き合わせ ▼ 【人が印の付いた行だけ確認】 ▼ 認証台帳へ確定 / 開発部門・営業部門へ通知
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 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(報告書、読み取り結果、突き合わせの結果) | 品質保証部のファイルサーバー |
認証台帳は新しく足すものではありません。 いまのスプレッドシートに、「必要な規格と版」の列と「確認状況」の列を足すのが最初の準備です。この構成は台帳へ下書きの行を出し、確定は人が行います。
土台になるのは、AWS Textract の文書解析(StartDocumentAnalysis)です。 S3 に置いた JPEG・PNG・TIFF・PDF を非同期で解析し、項目と値の組(FORMS)・表(TABLES)・問い合わせ(QUERIES)・署名(SIGNATURES)・レイアウト(LAYOUT)を指定して取り出せます。完了すると、指定した Amazon SNS のトピックに状態が通知され、SUCCEEDED を確かめてから GetDocumentAnalysis で結果を取ります。
非同期の処理を使うのは、ページ数のためです。 同期の処理は PDF と TIFF が1ページまでで、非同期なら PDF と TIFF は 500MB・3,000ページまで扱えます。200ページを超える安全試験の報告書は、非同期でしか読めません。
表の読み取りが、この構成でいちばん効く機能です。 表は TABLE のブロックとして返り、セルごとに行番号・列番号・信頼度が付きます。結合セル(MERGED_CELL)、表の題名(TABLE_TITLE)、脚注(TABLE_FOOTER)、列見出し(COLUMN_HEADER)も区別されます。脚注が独立して取れるので、第3章の(b)の「判定は Pass、条件は脚注」を拾う材料になります。
03どうやって実装するのか
処理の起点を決める
受付用の S3 の場所に PDF が保存されたことを起点にします。 担当者はメールから PDF を保存するだけで、そこから先は自動で動きます。報告書は1通ずつ届くので、届いたその日に下書きが出る形にし、1日1回のまとめ処理にはしません。申請の締切が近い製品では、報告書が届いた当日に Fail を知りたいからです。
処理は2段に分かれます。1段目は保存を起点に Textract の解析を始めるところまで、2段目は Textract の完了通知を起点に結果を取り出すところからです。解析には数十秒から数分かかるため、1つの処理の中で待ち続けません。
解析を始めるときは ClientRequestToken に報告書ファイルのハッシュ値を入れます。同じトークンで呼べば同じ JobId が返るため、保存の通知が二度届いても解析は1回で済みます。 JobTag には製品コードを入れ、完了の通知から製品を引けるようにします。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 試験報告書 | 英文のPDF。表紙、試験条件、試験結果の一覧、本文、付録 | 受付用の S3 |
| 読み取り結果 | 行と単語、表とセル、項目と値の組、問い合わせの答え、各ブロックの信頼度 | AWS Textract |
| 製品の情報 | 製品コード、型式、仕向け地、必要な規格とその版 | 認証台帳 |
| 試験機関の情報 | 機関名、判定欄の書き方(Pass/P、Fail/F など)、過去の報告書の書式 | 自社で作る機関の一覧 |
質を決めるのは、下の2つです。 必要な規格と版が台帳に無ければ、第3章の(c)の版の違いは拾えません。機関ごとの判定の書き方の一覧が無ければ、「P」を Pass と読んでよいのか、「Complies」を Pass と同じに扱ってよいのかが決まりません。
機関の一覧は、最初は過去の報告書3通ずつから作ります。 6社なら18通です。判定欄の語と、条件付きの書き方(「Pass*」「Pass, see remark」など)を書き出しておくと、第7章の「AIに何をさせるのか」の指示に使えます。
データの取得方法を決める
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 表とセル | GetDocumentAnalysis の TABLE/CELL のブロック | 試験結果の一覧を行と列に組み直す |
| 結合セル、題名、脚注 | MERGED_CELL/TABLE_TITLE/TABLE_FOOTER | 一覧の題名で表を選び、脚注の条件を拾う |
| 項目と値の組 | KEY_VALUE_SET のブロック(FORMS) | 表紙の報告書番号・発行日・型式 |
| 問い合わせの答え | QUERY/QUERY_RESULT のブロック(QUERIES) | 「What is the report number?」など表紙の決まった項目 |
| 本文の行 | LINE/WORD のブロック | 表に入っていない判定と備考を探す |
結果は1回では取り切れません。 GetDocumentAnalysis は1回の呼び出しで最大1,000個のブロックを返し、残りがあれば NextToken が付きます。200ページの報告書ではブロックが数万個になるので、NextToken が無くなるまで繰り返し呼びます。 途中で止めると、末尾の付録にある試験結果の一覧が丸ごと抜けます。
JobId は7日間しか有効ではありません。 取り出した結果はすぐに S3 に保存し、後から読み直すときは S3 の写しを使います。OutputConfig で結果を自社のバケットに出させる方法もあります。
問い合わせ(QUERIES)は表紙の決まった項目にだけ使います。問い合わせは英語の書類でだけ使え、非同期では1ページあたり30個までです。報告書番号・発行日・試験機関・型式・適用規格の5つを表紙のページに投げれば足ります。
AIへ渡す前に整形する
- 形式の確認 … JPEG・PNG・TIFF・PDF 以外は止めます。XFA を使った PDF は読めません
- パスワードの確認 … パスワード付きの PDF は読めません。 試験機関から保護付きで届いたものは、解除したものを送ってもらいます
- ページ数とサイズの確認 … 非同期で PDF・TIFF は 500MB・3,000ページまで。超えるものは分けます
- 表の組み直し … CELL の行番号・列番号から表を2次元に組み、結合セルは元のセルに値を広げます
- 表の選別 … 題名や列見出しに「Result」「Verdict」「Clause」「Requirement」などを含む表を、試験結果の一覧の候補にします
- ページをまたぐ表の連結 … 列見出しが同じで、続くページの先頭にある表を1つにつなぎます
- 言語の確認 … 本文の行に英字以外の文字が多いページは、英文でない可能性があるので印を付けます
4番目と6番目を軽く見ないでください。 試験結果の一覧は、ほぼ必ず複数ページにまたがり、項目名のセルが結合されています。組み直さずに AI に渡すと、2ページ目以降の行がどの試験項目に属するのかが分からなくなります。
7番目は、Textract が日本語を読めないことへの備えです。 英文の報告書に日本語の添え状が付いてくることがあり、そのページは文字として取れません。取れなかったことに気づけるように、印を残します。
AIに処理させる
させるのは、組み直した表の行を、台帳の形にそろえることだけです。 判定の良し悪しは決めさせません。
| させること | 中身 |
|---|---|
| 列の対応づけ | 機関ごとに違う列名(Clause/Requirement/Result/Verdict/Remark)を、台帳の列に当てる |
| 規格と版の分離 | 「EN 55032:2015+A1:2020」のような表記を、規格番号・版・追補に分ける |
| 判定語の書き写し | 判定欄の語をそのまま verdict_raw に写す |
| 備考の結び付け | 行の備考欄、表の脚注、「see remark 3」で参照される本文の注記を、その行に結び付ける |
| 根拠の位置 | 各行がどのページの、どの表の、何行目から来たかを残す |
| させないこと | 理由 |
|---|---|
| 判定の言い換え | 「Complies」を Pass に直すかは機関の一覧と規則で決める |
| 空欄の判定を埋める | 判定欄が空の行は空のまま。前後の行から推測すると、試験されていない項目が合格に見える |
| 版の補完 | 版が書かれていなければ空のまま。最新版だと決めつけない |
| 認証に使えるかの結論 | 申請に進めるかは品質保証部が決める |
| 条件の要約 | 脚注の条件は原文のまま写す。要約すると条件が欠ける |
2行目がいちばん起きやすい失敗です。 一覧の途中に判定欄が空の行があると、生成AIは前後が Pass なので Pass だろうと埋めがちです。それは試験されていない項目かもしれません。 空は空のまま返させ、後段のプログラムが「判定なし」として拾います。
指示内容を固定する
あなたは品質保証部で、海外の試験機関が発行した英文の試験報告書を
認証台帳に写す担当です。
渡すのは、OCRが読み取った表を行と列に組み直したものと、その脚注・注記です。
推測で埋めないでください。
【やること】
1. 表の各行を、台帳の1行にそろえてください。
列は test_item / standard / edition / amendment / clause /
verdict_raw / remarks / source にそろえます。
2. 規格の表記(例:EN 55032:2015+A1:2020)は、
standard(EN 55032)、edition(2015)、amendment(A1:2020)に分けてください。
3. verdict_raw には、判定欄に書かれた語をそのまま写してください。
P、Pass、Complies、N/A、Fail、F、Pass*、See remark などを、
別の語に言い換えないでください。
4. 行の備考欄、表の脚注、本文の注記で、その行を参照しているものがあれば、
remarks に原文のまま写してください。要約しないでください。
5. source には、ページ番号・表の番号・表の中の行番号を入れてください。
【厳守事項】
- 判定欄が空の行は、verdict_raw を空文字にしてください。
前後の行から判定を補わないでください。
- 版が書かれていない規格は edition を空文字にしてください。
最新版だと仮定しないでください。
- 認証の申請に使えるかどうか、合格と言えるかどうかは書かないでください。
- 表の行でないもの(見出し、ページ番号、繰り返しの列見出し)は行にしないでください。
- 英文でない文字列が混ざっていて読めない場合は、
その行の remarks に「読み取り不可」とだけ書いてください。
【この試験機関の判定の書き方】{lab_profile}
【表と脚注】{tables_with_footers}
【本文の注記】{notes}
「言い換えないでください」を判定と備考の両方に書くのが要点です。 生成AIは、P と Pass と Complies を同じ意味として扱うのが得意で、何も言わなければ揃えてしまいます。揃えること自体は後段でやりたい作業ですが、揃える規則を自社が持つことに意味があります。 機関によっては「Complies」を条件付きの意味で使うことがあり、その判断は機関の一覧に置きます。
出力形式を固定する
次の形のJSONで受け取ります。 Claude API の構造化出力(output_config.format に JSON スキーマを渡す)を使い、列の抜けや型の崩れを防ぎます。
{
"report": {
"report_no": "",
"issue_date": "",
"lab_name": "",
"model": "",
"unreadable_pages": []
},
"rows": [
{
"test_item": "",
"standard": "",
"edition": "",
"amendment": "",
"clause": "",
"verdict_raw": "",
"remarks": "",
"source": { "page": 0, "table": 0, "row": 0 }
}
]
}
1つ目の理由は、AI の出力と判定の正規化を別の層に置けることです。 verdict_raw は AI が写し、Pass/Fail/N/A/条件付き/判定なし への振り分けは、後段の Python が機関の一覧を見て行います。
verdict_raw の例 | 正規化 | 担当者に返すか |
|---|---|---|
| Pass、P、Complies(備考なし) | pass | 返さない(件数だけ表示) |
| Pass*、Pass, see remark、備考あり | conditional | 返す |
| Fail、F | fail | 返す |
| N/A | not_applicable | 必要な規格に含まれる項目なら返す |
| 空欄、読み取り不可 | no_verdict | 返す |
2つ目は、source で確認が速くなることです。 担当者は印の付いた行のページと表の行番号から、報告書の該当箇所を直接開けます。200ページを頭から探す必要がありません。
3つ目は、構造化出力の制約を知ったうえで使えることです。 Claude API の構造化出力では、オブジェクトに additionalProperties: false が必要で、minimum などの数値の制約や minLength などの文字列の制約は使えません。ページ番号の範囲や文字数の検査は、受け取った後に Python で行います。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 受付用の S3 | 保存の通知で Lambda を起動 | 報告書の保存を検知する |
| AWS Textract | StartDocumentAnalysis/GetDocumentAnalysis | 非同期で解析し、完了を SNS に通知する |
| Claude API | API呼び出し | 表の行を台帳の形にそろえる |
| 認証台帳 | 下書きの行の書き出し | 必要な規格・版を読み、下書きの行を出す |
| メール/チャット | 通知 | Fail と条件付きの件数と、確認の依頼を担当者へ送る |
認証台帳の確定済みの行は書き換えません。 この構成が書き出すのは「下書き」の行で、担当者が確認した行だけが確定になります。同じ製品の過去の報告書の行を上書きしないように、報告書番号ごとに行を分けます。
Fail を開発部門に知らせるのは、担当者が確認した後です。 読み取りの誤りで Fail と出た行をそのまま流すと、開発部門が存在しない不具合を調べ始めます。
人が確認する
担当者が開くのは、fail/conditional/no_verdict の行と、版の違いが出た規格だけです。 pass の行は件数を表紙の試験結果の要約と見比べ、合っていれば流します。
- 件数を合わせる … 報告書の要約に「Total: 64 items, 62 Pass, 2 Fail」のような数があれば、読み取った行の数と比べます。合わなければ、行の取りこぼしを先に疑います
failとno_verdictを見る …sourceのページを開き、判定欄と読み取り結果が同じかを確かめますconditionalの条件を読む …remarksの原文を読み、条件が製品の仕様や表示に関わるかを判断します- 版の違いを判断する … 旧版で試験された項目を、そのまま使えるか、差分試験が要るかを決めます
- 判定を覆したら記録する … どの行の正規化を、どれに変えたかを残します
1番目を省かないでください。 読み取りの失敗で一番困るのは、誤った値ではなく行が丸ごと抜けることです。抜けた行は印も付かず、誰の目にも入りません。件数の照合は、抜けに気づける唯一の手がかりです。
目標は、60通をならして1通15分です。 印の付く行が1通あたり数行という想定で、版の違いが多い月や、新しい試験機関の報告書が届いた月は15分を超えます。
例外に対処する
| 起きること | 対応 |
|---|---|
| パスワード付きの PDF | 読めない。試験機関に保護を外したものを依頼する |
| XFA を使った PDF | 読めない。印刷用の PDF を依頼するか、画像の PDF にする |
| 3,000ページ・500MB を超える | 付録を分けて別の報告書として投入する |
| 文字が小さすぎる | 検出できる文字の高さの下限は15ピクセル(150DPIで8ポイント相当)。スキャンした報告書は解像度を確かめる |
JobStatus が FAILED/PARTIAL_SUCCESS | StatusMessage と Warnings のページを記録し、該当ページを人へ回す |
| 英文でないページ | unreadable_pages に入れ、人が読む |
| 試験結果の一覧が見つからない | 判定が本文中に散らばる書式。機関の一覧に書式を追記し、初回は人が写す |
| 要約の件数と行数が合わない | 確定させず、表の組み直しを見直す |
| 同じ報告書の改訂版が届く | 報告書番号と改訂番号で判別し、旧版の行を「置き換え済み」にする |
| Textract が混み合っている | ThrottlingException/LimitExceededException は時間を置いて再試行。受付の場所から消すのは成功時だけ |
上から4行目までは、AI ではなく書類の受け取り方の問題です。 試験機関に「保護なし・印刷用の PDF で送ってほしい」と一度頼んでおくと、大半が解消します。
7行目は、新しい試験機関と取引を始めたときに必ず起きます。 機関の一覧に書式を足すまでは、その機関の報告書は人が写す前提で運用します。
記録を残す
- 元の報告書 PDF と、受け取った日時・送ってきた試験機関
- Textract の JobId と、取り出した結果の全文(S3 に保存)
- 組み直した表と、選んだ表・つないだ表の記録
- 生成AIに渡した入力と、返ってきた JSON
- 正規化の結果と、そのとき使った機関の一覧の版
- 担当者が判定を覆した記録と、確定させた日時・確定させた人
機関の一覧の版を残すのは、正規化の規則が後から変わるためです。 ある機関の「Complies」を条件付きとして扱うように変えたとき、過去のどの報告書を見直せばよいかが、この記録から決まります。
04実装レベルの3段階
最小構成では、ページの切り出しが手作業です。 200ページの報告書から一覧のページを探す作業は残るので、時間はあまり減りません。確かめるための段階です。 半自動化で、1通60分が30分程度になります。 読み取りと下書きの行は自動になりますが、判定の振り分けと版の照合は人が行います。本格構成で15分になり、この段階が本記事の想定です。 差が大きいのは、全行を見る作業が、印の付いた行だけを見る作業に変わるからです。 段階を飛ばさないでください。 半自動化の下書きを1か月見ると、試験機関ごとの判定の書き方と、読み取りで崩れやすい表の形が分かります。それを機関の一覧に入れてから本格構成に進むほうが、正規化の誤りが減ります。
05工数削減シミュレーション
導入後 60件 × 15分 ÷ 60 = 15 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 電気・電子機器、医療機器の部品、輸入品などで、海外の試験機関に安全・EMC・環境の試験を委託し、英文の試験報告書が毎月まとまって届く製造業・商社。報告書の判定を製品ごとの認証台帳に手で写しており、条件付き合格や備考の読み落としが心配な場合。報告書が数十ページから数百ページあり、判定欄を探す時間が長い場合。
- 報告書が日本語や中国語で届く場合(この構成の読み取りは英文に限る)。届く報告書が月に数通で、目視で足りる場合。試験報告書の内容をもとに適合を宣言するかどうかの判断そのものを自動化したい場合。なお、どの規格のどの版で認証を取るべきかという判断は、この構成では代替できません。
07最小構成で試す方法
- 過去3か月に届いた報告書から10通を選ぶ(うち数通は、Fail か条件付きの項目があったと分かっているものを入れる)
- その10通について、台帳に写した行を書き出しておく
- 試験結果の一覧のページだけを PDF から切り出し、手元のAIサービスに1通ずつ渡す
- 「この表の各行について、試験項目・規格・版・条項・判定欄の語・備考を表にしてください。判定欄の語は言い換えず、空欄は空欄のままにしてください」と指示する
- 出てきた表を、台帳に写した行と1行ずつ突き合わせる
10通は必ずやってください。 Textract とつなぐ前に、「表が読めれば、台帳の形にそろえられるのか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 台帳と同じ行が、同じ判定で出た | Textract との連携に進む |
| 判定欄の語が Pass に言い換えられた | 指示の書き方で直る。構成は有効 |
| 脚注の条件が行に結び付かない | 脚注を表と一緒に渡す前処理が要る。Textract の TABLE_FOOTER で解決できる |
| ページをまたいだ行の項目名が抜ける | 表の組み直しが要る。第7章の前処理の4番目と6番目 |
手元のAIサービスに渡すのは、公開済みの製品の報告書にしてください。 発売前の製品の試験結果は、社外に出せる範囲を先に確かめます。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 日本語の添え状やページが読めない | Textract は日本語に対応していない。 英文でないページに印を付けて人へ回す |
| 結果の後半が抜ける | GetDocumentAnalysis は1回1,000ブロックまで。NextToken が無くなるまで繰り返す |
| 7日後に結果が取れない | JobId は7日で無効。取り出したらすぐ S3 に保存する |
| ページをまたぐ表の行が孤立する | 列見出しの一致で表をつなぐ。結合セルの値を元のセルに広げる |
| 判定欄の語が Pass に言い換えられる | verdict_raw に原文を写させ、正規化は機関の一覧で行う |
| 空欄の判定が埋められる | 指示で禁じ、no_verdict として必ず人に返す |
| 規格の版が抜ける | 版が無ければ空のまま。台帳の必要な版と照らして人が判断する |
| 脚注の条件が行に結び付かない | TABLE_FOOTER を表と一緒に渡す。「see remark」の参照先を本文から探す |
| パスワード付きの PDF で止まる | 読めない。 試験機関に保護なしで送ってもらう |
| 問い合わせの答えが取れない | 問い合わせは英語の書類だけ、非同期で1ページ30個まで。表紙のページに限って投げる |
| 改訂版の報告書で行が重複する | 報告書番号と改訂番号で判別し、旧版の行を置き換え済みにする |
上の2行が、この構成の前提を崩す失敗です。 どちらも「読めた分だけを見て、全部読めたと思う」ことから起きます。件数の照合と、英文でないページの印は、そのための仕組みです。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 発売前の製品の型式・仕様・試験結果、試験機関とのやり取り、認証の申請の予定です。個人情報はほとんど含みませんが、発売前の製品情報は営業秘密です。
- 報告書を置く場所の権限を絞る … 受付用の S3 と結果の保存先は、品質保証部と処理用の役割だけが読めるようにします。Textract の結果を自社のバケットに出す場合は、
KMSKeyIdで暗号化の鍵を指定できます - 生成AIに渡す範囲を表と注記に限る … 台帳の形にそろえるのに、製品の回路図や部品表は要りません。渡すのは試験結果の一覧と、その脚注・注記だけにします
- 判定を自動で確定させない … この構成が出すのは下書きの行までです。Fail を条件付きと読み違えた1件は、製品の出荷に関わります
- 適合の判断を代替しない … どの規格のどの版で認証を取るか、条件付きの合格を受け入れるかは、品質保証部と開発部門が決めることです。この構成が出すのは、報告書に書かれていたことの写しだけです
- 試験機関との契約を確かめる … 試験報告書の取り扱い(第三者への開示、複製)に条件を付けている機関があります。外部のサービスで処理してよいかを、契約で先に確かめてください
- 読み取れなかったページを隠さない … 英文でないページ、読み取りに失敗したページは、台帳の行と一緒に担当者に示します
誤りが起きた場合のリスクは、Fail や条件付きを Pass として台帳に残すことと、存在しない Fail を開発部門に流すことの2つです。 前者は言い換えと空欄の補完から、後者は読み取りの誤りから起きます。前者は verdict_raw を原文のまま残すことで、後者は人の確認を通してから知らせることで防ぎます。
10まず何から始めるか
1週目:認証台帳に2つの列を足す
認証台帳に、製品ごとの「必要な規格と版」の列と、「確認状況」の列を足します。120機種すべてを一度に埋める必要はありません。今期に申請を控えている製品から埋めます。
2週目:試験機関の一覧を作る
取引のある6社について、過去の報告書を3通ずつ開き、判定欄の語、条件付きの書き方、試験結果の一覧がどこにあるかを書き出します。これが正規化の規則と、AI への指示の材料になります。
3週目:10通で試す
過去の報告書から10通を選び、一覧のページを手元のAIサービスに渡して台帳の形にそろえさせます。判定欄の語が言い換えられていないか、空欄が埋められていないかを最優先で見ます。
4週目:Textract の非同期の解析をつなぐ
S3 への保存で Lambda が動き、Textract の解析を始め、完了の通知で結果を取り出して S3 に保存するところまで作ります。この時点では生成AIを使わず、表の組み直しの結果だけを見ます。
2か月目: 生成AIで台帳の形にそろえる処理と、判定の正規化を足し、下書きの行を出します。担当者は全行を見て、印の付け方が合っているかを確かめます。3か月目以降: 必要な規格・版との突き合わせを足し、印の付いた行だけを見る運用に切り替えます。1通60分が何分になったかを実測し、件数の照合で抜けが出なくなった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 対応形式が JPEG・PNG・PDF・TIFF で、XFA の PDF は不可であること。同期は10MB・PDF/TIFF 1ページ、非同期は PDF/TIFF 500MB・3,000ページであること。パスワード付きの PDF は不可であること。対応言語が英・仏・独・伊・葡・西で、手書きは英語のみ、縦書きは不可であること。問い合わせは英語の書類のみで、非同期で1ページ30個までであること。文字の高さの下限が15ピクセル(150DPIで8ポイント相当)であること | AWS: Set Quotas in Amazon Textract | 2026-10-13 |
| StartDocumentAnalysis が S3 の文書を非同期で解析し、FeatureTypes に TABLES/FORMS/QUERIES/SIGNATURES/LAYOUT を指定できること。完了状態を SNS に通知し、SUCCEEDED を確かめて GetDocumentAnalysis を呼ぶこと。ClientRequestToken で同じ JobId が返ること。JobTag、KMSKeyId、OutputConfig。JobId が7日間有効であること | AWS: StartDocumentAnalysis | 2026-10-13 |
| GetDocumentAnalysis が KEY_VALUE_SET・TABLE・CELL・LINE・WORD・QUERY・QUERY_RESULT のブロックを返すこと。MaxResults の上限が1,000で NextToken で続きを取ること。JobStatus が IN_PROGRESS/SUCCEEDED/FAILED/PARTIAL_SUCCESS であること。StatusMessage と Warnings | AWS: GetDocumentAnalysis | 2026-10-13 |
| 表が TABLE と CELL のブロックで返り、セルに行番号・列番号・信頼度が付くこと。MERGED_CELL、TABLE_TITLE、TABLE_FOOTER、COLUMN_HEADER などの区別があること。表の種類が STRUCTURED_TABLE/SEMI_STRUCTURED_TABLE で示されること | AWS: Tables | 2026-10-13 |
構造化出力が output_config.format に JSON スキーマを渡す形であること。オブジェクトに additionalProperties: false が必要で、数値・文字列の制約は使えないこと | Claude: Structured outputs | 2026-10-13 |
試験報告書の書式と判定の書き方は、試験機関ごとに違います。 本記事で挙げた判定の語は例であり、実際の正規化の規則は取引のある機関の報告書から作ってください。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1350)についてのご相談はこちらから。
