こんにちは!某JTCで社内DXしてる人間です👀
皆さんの周りでは所謂「神エクセル」みたいなExcelの書類に遭遇することはありますでしょうか?
「神エクセル」(ネ申Excel)とは、紙への印刷(紙)を最優先して作られたため、データとしての再利用や自動処理が極めて難しい、非効率なExcelファイルの俗称で、セルの結合が多用され、方眼紙のようにマス目ごとに1文字ずつ入力する形式などが特徴です。
身近なところでいえば、行政に出す申告書なんかも基本はPDFですが、
元はExcelデータだったり、Excelのまま配布してる自治体とかもありますよね。
今回はこのような複雑奇怪で理解に困るExcel文書をPythonライブラリの「ExStruct」と「NotebookLM」を使ってLLMに内容を聞けるようにするという魂胆です。
TL;DR
-
課題
印刷前提で作られた「神エクセル」は、PDF化や画像化では構造(位置・色・役割)が失われやすく、LLMに正確に理解させるのが難しい。 -
解決策
Python ライブラリ ExStruct を使って Excel を 構造化 JSON(セル、結合、色、図形、印刷範囲など)に変換し、その JSON を NotebookLM に「テキスト」として読み込ませる。 -
検証結果
同一の市民税申告書を
PDF / 画像 / ExStruct(JSON) の3方式で比較したところ、
ExStruct(JSON) が最も高精度に- 入力すべき箇所
- 表内の位置関係(右側・左側)
- 色(ピンク=市記載欄)
を正しく理解・回答できた。
-
理由
JSON により- 視覚依存の曖昧さを排除
- 色(HEX)、位置、結合セル、図形といった意味的構造を明示
できるため、LLM が推論に頼らず判断できる。
-
注意点
ExStruct はルールベースのため 画像内容は解析不可。
画像中心の資料では画像入力の方が有利な場合もある。 -
活用シーン
神エクセル、行政帳票、図形ベースの手順書・組織図などを
LLMで検索・要約・Q&A可能な知識資産に変換したい場合に有効。
ExStruct とは
ExStruct とは Excelの内容を解析してLLMが理解可能な構造化データ(JSON, YAML, TOONなど)に変換するライブラリです。
動作にはWindows + Excelがインストールされた環境が必要という制約がありますが、通常のopenpyxlやpandasでは取得できない図形・グラフ・セル結合範囲や背景色を構造化することができます。
これを使ってExcel文書をJSONに変換したものをNotebookLMにテキストとして渡すと非常に高精度に内容を理解してくれて便利なので紹介します!
なお、ExStruct は筆者が開発している OSS ですが、
本記事では実務で使えるかどうかを重視して、他手法との比較も含めて検証しています。
NotebookLMにExcelデータを食わせてみる
実際にやっていきましょう。
まずはExcel文書を用意してください。
この記事では汎用的な市民税報告書をサンプルとして用意しました。
はい、ぱっと見るだけで読む気が失せるような神エクセルですね。
これをExStructを使って構造化データにしていきましょう。
ExStruct のインストール
pip install exstruct
または
uv add exstruct
構造化データの生成
PytnonスクリプトでもCLIでも使えますが、今回はPythonスクリプトの方でオプションの指定もしながら生成していきます。
from exstruct import (
ExStructEngine,
StructOptions,
FilterOptions,
ColorsOptions,
)
def main() -> None:
file_path = "市民税報告書.xlsx"
# エンジンの生成
engine = ExStructEngine(
options=StructOptions(
include_colors_map=True, # 背景色を構造化する
colors=ColorsOptions(
include_default_background=False # デフォルト背景色を無視
),
),
)
wb = engine.extract(file_path)
engine.export(wb, "output.json", pretty=True) # 整形
if __name__ == "__main__":
main()
出力されたJSON
非常に長いJSONが生成されたので一部省略しますが、以下のようなデータが生成されました。
{
"book_name": "県民税報告書.xlsx",
"sheets": {
"申告書(表)": {
"rows": [ // セル値の情報
{
"r": 1,
"c": {
"1": "(宛先)Z市長",
"7": "令和 年 月 日提出",
"19": " ※前年中の所得・控除等を記載してください。"
}
},
{ "r": 3, "c": { "21": "の欄には記入しないでください。" } },
{
"r": 4,
"c": {
"1": " 令和",
"6": " 年度分 市民税・県民税申告書 ",
"32": "水色",
"34": "パンチ項目"
}
},
{
"r": 5,
"c": { "19": "記入については申告の手引きをお読みください。" }
},
{ "r": 7, "c": { "32": "赤字:システム印字" } },
...
],
"shapes": [ // シート内の図形
{
"id": 1,
"text": "受付印",
"l": 523,
"t": 1021,
"kind": "shape",
"type": "AutoShape-Oval"
},
{
"id": 2,
"text": "受付(入力) 点検",
"l": 282,
"t": 959,
"kind": "shape",
"type": "TextBox-Rectangle"
},
...
],
"print_areas": [{ "r1": 1, "c1": 0, "r2": 278, "c2": 40 }], // 印刷範囲
"colors_map": { // セル背景色
"FF99CC": [
[3, 19],
[3, 20],
...
]
},
"merged_cells": {
"schema": ["r1", "c1", "r2", "c2", "v"],
"items": [
[140, 2, 149, 2, "1"],
[8, 49, 11, 51, " "],
[32, 7, 35, 11, "国民健康保険"],
[244, 14, 246, 14, "月"],
...
]
}
...
}
}
NotebookLMに食べさせる
NotebookLMはJSONなどの形式に対応していないですが、「テキスト」として読み込ませれば普通に認識します。
データ挿入時に表示される要約を見る限りしっかりと内容を理解できてそうです。
文書の内容を質問する
あとは文章に対する質問を投げかけるだけでNotebookLMが答えてくれるようになります。
他手法との回答精度比較
Excel文書読ませるならPDFとか画像にするほうが簡単だし精度高いんじゃね?って思うので実際に
- ExStruct
- 画像
の3つの読み込み方法で回答精度にどのような違いが出るか検証しました。
内容としては、先程サンプルでお見せした市民税報告書Excelを3つのやり方でそれぞれ読み込ませて同じ質問を投げかけて回答を観測します。
質問文は以下のように抽象的な質問をしてみたりしました
「市民が入力しないといけない箇所を教えて」
「表紙の右側は何を書けばいい?」
「ピンクのセルはどうすればいい?」
PDF読み込み
問1 「市民が入力しないといけない箇所を教えて」
「県民税報告書」において、市民(申告者)が記入する必要がある主な箇所は以下の通りです。
### 1. 基本情報
まず、申告者自身の特定と連絡先に関する事項を記入します。
- **令和 ○ 年 1 月 1 日時点の住所**および**現住所**
- **氏名(フリガナ)**、**生年月日**、**電話番号**(自宅・勤務先・携帯のいずれか)
- **個人番号(マイナンバー)**:行政手続で個人を識別するための番号を記載します。
- **世帯主の氏名**および**世帯主との続柄**
- **業種又は職業**
### 2. 収入金額等(1 欄)
前年中の収入について、該当する項目に金額を記入します。
- **事業所得**(農業、営業等)、**不動産所得**、**利子所得**、**配当所得**
- **給与所得**、**雑所得**(公的年金等、業務、その他)、**総合譲渡所得**、**一時所得**
### 3. 所得金額(2 欄)
収入から必要経費などを差し引いた後の金額を計算して記入します。
- 各所得(農業、営業、不動産、配当、利子、給与、雑所得、総合譲渡・一時所得)の合計額
### 4. 所得から差し引かれる金額(控除に関する事項:3・4 欄)
税金の負担を軽減するための各種控除について記入します。
- **社会保険料控除**:支払った健康保険料、国民年金、介護保険料などの合計額。
- **小規模企業共済等掛金控除**
- **生命保険料控除・地震保険料控除**:新旧の生命保険や個人年金、地震保険などの支払額。
- **寡婦、ひとり親、勤労学生控除**:該当する場合にチェックを入れます。
- **障害者控除**:本人や扶養親族が障害者の場合、障害の程度(手帳の種類や等級)を記入します。
- **配偶者控除・配偶者特別控除**:配偶者の氏名、生年月日、個人番号、合計所得金額など。
- **扶養控除**:16 歳未満の親族を含む扶養親族の氏名、生年月日、続柄、個人番号。
- **医療費控除・雑損控除**:支払った医療費や、災害等による損失金額。
### 5. その他の重要な事項
- **納税方法の選択**:給与・公的年金等以外の所得に係る税金を「給与から差引き(特別徴収)」するか「自分で納付(普通徴収)」するかを選択します。
- **寄附金に関する事項**:都道府県・市区町村(ふるさと納税など)や日本赤十字社等への寄附金額。
- **事業専従者に関する事項**:家族が事業に従事している場合、その氏名や専従者給与額。
- **前年中に収入がなかった場合などの状況**:学生である、失業保険を受給していた、遺族年金・障害年金で生活していた、貯金を取り崩していたなどの具体的な生活状況を裏面に記入します。
**源泉徴収票や控除証明書などの必要書類(コピー可)は、申告書に貼り付けずに共に提出してください**。
申告書の記入は、**「自分の 1 年間の経済活動と家族状況を市役所に伝える通信簿」**のようなものです。収入という「成果」だけでなく、保険料や家族の扶養といった「経費や事情」を正しく記入することで、適切な税額が決定されます。
問2 「表紙の右側は何を書けばいい?」
表紙(表面)の右側には、主に**「所得から差し引かれる金額(控除)」の詳細**や**「寄附金」、「納税方法」**などに関する記入欄がありますが、一部に市民が**記入してはいけない箇所**も含まれています。
具体的には、以下の内容を記入します。
### 1. 市民が記入する箇所
- **所得から差し引かれる金額(3・4 欄)**: 社会保険料控除、小規模企業共済等掛金控除、生命保険料控除、地震保険料控除、扶養控除などの具体的な金額や内容を記入します。
- **事業専従者に関する事項(6 欄)**: 家族が事業に従事している場合、その氏名や給与額などを記入します。
- **市民税・県民税の納税方法(5 欄)**: 給与以外にかかる税金を「給与から差引き」するか「自分で納付」するかを選択してチェックを入れます。
- **寄附金に関する事項(7 欄)**: ふるさと納税(都道府県・市区町村への寄附)や、日本赤十字社、共同募金会などへの寄附金額を記入します。
- **住所・氏名(再掲)**: 右下部分に、改めて住所や氏名を記入する欄があります。
### 2. 記入してはいけない箇所(市記載欄)
右側の中ほどや下部には、市役所側が使用する欄があります。
- **受付(入力)および点検欄**: 事務処理用の枠のため、記入は不要です。
- **市記載欄**: 「番号確認」「身元確認」「備考」などの項目がある枠内には、**「以下の欄には記入しないでください」**との指示があるため、何も書かないでください。
申告書の右側は、**「自分に当てはまる特別な事情(控除や寄附)を証明するエリア」**ですが、その中には**「市役所の担当者がチェックをつけるための専用スペース」**が混ざっている、と理解しておくと間違いがありません。
問3 「ピンクのセルはどうすればいい?」
提供された資料に基づくと、ピンク色(または網掛け)のセルは、主に市役所側が事務処理に使用する**「市記載欄」**です。そのため、市民(申告者)は**何も記入してはいけません**,。
具体的には、以下の点に注意してください。
- **記入の禁止**: 申告書内には**「以下の欄には記入しないでください」**という明確な指示があります,。
- **欄の内容**: この箇所には、「受付(入力)」「点検」などの事務用チェック欄や、マイナンバーの「番号確認」「身元確認」のための確認項目、および「備考」欄などが含まれています,。
- **提出時の状態**: 自分の収入や控除に関する情報をすべて記入し終えたら、ピンクの箇所は**空欄のまま**で提出してください,。
この欄は、いわば**「テストの採点欄」**のようなものです。あなたが記入するのは自分の「成果(収入や控除)」だけであり、その内容をチェックして評価(税額決定)を下すのは市役所の役割であるため、そこには手を触れずに提出することになっています。
評価
| 問 | 評価 | 考察 |
|---|---|---|
| 1 | ◎ | 概ね正しく必要なことを回答できている。少しアバウトめ |
| 2 | ✕ | 左側に書いてあることも答えており、位置は理解できていない |
| 3 | ◯ | 推論でなんとか正しい回答ができた感じ |
PDF取り込みでは恐らく内部のテキストだけを読み込んでいるので、視覚的な情報での質問がうまくいきませんでしたが、テキスト部分は概ね理解できました。
画像読み込み
問1 「市民が入力しないといけない箇所を教えて」
提供された資料に基づき、市民が記入する必要がある主な箇所を整理して解説します。この申告書は、大きく分けて**「基本情報」「収入・所得」「所得から差し引かれる金額(控除)」「個別の詳細事項」**の 4 つのカテゴリに分かれています。
すべての項目を埋める必要はなく、**ご自身の状況に該当する箇所のみ**を記入します,。
### 1. 基本情報(表面の上部)
まず、誰の申告であるかを特定するための情報を記入します。
- **住所・氏名・生年月日:** 令和〇年 1 月 1 日時点の住所と現住所、氏名(フリガナ)、生年月日を記入します。
- **個人番号(マイナンバー):** 申告者本人のマイナンバーを記入する欄があります。
- **電話番号:** 自宅、勤務先、または携帯電話の番号を記入します。
- **世帯主の情報:** 世帯主の氏名と、その方から見た続柄を記入します。
### 2. 収入金額と所得金額(表面の右側および裏面)
前年(1 月〜12 月)の収入状況を記入します,。
- **収入金額(1 欄):** 営業(農業・その他)、不動産、利子、配当、給与、公的年金等、雑(その他)、総合譲渡・一時収入の各項目について、該当する金額を記入します。
- **所得金額(2 欄):** 収入から必要経費などを差し引いた後の金額を計算して記入します。
- **給与収入の内訳(裏面 8 欄):** 源泉徴収票がない場合などは、月別の給与や賞与、勤務先の名称・所在地を詳しく記入する必要があります。
- **公的年金等以外の雑所得(裏面 9 欄):** 原稿料や副業などの詳細(支払者の名称、必要経費など)を記入します。
### 3. 所得から差し引かれる金額(表面の中央・左側)
税金の負担を軽減するための各種控除を受けるために記入します。
- **社会保険料控除(13 欄):** 健康保険、国民年金、介護保険料など、支払った保険料を記入します。
- **生命保険料・地震保険料控除(15・16 欄):** 支払った保険料の計を記入します。
- **配偶者・扶養控除(21〜24 欄):** 扶養している家族がいる場合、その氏名、生年月日、マイナンバー、続柄などを詳しく記入します。
- **医療費控除(28 欄):** 支払った医療費の合計額などを記入します。
### 4. 個別の詳細事項(表面下部および裏面)
特定の状況にある場合にのみ記入が必要な箇所です,。
- **寄附金に関する事項(表面 7 欄):** ふるさと納税などの寄附を行った場合に記入します。
- **所得がなかった方の記載欄(裏面 16 欄):** 前年中に収入がなかった場合、どのように生活していたか(遺族年金、失業保険、仕送り、貯金の取り崩しなど)をチェックまたは記入します。
- **専従者・別居親族(裏面 10・15 欄):** 事業を手伝っている親族や、別居している扶養家族がいる場合に記入します。
---
**比喩による説明:**
この申告書への記入は、**「レストランのカスタムオーダー」**に似ています。メニュー(申告書)にはたくさんの選択肢が並んでいますが、あなたが注文するのは「自分が食べたもの(得た収入)」と「トッピングや割引の権利(控除)」だけです。自分に関係のないメニューまで注文(記入)する必要はありませんが、**自分の氏名(基本情報)を書かないと、誰の注文か分からなくなってしまう**ので注意が必要です。
問2 「表紙の右側は何を書けばいい?」
申告書の表面(1 枚目)の右側には、主に**「1 収入金額」「2 所得金額」「4 所得から差し引かれる金額」「5 納税方法」**の 4 つのブロックがあります。
それぞれの項目に記入すべき内容は以下の通りです。
### 1. 収入金額(右上のブロック)
前年 1 年間の**「経費などを差し引く前の総収入」**を記入します。
- **事業(営業・農業)、不動産、利子、配当、給与、公的年金等、雑(その他)、総合譲渡、一時**の項目があります。
- 給与所得者の場合は「給与(カ)」の欄に、年金受給者の場合は「公的年金等(キ)」の欄に、源泉徴収票に記載されている支払金額を記入します。
### 2. 所得金額(中央右のブロック)
収入から必要経費などを差し引いた後の**「利益」**に相当する金額を記入します。
- 項目は収入金額と対応しており、① から ⑪ までの各欄に計算後の金額を記入します。
- 最後にこれらを合計した金額を「合計(⑫)」欄に記入します。
### 4. 所得から差し引かれる金額(右下・所得金額の下)
表面の左側(13 欄〜27 欄)で計算した**各種控除の金額を転記**する場所です。
- 社会保険料控除(⑬)から医療費控除(26 欄の下)まで、該当する控除額を書き写します。
- 最終的にこれらを合計した金額を「合計(27 + 28)(㉔)」欄に記入します。
### 5. 納税方法の選択(右側最下部)
給与や公的年金以外の所得(副業など)がある場合、その分の住民税をどうやって納めるかを選びます。
- **給与から差し引き(特別徴収):** 会社の給与から天引きして納める方法です。
- **自分で納付(普通徴収):** 自宅に届く納付書で、金融機関などで直接納める方法です。
### その他(右下の色付きの表)
- **扶養親族等の人数:** 配偶者や扶養親族の人数を、区分(特定扶養、老人扶養など)ごとに集計して記入する欄があります。
---
**比喩による説明:**
申告書の右側は、いわば**「家計の決算書」**のようなものです。左側が「レシートや証明書の整理(控除の計算)」であるのに対し、右側はそれらをまとめて**「結局いくら稼いで(収入)、経費を引いたらいくら残って(所得)、そこからどれだけ割引(控除)を適用するか」**という最終的な数字を並べる場所になっています。
問3 「ピンクのセルはどうすればいい?」
ご質問の「ピンクのセル(またはピンクの枠で囲まれた箇所)」は、主に**「所得控除(税金の割引)の詳細」**や**「扶養家族の情報」**、および**「特定の状況にある方の申告」**に関する項目です。
これらは全員が記入するものではなく、**自分に当てはまる控除や状況がある場合のみ**記入します。具体的な箇所とその内容は以下の通りです。
### 1. 表面・左側の「所得から差し引かれる金額に関する事項」(3 欄)
表面の左側にあるピンクの見出しのブロックは、各種控除を受けるための詳細を記入する場所です。
- **社会保険料・生命保険料・地震保険料(⑬〜⑯):** 支払った保険料の金額や種類を記入します。
- **寡婦・ひとり親・勤労学生控除(⑰〜⑳):** 該当する場合にチェックを入れ、学校名などを記入します。
- **配偶者・扶養控除(㉑〜㉔):** 配偶者や養っている家族の氏名、マイナンバー、生年月日、所得などを記入します。
- **雑損控除・医療費控除(27・28):** 災害での損害や、一定額以上の医療費を支払った場合に記入します。
### 2. 表面・右下の「扶養親族等の人数」と「基礎控除」
右下のオレンジやピンクに近い色の表は、家族の状況をまとめる欄です。
- **扶養親族等の人数:** 16 歳未満の扶養親族や、老人扶養親族などの人数を区分ごとに集計して数字を入れます。
- **所得と基礎控除の表:** 合計所得金額に応じて、自分がどの基礎控除額(1 万円〜43 万円)に該当するかを確認・記入する際に参照します。
### 3. 裏面のピンク色の見出し(15・16 欄)
裏面にも特定の状況の方が記入するピンクの項目があります。
- **所得金額調整控除(15 欄):** 給与収入が 850 万円を超え、かつ子供や障がい者が家族にいる場合などに記入します。
- **所得がなかった方の記載欄(16 欄):** 前年中に収入がなかった場合に、遺族年金や貯金の取り崩しなど、どのように生活していたかを選択・記入します。
---
**比喩による説明:**
申告書のピンクの箇所は、いわば**「クーポン券や割引制度の申請書」**のようなものです。青い箇所(収入)が「定価」を報告する場所だとすれば、ピンクの箇所は**「自分にはこれだけの割引を受ける権利がある」**と証明する場所です。自分に使えるクーポン(控除)がない場合は、空白のままで問題ありません。
評価
| 問 | 評価 | 考察 |
|---|---|---|
| 1 | ◎ | 項目や欄の番号、位置まで正確 |
| 2 | ◯ | 画像認識ミスで回答の番号が一部間違っている |
| 3 | ✕ | 余計なセルをピンクと誤認識している |
取り込む画像の解像度にもよりますが、2K画質を読ませた結果
PDFを読ませたときよりも高い精度で文字を認識することができました。
しかし意外でしたが、色に関する質問をした時に内部での画像処理の問題なのか間違った部分を回答しています。
ExStruct(JSON)読み込み
問1 「市民が入力しないといけない箇所を教えて」
市民が「市民税・県民税申告書」で記入すべき主な箇所は、**個人の基本情報、前年中の収入・所得金額、および各種所得控除に関する事項**です。
具体的に入力・記載が必要な箇所を整理すると以下の通りになります。
### 1. 基本情報(本人確認・連絡先など)
申告書の最上部および左側のブロックには、申告者本人に関する情報を記入します。
- **令和 ◯ 年 1 月 1 日時点の住所**および**現住所**(「同上」で済む場合はその旨を記載)。
- **氏名(フリガナ)**、**生年月日**、**電話番号**(自宅・勤務先・携帯の別)。
- **個人番号(マイナンバー)**。
- **世帯主の氏名**および**世帯主との続柄**。
- **業種又は職業**。
### 2. 収入金額等および所得金額
前年中の 1 月 1 日から 12 月 31 日までの収入と所得を記入します。
- **収入金額等**:事業(営業・農業)、不動産、利子、配当、給与、雑(公的年金等・業務・その他)、総合譲渡、一時の各項目について、該当する収入を記入します。
- **所得金額**:上記の収入から必要経費などを差し引いた後の金額を、各計算区分(①〜⑫)に従って記入します。
### 3. 所得から差し引かれる金額(所得控除)に関する事項
各種控除を受けるために必要な情報を記入します。
- **社会保険料控除**:支払った保険料の金額や種類(国民健康保険、国民年金、介護保険など)。
- **生命保険料・地震保険料控除**:新旧の区分に従い、支払った保険料の計を記入します。
- **寡婦・ひとり親・勤労学生控除**:該当する場合、チェックボックスにチェックを入れます。
- **障害者控除**:本人や扶養親族が障害者の場合、障害の程度や手帳の種別、等級を記入します。
- **配偶者控除・配偶者特別控除**:配偶者の氏名、生年月日、個人番号、合計所得金額などを記入します。
- **扶養控除**:16 歳未満の親族を含む扶養親族の氏名、個人番号、続柄、生年月日などを記入します。
- **寄附金税額控除**:都道府県・市区町村への寄附(ふるさと納税など)や、条例指定分などの寄附金額を記入します。
- **医療費控除・雑損控除**:支払った金額や補てんされる金額を記入します。
### 4. 申告書(裏面)の記載事項
表面に書ききれない詳細や、特定の状況にある場合に記入します。
- **給与収入の内訳**:源泉徴収票がない場合に月別の収入を記入します。
- **所得がなかった方の記載欄**:前年中に所得がなかった場合、生活状況(誰の扶養に入っていたか、雇用保険を受給していたか等)を選択・記入します。
- **別居の扶養親族等に関する事項**:氏名や住所を記入します。
- **事業専従者に関する事項**:氏名、生年月日、個人番号、専従者給与額などを記入します。
### 記入上の注意点
- **「※」や「の欄には記入しないでください」と書かれた箇所**(市記載欄など)は、システム印字や点検用のため、市民が記入してはいけません。
- 源泉徴収票や控除証明書などの必要書類は、申告書に貼り付けずに同封して提出してください。
この申告書は、いわば**「あなたの一年間の経済的な通知表」**を自分で作成するようなものです。国や自治体が把握していない「個人的な事情(控除)」や「副次的な収入」を正確に報告することで、正しい税額が決定されます。
問2 「表紙の右側は何を書けばいい?」
申告書(表)の**右側**には、主に申告者本人の連絡先や世帯に関する情報、および所得や控除の具体的な金額を記入する欄があります。
具体的に記入が必要な箇所は以下の通りです。
### 1. 右上部の基本情報・連絡先
申告書の最上部から右側にかけて、以下の項目を記入します。
- **提出年月日**:令和 ◯ 年 ◯ 月 ◯ 日提出と記載する欄があります。
- **電話番号**:自宅・勤務先・携帯のいずれかに丸をつけ、番号を記入します。
- **個人番号(マイナンバー)**:12 桁の個人番号を記載します。
- **業種又は職業**:現在の職業や事業の内容を記入します。
- **世帯主の氏名および続柄**:世帯主の名前と、あなたから見た世帯主との続柄(本人、妻、子など)を記入します。
### 2. 右側のメインブロック(金額の記入)
申告書の中段から下段にかけて、右側の列には以下の計算項目が並んでいます。
- **1 収入金額等**:事業(営業・農業)、不動産、利子、配当、給与、雑(年金など)、譲渡、一時所得のそれぞれの**収入金額**を記入します。
- **2 所得金額**:収入から経費などを差し引いた後の**所得金額**を、①〜⑫ の各区分に従って記入します。
- **4 所得から差し引かれる金額**:社会保険料控除(⑬)から基礎控除(㉕)までの、各控除の適用金額を記入します。
- **5 納税方法の選択**:給与・公的年金等以外の所得に係る税金の納付方法を、「給与から差引き(特別徴収)」か「自分で納付(普通徴収)」から選択してチェックを入れます。
### 3. 注意点
- **宛名番号の欄**:ここには「の欄には記入しないでください」との指示がある場合があり、基本的にはシステム印字用のため、市民が記入する必要はありません。
- **合計欄(㉙ など)**:所得控除の合計(㉖ + ㉗ + ㉘)などを計算して記入する箇所があります。
この右側の欄は、いわば**「家計の最終的な数字をまとめる集計表」**のような役割を持っています。左側に書いた具体的な控除の内容(保険料の種類や扶養家族の名前など)を、最終的にいくらの金額として差し引くのか、その「結果」を右側の各番号の欄に集約していくイメージで記入してください。
問3 「ピンクのセルはどうすればいい?」
申告書の**ピンクのセル(色が付いている箇所)については、市民が記入する必要はありません。**
具体的な理由は以下の通りです。
### 1. 市(行政)側の記載・処理用であるため
申告書には、市民が記入してはいけない箇所が明示されています。
- 申告書(表)の右上などには、**「※(の)欄には記入しないでください」**という指示があります。
- 申告書(裏)には、はっきりと**「市記載欄(以下の欄には記入しないでください)」**というブロックが設けられています。
### 2. システム処理や点検用の色分け
ソース内のデータによると、特定のカラーコードが処理用に割り振られています。
- **ピンク(FF99CC)のセル**:申告書の最上部(受付印付近)や、裏面の「市記載欄」などに配置されており、これらは行政側が点検や入力を管理するためのエリアです。
- **水色(CCFFFF)のセル**:「パンチ項目(データ入力用)」とされており、こちらも行政側がシステムに入力する際の目印として設定されています。
- **赤字**:システムによって自動的に印字される項目です。
### 結論
市民が記入すべきなのは、基本的に色がついていない**白色の空欄**です。ピンクや水色のセルは、市役所の職員が内容を確認したり、システムに数値を入力したりするために使用する「事務用スペース」ですので、**何も書かずにそのまま提出してください**。
例えるなら、学校のテスト用紙にある**「採点欄」や「先生記入欄」**のようなものです。そこは先生が点数を付けるための場所なので、皆さんは問題の答え(自分の収入や控除の情報)だけを書けば大丈夫です。
評価
| 問 | 評価 | 考察 |
|---|---|---|
| 1 | ◎ | 他手法と同様、正確に回答できている |
| 2 | ◎ | 表の位置構造を正しく認識して回答している |
| 3 | ◎ | HEX情報を元に「ピンク」を正しく認識した回答をしている |
全体評価
PDF,画像,ExStructの3つのやり方でNotebookLMにExcel書類を読み込ませましたが、ExStruct JSONで読み込ませた結果が最も高精度の回答ができることが分かりました。
ただ、ExStructはルールベースで解析していることもあり、Excel内の画像に対しては何も情報を出力できないので画像の多いような文書では画像読み込みに軍配が上がることも往々にしてあるとは思います。
実際にやるならExStruct JSON + 画像みたいに複数素材にすることで弱点を補完しあいもっと高精度に理解させる方がいいと思います。
その他活用シーン
ExStructは図形、グラフのデータ構造化を得意としてるので、図形で作られた組織図や手順書のフローチャートなどを読ませる要件なんかでもLLMに要約させたりMarkdownに変換したりといったことに使えるので、ぜひ試してみてください👀
おわりに
今回はExcel文書構造化Pythonライブラリ「ExStruct」と「NotebookLM」を使って神エクセルをLLMに解読させるアプローチを紹介しました。
みなさんも是非このライブラリを活用して業務効率化していただければ幸いです!
それでは👋
その他参考リンク
詳しいライブラリ解説は以下の記事で解説してます。





