産業廃棄物の処理業者が排出事業者から受け取る紙のマニフェストを読み取り、交付番号・品目・数量・運搬と処分の終了日を台帳にそろえて、返送の期限が近い票を拾う
排出事業者から廃棄物と一緒に受け取る紙のマニフェストを受入の日に読み取り、交付番号・品目・数量・運搬の終了日を台帳の項目にそろえます。処分の終了日から写しの送付の期限を数え、期限が近い票を担当者に出します。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- Azure AI/Google Document AI
- 連携・自動化
- Google Apps Script/Python
- 対象業界
- その他/物流
- 対象部門
- 総務
- 対象業務
- データ入力・転記/台帳・マスタ管理
- 主な課題
- 入力作業が多い/期限・対応漏れが起きる/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/対応スピード向上/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 計量所で、廃棄物と一緒にマニフェストと計量票を受け取り、事務所に回す
- 事務の担当が票を1枚ずつ見て、台帳に交付番号・交付年月日・排出事業者・種類・数量・荷姿・運搬の終了日を打ち込む
- 計量票の重さと、票の数量を見比べる
- 処分が済んだら、工程の日報を見て、台帳に処分の終了日を書き足す
- 票に処分の終了日と担当者の氏名を書き、写しを排出事業者に郵送する
- 最終処分の業者から終了の写しが届いたら、元の票を探して最終処分の場所と終了日を書き、写しを送る
- 票を排出事業者ごと・月ごとに綴じて保管する
- 人計量所で受け取った票を、計量票の番号を余白に書いてスキャンし、受入フォルダに保存する
- 自動保存をきっかけに、Form Parser が見出しの欄・表・読み取りの信頼度を返す
- 自動生成AIが、読み取った欄を台帳の項目にそろえる。数量は単位ごと書かれたまま写す
- 自動計量の記録と照らし、交付番号の重複、空欄、数量の食い違いを規則で確かめる
- 自動工程の記録から処分の終了日を引き、送付の期限を数える
- 自動期限の近い票、取引先の期限に近い票、食い違いのある票を、毎朝の一覧にする
- 人事務の担当が、印の付いた票だけを画像と並べて確かめ、台帳に移す
- 人一覧の順に票に記入し、写しを送る。送った日を記録する
各工程の詳しい説明を読む
- 計量所で、廃棄物と一緒にマニフェストと計量票を受け取り、事務所に回す
- 事務の担当が票を1枚ずつ見て、台帳に交付番号・交付年月日・排出事業者・種類・数量・荷姿・運搬の終了日を打ち込む
- 計量票の重さと、票の数量を見比べる
- 処分が済んだら、工程の日報を見て、台帳に処分の終了日を書き足す
- 票に処分の終了日と担当者の氏名を書き、写しを排出事業者に郵送する
- 最終処分の業者から終了の写しが届いたら、元の票を探して最終処分の場所と終了日を書き、写しを送る
- 票を排出事業者ごと・月ごとに綴じて保管する
(a)受入の票を毎日打ち直している。 1日に70枚前後の票が届き、事務の担当が午後の大半を打ち込みに使います。 打ち込みが遅れると、処分の終了日を書き足す行が台帳にまだ無い、ということが起きます。
(b)送付の期限を表計算で数えている。 処分の終了日から10日を数える式は台帳にありますが、終了日の書き足しが遅れると、式が動きません。 送り忘れに気づくのは、排出事業者から「まだ届かない」と電話が来たときです。
(c)最終処分の終了の写しの照合が重い。 最終処分の業者から届く写しは、自社が交付した二次の票に対するものです。元の票のどれに当たるかは、二次の票に書いた元の票の交付番号をたどって探しています。
(d)記載の食い違いに気づくのが遅い。 交付番号の書き漏れ、運搬の終了日の空欄、数量の単位の違いは、打ち込みのときに気づかなければ、写しを送る段になって初めて分かります。
- 【人】 計量所で受け取った票を、計量票の番号を余白に書いてスキャンし、受入フォルダに保存する
- 【自動】 保存をきっかけに、Form Parser が見出しの欄・表・読み取りの信頼度を返す
- 【自動】 生成AIが、読み取った欄を台帳の項目にそろえる。数量は単位ごと書かれたまま写す
- 【自動】 計量の記録と照らし、交付番号の重複、空欄、数量の食い違いを規則で確かめる
- 【自動】 工程の記録から処分の終了日を引き、送付の期限を数える
- 【自動】 期限の近い票、取引先の期限に近い票、食い違いのある票を、毎朝の一覧にする
- 【人】 事務の担当が、印の付いた票だけを画像と並べて確かめ、台帳に移す
- 【人】 一覧の順に票に記入し、写しを送る。送った日を記録する
7番目で人が見るのは、印の付いた票だけです。 読めない欄、交付番号の重複、数量の食い違いのある票に印が付き、それ以外は一覧で流し見て台帳に移します。
8番目の票への記入と送付は、人が行います。 処分を担当した者の氏名と処分の終了日を書くのは処理業者の責任で、この構成が出すのは、どの票をいつまでに送るかの一覧までです。
02今回想定するシステム構成
紙のマニフェスト(複写式。廃棄物・計量票と一緒に届く) │ 計量票の番号を余白に書いてスキャン ▼【トリガー】受入フォルダへの保存 Python(取り込みの処理) ├──▶ 1枚1ファイル、向き・明るさ・解像度の確認 ▼ Google Document AI(Form Parser) │ 見出しの欄、表、チェック欄、読み取りの信頼度 ▼ Claude API(構造化出力)── 台帳の項目にそろえる(数量は単位ごと書かれたまま) ▼ Python ── 計量の記録・交付番号の重複・空欄の確認、工程の記録から処分の終了日、送付の期限の計算 ▼ 確認の一覧(印の付いた票)と、毎朝の送付の期限の一覧 ▼ 【事務の担当が確かめて台帳に移し、票に記入して写しを送る】
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | Google Document AI(Form Parser) | Azure AI Document Intelligence |
| 生成AI | Claude API(欄の対応づけと食い違いの説明) | OpenAI API、Gemini API |
| 連携 | Python(フォルダの監視、API の呼び出し、一覧の作成) | Google Apps Script |
| 差異計算 | Python(計量の記録との照合、送付の期限の計算) | Google Apps Script |
| 保管 | 社内のファイルサーバー(票の画像と読み取りの結果) | クラウドのストレージ |
台帳には書き込みません。 この構成が出すのは、確認の一覧と、確認の済んだ行を台帳に貼れる形の書き出し、毎朝の送付の期限の一覧までです。計量の記録と工程の記録は読むだけです。
土台は Document AI の Form Parser です。 公式のプロセッサ一覧では、OCR のテキストに加えてキーと値のペア(項目とチェックボックス)、表、一般的な項目を取り出すとされ、言語の一覧で日本語(ja)は手書きに対応する言語として示されています。票の「交付番号」「交付年月日」はキーと値のペアとして、廃棄物の種類の□はチェックボックスとして読めます。
Form Parser は学習済みで、追加の学習はできないとされています。 複写式の薄い写りに合わせて精度を上げるのではなく、読めた欄を計量と工程の記録で確かめ、読めない欄を人に回す設計にします。
処理する場所に、日本のリージョンはありません。 プロセッサ一覧では、Form Parser の対応リージョンは us・eu と、シンガポール(asia-southeast1)などの単一リージョンです。票には取引先の名称と事業場の所在地、担当者の氏名が書かれているので、国外で処理されることを社内の決まりと取引先との契約に照らして確かめます。
03どうやって実装するのか
処理の起点を決める
受入の票をスキャンし、受入フォルダに保存したことを起点にします。 計量所で受け取った票は、昼と夕方の2回、事務所に回ってきます。回ってきたときにまとめてスキャンし、届いたものから読み取ります。 1日の終わりにまとめると、処分の終了日の書き足しに台帳の行が間に合いません。
スキャンの前に、票の余白に計量票の番号を書きます。 計量所で票を受け取ったときに書くのがいちばん確実です。この番号で、票と計量の記録を1対1で結びます。 交付番号は排出事業者が付けたもので、計量の記録には入っていないからです。
送付の期限の一覧は、別に毎朝決まった時刻に作ります。 受入の読み取りとは起点が違い、こちらは台帳と工程の記録をもとに、その日に送るべき票を並べます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 票の画像 | 1回分をまとめたPDF。日付と、余白の計量票の番号 | 受入フォルダ |
| 読み取りの結果 | テキスト、見出しの欄、表、チェック欄、信頼度 | Google Document AI |
| 計量の記録 | 計量票の番号、搬入の日時、車両、排出事業者、品目、正味の重さ | 計量のシステムの書き出し |
| 工程の記録 | 処理の日、処理した品目と量、処分を担当した者、計量票の番号との結び付き | 処理の工程の日報 |
| 取引先の一覧 | 排出事業者の名称・事業場・契約で受ける廃棄物の種類 | 総務で管理する一覧 |
| 二次の票の記録 | 自社が交付した二次の票の交付番号と、もとになった票の交付番号 | 自社の交付の記録 |
質を決めるのは、工程の記録と計量票の番号の結び付きです。 処分の終了日は、票を見ても分かりません。どの搬入の廃棄物をいつ処理し終えたかが工程の記録に残っていなければ、送付の期限を数える起点がありません。 ここが無いうちは、終了日だけ人が台帳に入れる運用にします。
二次の票の記録は、最終処分の終了の照合に使います。 施行規則は、中間処理業者が交付する票に、もとになった票を交付した者の名称と交付番号を記載事項として定めています。最終処分の業者から写しが届いたら、二次の票の交付番号から元の票の交付番号をたどります。
データの取得方法を決める
読み取りは、Python から Form Parser のプロセッサを呼んで行います。返ってくる Document から、見出しの欄・表・チェック欄・信頼度を取り出します。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 全テキスト | text | ほかの欄が startIndex・endIndex で指す原文 |
| 見出しの欄 | pages[].formFields(fieldName と fieldValue) | 交付年月日・交付番号・排出事業者・事業場・運搬の受託者・運搬の終了日 |
| チェック欄 | 値の種類(filled_checkbox / unfilled_checkbox) | 廃棄物の種類、荷姿 |
| 表 | pages[].tables(headerRows と bodyRows) | 種類ごとの数量の欄 |
| 信頼度 | 各要素の信頼度 | 確認の要る欄の印 |
廃棄物の種類は、□のチェックで選ぶ欄が多い形です。 Form Parser の説明では、チェックの付いた欄は filled_checkbox、付いていない欄は unfilled_checkbox として返ります。種類の名前がキーに、チェックの状態が値に入るので、取引先の一覧の「契約で受ける種類」と名前で突き合わせます。
ただし、Form Parser の説明では、見つかったチェックボックスに対応するキーが無いこともあるとされています。 複写の写りが薄いと、□のチェックは取れても横の種類の名前が読めないことがあります。キーの無いチェックは、ページ上の位置で票の種類の並びに当てはめ、当てはめられなければ印を付けます。
計量の記録と工程の記録は、それぞれのシステムから毎朝と毎夕に書き出したものを読みます。照合は計量票の番号で行い、排出事業者の名前では行いません。 名前で引くと、同じ会社の別の事業場を取り違えます。
AIへ渡す前に整形する
- 1枚1ファイルに分ける … まとめてスキャンしたPDFを、票1枚ずつに分けます。同期の要求のページ数の上限は15です
- 明るさとコントラスト … 複写の薄い写りを読みやすくするため、明るさを整えます
- 解像度 … 交付番号の数字が潰れないよう、複合機の既定より高い解像度でスキャンします
- 向きと傾き … 傾きを直します
- 計量票の番号の読み取り … 余白に書いた番号を先に読み、計量の記録にあるかを確かめます
- 重複の検知 … 同じ交付番号の票が二度入ったら印を付けて止めます
2番目を軽く見ないでください。 受け取る票は複写の写しで、ボールペンの筆圧が弱いと、数字の一部が写っていません。 写っていない数字は、書かれていないのか読めなかったのかの区別がつかないので、信頼度の低い欄は必ず人に回します。
AIに処理させる
生成AIにさせるのは、読み取った欄を台帳の項目にそろえることと、食い違いの説明を付けることです。 日付の計算と期限の判定はさせません。
| 見るもの | させること | 判断できないときの扱い |
|---|---|---|
| 見出しの欄 | 交付年月日・交付番号・排出事業者・事業場・運搬の受託者・運搬の終了日に当てる | 当てられない欄は unknown |
| 廃棄物の種類 | チェックの付いた欄の名前を返す | 1つも取れなければ no_type_detected |
| 数量 | 数字と単位を、書かれたまま分けて写す | 単位が無ければ unit_missing |
| 荷姿 | チェックの付いた欄か、書かれた文字を写す | 空なら空 |
| 交付番号 | 書かれた文字をそのまま写す | 読めない桁があれば空にし unreadable |
| 食い違いの説明 | 規則で見つかった食い違いを、担当者が読む短い文にする | 規則の結果を書き換えない |
数量を単位ごと写させるのは、計量の記録と比べるためです。 計量はkgですが、票の数量はm³や台で書かれることがあります。単位が同じときだけ比べ、違うときは比べずに、そのことを一覧に出します。 換算の係数で比べると、係数の当て方で食い違いが消えたり生まれたりします。
| させないこと | 理由 |
|---|---|
| 日付の補い | 運搬の終了日が空なら、計量の日で埋めない。空であることが記載の不足 |
| 数量の単位の換算 | m³とkgを換算して比べると、食い違いの判断が係数に左右される |
| 交付番号の補い | 桁を足す、似た番号に直すと、別の票と結び付く |
| 送付の期限の計算 | 日付の計算は Python で行う |
| 記載の不備を訂正すべきかの判断 | 排出事業者とのやり取りが要る。人が決める |
1行目がいちばん起きやすい失敗です。 運搬の終了日の欄が空の票を渡すと、計量の日をもとに「搬入日と同じ」と埋めることがあります。埋めた瞬間、運搬の受託者が記載すべき事項が書かれていないという事実が消えます。
指示内容を固定する
あなたは産業廃棄物の処理業者の総務で、受け取ったマニフェストの読み取り結果を台帳の形にそろえる担当です。
OCRが返した欄だけを見てください。推測で埋めないでください。
【台帳の項目】
issue_date(交付年月日)、manifest_no(交付番号)、generator_name(排出事業者の名称)、
site_name(事業場の名称)、site_address(事業場の所在地)、waste_types(廃棄物の種類)、
quantity_value(数量の数字)、quantity_unit(数量の単位)、packing(荷姿)、
carrier_name(運搬の受託者)、transport_end_date(運搬の終了日)、
scale_ticket_no(余白の計量票の番号)
【厳守事項】
- 各欄を台帳の項目に当ててください。当てられない欄は unknown_fields に入れてください。
- 日付は書かれた文字のまま写してください。和暦を西暦に直さないでください。
空の日付を、ほかの日付や計量の日で埋めないでください。
- 交付番号は書かれた文字のまま写してください。桁を補わないでください。
読めない桁があれば manifest_no を空にし、unreadable_fields に入れてください。
- 数量は、数字と単位を分けて写してください。単位を換算しないでください。
単位が書かれていなければ quantity_unit を空にし、flags に unit_missing を入れてください。
- 廃棄物の種類は、チェックが付いた欄(filled_checkbox)の名前だけを入れてください。
印刷された種類の名前をすべて拾わないでください。
- 【規則で見つかった食い違い】があれば、notes に担当者が読む短い説明を書いてください。
食い違いの結果を変えたり、正しい値を推測したりしないでください。
- 送付の期限や、記載の不備を訂正すべきかどうかは書かないでください。
【OCRの見出しの欄】{form_fields}
【OCRのチェック欄】{checkboxes}
【OCRの表】{tables}
【規則で見つかった食い違い】{rule_findings}
「計量の日で埋めない」と、埋める元を名指しして禁じます。 「推測しない」だけでは、搬入の日を根拠のある値として使います。禁じたいのは、別の記録から票の空欄を埋めることそのものです。
和暦を西暦に直させないのは、変換は Python で行うからです。 「令和8年10月」のような書き方を、生成AIの変換とプログラムの変換の両方が扱うと、どちらで食い違ったかが追えなくなります。
出力形式を固定する
次の形のJSONで受け取ります。
{
"scan_id": "",
"scale_ticket_no": "",
"issue_date": "",
"manifest_no": "",
"generator_name": "",
"site_name": "",
"site_address": "",
"waste_types": [""],
"quantity_value": "",
"quantity_unit": "",
"packing": "",
"carrier_name": "",
"transport_end_date": "",
"unreadable_fields": [""],
"unknown_fields": [""],
"flags": ["unit_missing | no_type_detected"],
"notes": ""
}
Claude の構造化出力では、オブジェクトに additionalProperties: false を設定する必要があり、数値の minimum・maximum や文字列の長さの制約は使えないとされています。 交付番号の桁数や日付の範囲は Python の側で確かめます。
後段の照合と期限の計算は、この出力に対して規則で行います。
| 照合・計算 | 外れたとき・出す内容 |
|---|---|
| 計量票の番号が計量の記録にある | 無ければ scale_not_found。票と計量の結び付きを人が確かめる |
| 交付番号が台帳にまだ無い | あれば duplicate_no。二重の受入か書き間違いかを確かめる |
| 交付年月日・交付番号・運搬の終了日が空でない | 空なら item_missing |
| 廃棄物の種類が、取引先の契約で受ける種類に入っている | 外れたら type_not_contracted |
| 単位がkgかtのとき、計量の正味の重さとの差が基準内 | 外れたら quantity_gap。単位が違えば unit_differs として比べない |
| 工程の記録に処分の終了日がある | あれば、終了日から10日を写しの送付の期限とする |
| 最終処分の終了の写しを受け取った日がある | あれば、受け取った日から10日を送付の期限とする |
| 交付年月日から90日・180日(特別管理産業廃棄物は60日)に近い | 取引先の期限に近い票として、一覧の上に出す |
期限の数え方は、施行規則の条文で確かめた日数を、規則の表として Python に持たせます。 生成AIの出力からは日付の文字だけを受け取り、期限の計算そのものは毎回同じ規則で行います。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 受入フォルダ | Python のフォルダ監視 | 新しいファイルを見つける |
| Google Document AI | API呼び出し | 見出しの欄・表・チェック欄・信頼度を返す |
| Claude API | API呼び出し | 台帳の項目への対応づけと食い違いの説明 |
| 計量の記録・工程の記録 | 毎朝と毎夕の書き出しファイル | 計量票の番号での照合、処分の終了日 |
| 取引先の一覧・二次の票の記録 | 表計算の読み取り | 契約の種類、最終処分の照合 |
| 確認の一覧・送付の期限の一覧 | 社内の共有の表計算ファイル | 印の付いた票と、送るべき票を並べる |
台帳への移しと、票への記入、写しの送付は人が行います。 送付の期限の一覧には、票の画像へのリンクと保管の場所(綴じた月と排出事業者)を並べ、担当者が票を探さずに記入できるようにします。 送った日は一覧に記録し、翌朝の一覧から外れます。
人が確認する
人が見るのは、印の付いた票と、毎朝の送付の期限の一覧です。
scale_not_foundとduplicate_noを先に見る … 票と計量の結び付きが崩れていると、以後の照合が全部ずれます- 空欄と読めない欄を確かめる …
item_missingは票の実物を見て、本当に空欄かを確かめます。本当に空欄なら、訂正をどう求めるかを担当者が決めます - 数量と種類の食い違いを確かめる …
quantity_gap・type_not_contractedは、計量所と現場の担当に聞いて確かめます - 台帳に移す … 確かめた行を台帳に移します
- 毎朝の一覧の順に票に記入し、写しを送る … 期限の近いものと、取引先の期限に近いものから送ります
2番目で、空欄を計量や工程の記録で埋めないでください。 運搬の終了日は運搬の受託者が書く欄で、自社が運搬していない票なら、埋めるのは自社の役目ではありません。
目標は、1,500枚をならして1枚0.8分です。 印の無い票は一覧で流し見て数秒、印の付いた票は画像と記録を見て確かめるので数分かかります。
例外に対処する
| 起きること | 対応 |
|---|---|
| 複写が薄くて数字が読めない | unreadable。票の実物を見る。読めなければ排出事業者に控えで確かめる |
| 余白に計量票の番号が無い | 搬入の日時と車両から人が結び付ける |
| 1つの搬入に複数の票がある | 計量票の番号に複数の票を結び付け、数量の合計で比べる |
| 単位が m³ や台で計量と比べられない | unit_differs。比べずに一覧に出す |
| 種類のチェックが1つも取れない | no_type_detected。画像で人が確かめる |
| 工程の記録に処分の終了日が無い | 期限を数えず、終了日の入力待ちとして一覧に出す |
| 最終処分の写しの元の票が見つからない | 二次の票の記録を人が確かめる |
| 電子マニフェストの分の紙の控えが混ざる | 書式で分け、この構成では扱わない |
| Document AI が応答しない | フォルダに残し、事務の担当がいまの手順で打ち込む |
上の3行が大半を占めます。 どれも、複写式の票の写りと、計量所での受け取り方の問題です。 計量所で番号を書く手順を守り、受け取ったときに写りの薄い票をその場で確かめるほうが、指示を直すより効きます。
記録を残す
- 票の画像と、スキャンした日時・計量票の番号
- OCR が返した
Documentの全文(text、formFields、tables、信頼度) - 生成AIの出力(台帳の項目、
flags、notes)と、規則の照合の結果 - 人が直した欄の記録 … どの票の、どの欄を、何から何に直したか。直した担当と日時
- 送付の期限と、写しを送った日・送った担当
送った日の記録は、取引先からの問い合わせへの答えになります。 「まだ届かない」と言われたとき、処分の終了日、送付の期限、送った日がつながっていれば、郵送の途中か送り忘れかがすぐに分かります。
04実装レベルの3段階
最小構成では枚数がさばけません。 1枚ずつ貼るので、月1,500枚には使えません。複写式の票が読めるかを確かめる段階です。 半自動化で、1枚3分が1.5分程度になります。 打ち込みは自動になりますが、計量との照合と期限の管理を人が行います。本格構成で0.8分になり、この段階が本記事の想定です。 差が大きいのは、照合と期限の計算が自動になり、人が見るのが印の付いた票と毎朝の一覧だけになるからです。 段階を飛ばさないでください。 半自動化の一覧を1か月見ると、計量票の番号が書かれていない搬入の経路と、工程の記録に終了日が残らない品目が見えます。そこを直してから本格構成に進むほうが、期限の計算が止まる票が減ります。
05工数削減シミュレーション
導入後 1,500件 × 0.8分 ÷ 60 = 20 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 数百の排出事業者から産業廃棄物を受け入れ、紙のマニフェストを月に千枚以上受け取っている中間処理業者・収集運搬業者。受け取った票を事務所で台帳に打ち直し、処分の終了日と写しの送付を表計算で管理していて、送付の遅れや送り忘れを排出事業者からの問い合わせで知ることがある場合。計量の記録と処理の工程の記録がデータで残っている場合。社内に Python を動かせる PC かサーバーがある場合。
- 受け入れる産業廃棄物のほとんどが電子マニフェストで、紙の票が月に数十枚しか無い場合。排出事業者が数社に限られ、担当者が手元の一覧で追える場合。なお、処分の終了日をいつとするか、記載の不備の訂正をどう求めるか、処理が適正に行われたかの判断は、この構成では代替できません。
07最小構成で試す方法
- 先月受け取った票から30枚を選ぶ(写りの薄いもの、単位が m³ や台のもの、運搬の終了日が空のもの、種類を複数選んだものを入れる)
- その30枚について、台帳に入っている値を書き出しておく
- 票の画像を、手元の生成AIの画面に1枚ずつ貼る
- 「このマニフェストの交付年月日・交付番号・排出事業者・事業場・種類・数量と単位・荷姿・運搬の受託者・運搬の終了日を表にしてください。空欄は空にし、ほかの日付で埋めないでください。単位を換算しないでください」と指示する
- 出てきた表を、台帳の値と1欄ずつ比べる
30枚は必ずやってください。 Form Parser とプログラムを組む前に、複写式の票が読めるのかを確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 台帳とほぼ同じ表が出た | OCR の API と照合の処理に進む |
| 空の運搬の終了日をほかの日付で埋めた | 指示で直る。後段の空欄の確認は必ず残す |
| 単位を換算して数量を出した | 指示と、単位を分けて受ける出力で止められる |
| 写りが薄くて読めない票が多い | スキャンの設定と受け取り方が先。 AIの問題ではない |
4行目が出ることは珍しくありません。 失敗ではなく、打ち込みに時間がかかっていた理由が1つ分かったということです。 明るさとコントラストを変えて、同じ30枚を撮り直してみてください。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 空の運搬の終了日を計量の日で埋める | 埋める元を名指しして禁じ、空欄に印を付ける |
| 単位を換算して数量の食い違いが消える | 単位ごと写し、単位が同じときだけ比べる |
| 交付番号を似た番号に直す | 書かれたまま写し、読めない桁があれば空にする |
| 印刷された種類の名前を全部拾う | チェックの付いた欄だけを種類とする |
| 票と計量の記録が結び付かない | 計量所で計量票の番号を余白に書く |
| 和暦の変換が二か所で行われる | 変換は Python だけで行う |
| 工程の記録に終了日が残らない | 終了日の入力待ちとして一覧に出し、記録の取り方を直す |
| 最終処分の写しの元の票が分からない | 二次の票の記録に元の票の交付番号を持たせる |
| 国外で処理されることを確かめていない | 日本のリージョンは無い。 社内の決まりと取引先との契約に照らす |
| 台帳に自動で書き込む | 確認の一覧までにし、移すのは人 |
上の3行が、この構成でいちばん重い失敗です。 どれも、生成AIが「親切に」整えた値が台帳に入り、記載の不足や食い違いという事実が消える経路です。 空欄は空欄のまま、単位は単位のまま残します。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 排出事業者の名称と所在地、事業場、交付を担当した者の氏名、廃棄物の種類と数量、運搬の受託者です。取引先ごとの廃棄物の量は、取引先の事業の規模や工程をうかがわせる情報です。
- 処理の場所を確かめる … Form Parser の対応リージョンに日本はありません。
us・euかシンガポールなどから選びます。取引先の情報が国外で処理されることを、社内の決まりと取引先との契約に照らして確かめます - 生成AIに渡す範囲を絞る … 生成AIには読み取った欄と規則の結果だけを渡し、計量の記録や取引先の一覧そのものは渡しません。照合は Python の側で行います
- 期限の計算を生成AIに任せない … 送付の期限は、施行規則で定められた日数を規則として Python に持たせて数えます。法令が改正されたら、規則の表を人が直します
- 票への記入と送付は人が行う … 処分を担当した者の氏名と処分の終了日を書くのは処理業者の責任です。この構成は、記入する票と期限を並べるだけです
- 票の原本を保存する … 廃棄物処理法と施行規則は、処分の受託者が写しを送付したときに、その管理票を送付の日から5年間保存することを求めています。画像を残すようになっても、紙の票の保存はこの決まりに従います
- 記載の不備への対応を人が決める … 空欄や食い違いを見つけたときに、排出事業者や運搬の受託者にどう確かめ、どう訂正を求めるかは担当者が決めます
誤りが起きた場合のリスクは、写しの送付が期限に遅れることと、記載の不足を見落としたまま台帳に入れることの2つです。前者は工程の記録からの期限の計算と毎朝の一覧で、後者は空欄を埋めさせない指示と、規則による照合で防ぎます。
10まず何から始めるか
1週目:計量所での受け取り方を決める
計量所で票を受け取ったときに、余白に計量票の番号を書く手順を決めます。写りの薄い票は、その場で運転手に確かめる手順も足します。
2週目:30枚で試す
先月の票から30枚を選び、最小構成で台帳の形の表にさせて、台帳の値と比べます。空の日付をほかの日付で埋めていないか、単位を換算していないかを最優先で見ます。
3週目:工程の記録と期限の規則を整える
工程の記録に、処分の終了日と計量票の番号の結び付きを残せるかを、処理の現場と相談します。送付の期限の日数は、施行規則の条文を見て規則の表にします。
4週目:受入フォルダから一覧までをつなぐ
票をスキャンすると Form Parser が動き、台帳の項目の一覧に書き出すところまで作ります。この時点では照合を入れず、読み取りの結果だけを見ます。
2か月目: 計量の記録との照合、交付番号の重複、空欄の確認を足し、印の付いた票だけを確かめる運用にします。3か月目以降: 工程の記録からの処分の終了日、送付の期限と取引先の期限の毎朝の一覧を足し、1枚3分が何分になったかを実測します。送付の遅れを取引先からの電話で知ることが無くなった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
Form Parser がキーと値のペア(項目とチェックボックス)、表、一般的な項目を OCR のテキストに加えて取り出すこと。言語の一覧で日本語(ja)が手書きに対応する言語として示されていること(原文の HTML で確認)。対応リージョンが us・eu・asia-southeast1 などで日本が無いこと。同期の要求のページ数の上限が15であること | Google Cloud: Processor list | 2026-10-14 |
| Form Parser が学習済みで追加の学習ができないこと。チェックボックスがキーと値のペアとして返ること。見つかったチェックボックスに対応するキーが無いことがあること | Google Cloud: Form Parser | 2026-10-14 |
text が認識されたテキストの元であり、ほかの欄が startIndex・endIndex で指すこと。formFields が fieldName と fieldValue を持つこと。チェックの有無が filled_checkbox・unfilled_checkbox で示されること。表が headerRows と bodyRows に分かれること | Google Cloud: Handle the processing response | 2026-10-14 |
構造化出力が output_config.format に JSON スキーマを指定して有効になること。オブジェクトに additionalProperties: false が必要なこと。数値の minimum・maximum や文字列の minLength・maxLength が非対応であること | Claude Docs: Structured outputs | 2026-10-14 |
| 廃棄物処理法第12条の3で、処分の受託者が処分を終了したときに管理票に必要な事項を記載して写しを管理票交付者に送付すること、最終処分が終了した旨の写しを受けたときも同様に送付すること、送付した管理票を保存することが定められていること(法令APIで条文を確認) | e-Gov 法令API: 廃棄物の処理及び清掃に関する法律 | 2026-10-14 |
| 施行規則で、処分の受託者の記載事項が氏名又は名称・処分を担当した者の氏名・処分を終了した年月日など(第8条の24)、送付の期限が処分を終了した日から10日(第8条の25)、最終処分の終了の写しの送付が10日(第8条の25の3)、処分の受託者の管理票の保存が5年(第8条の30の2)であること。管理票交付者が写しの送付を受けるまでの期間が交付の日から90日(特別管理産業廃棄物は60日)・180日であること(第8条の28)と、措置と報告(第8条の29)。中間処理業者の交付する管理票に、もとの管理票の交付者と交付番号を記載すること(第8条の21)(法令APIで条文を確認) | e-Gov 法令API: 廃棄物の処理及び清掃に関する法律施行規則 | 2026-10-14 |
処分の終了日をいつとするか、記載の不備への対応、写しの送付の期限の数え方は、所管の都道府県などに確かめて判断してください。 本記事は、上記の公開情報で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1524)についてのご相談はこちらから。
