この記事のポイント
- Ollama + Qwen3 で「交通費の課税/非課税判定」を20件のテストデータで比較
- 14B (Dense) / 30B-A3B (MoE) / 32B (Dense) の3モデルを同一条件で実行
- 32B Dense が正答率 100%(20/20)。ただし処理時間は12分40秒
- 実運用は「軽いモデルで下仕分け → 微妙なケースだけ重いモデル → 最終は人間確認」が現実的
- モデルの精度以上に、プロンプトに渡すルールの正確性が結果を左右した
やろうと思ったきっかけ
経費精算で交通費の課税/非課税を判定する作業がある。ルール自体はシンプルだが、件数が増えると手作業がしんどい。
GPT や Claude に投げたいが、社員名入りの経費データを外部APIに送るのは情報管理上NG。Ollama をローカル構成で使えば、推論リクエストは localhost 上で完結し、外部に経費データを送らずに検証できる。この前提で精度がどこまで出るかを検証した。
環境
| 項目 | 内容 |
|---|---|
| GPU | NVIDIA RTX 4090 (VRAM 24GB) |
| ランタイム | Ollama 0.17.7 |
| OS | Windows 11 Pro |
Ollama は 公式サイト からインストールするだけで動く。
モデル選定
日本語の税制ルールを理解する必要があるため、日本語性能を最優先で選定。
Qwen3 は日本語性能に定評があり、ローカル実行しやすいサイズ帯が揃っている。RTX4090 の VRAM 24GB に収まるサイズで3段階を用意した。
| モデル | パラメータ | VRAM目安 | アーキテクチャ | Ollamaタグ |
|---|---|---|---|---|
| Qwen3-14B | 14B | ~9GB | Dense | qwen3:14b |
| Qwen3-30B-A3B | 30.5B total / 3.3B activated | ~19GB | MoE | qwen3:30b |
| Qwen3-32B | 32.8B | ~20GB | Dense | qwen3:32b |
# モデルのダウンロード
ollama pull qwen3:14b
ollama pull qwen3:30b # モデル実体は Qwen3-30B-A3B(MoE)
ollama pull qwen3:32b
規定設定で使う範囲では、RTX 4090 で 14B / 30B / 32B いずれも動かせた。
不採用にしたモデル:
- DeepSeek-R1 Distill 32B: 推論力は強いが英語/中国語が主力。日本語の税制タスクには不向き
- GPT-OSS 120B: RTX4090ではまともな速度が出ない
評価データ
交通費精算の典型パターン20件をCSVで作成。意図的に判定が難しいケースを混ぜた。
日付,社員名,交通手段,出発地,到着地,金額,目的,備考
2026-01-10,田中太郎,電車,東京駅,横浜駅,480,顧客訪問,
2026-01-10,田中太郎,タクシー,横浜駅,顧客オフィス,2300,顧客訪問,電車遅延のため
2026-01-12,佐藤花子,新幹線,東京駅,名古屋駅,11300,出張,日帰り出張
2026-01-12,佐藤花子,タクシー,名古屋駅,名古屋支社,1800,出張,
2026-01-15,鈴木一郎,自家用車,自宅,本社,5000,通勤,片道25km×2日分
2026-01-15,山田次郎,電車,自宅最寄駅,会社最寄駅,15000,通勤,1ヶ月定期代
2026-01-18,田中太郎,飛行機,羽田空港,伊丹空港,25000,出張,大阪出張
2026-01-18,田中太郎,タクシー,伊丹空港,大阪支社,4500,出張,
2026-01-20,佐藤花子,電車,会社最寄駅,セミナー会場,320,研修,社外セミナー参加
2026-01-22,鈴木一郎,グリーン車,東京駅,大宮駅,1580,顧客訪問,普通車との差額780円
2026-01-25,山田次郎,自家用車,本社,取引先,3000,営業,片道15km・ガソリン代として
2026-01-25,高橋美咲,電車,自宅最寄駅,会社最寄駅,200000,通勤,6ヶ月定期代
2026-01-28,田中太郎,タクシー,会社,自宅,3500,帰宅,深夜残業(終電後)
2026-02-01,佐藤花子,高速バス,東京駅,名古屋駅,3500,出張,
2026-02-03,鈴木一郎,レンタカー,名古屋支社,顧客先3社,8500,営業,1日レンタル+ガソリン代
2026-02-05,山田次郎,特急列車,新宿駅,甲府駅,4130,出張,特急料金含む
2026-02-08,高橋美咲,自転車,自宅,本社,0,通勤,交通費申請なし(参考記録)
2026-02-10,田中太郎,電車,東京駅,品川駅,170,社内会議,別オフィスでの会議
2026-02-12,佐藤花子,タクシー,会社,取引先,12000,接待同行,取引先役員との会食後送迎
2026-02-15,鈴木一郎,新幹線グリーン車,東京駅,新大阪駅,19590,出張,役員同行のため
正解ラベル
| # | ケース | 正解 | 根拠 |
|---|---|---|---|
| 1 | 電車で顧客訪問 480円 | 非課税 | 出張旅費(通常の経路) |
| 2 | タクシー(電車遅延)2,300円 | 非課税 | 合理的理由あり |
| 3 | 新幹線 日帰り出張 11,300円 | 非課税 | 出張旅費(通常の経路) |
| 4 | タクシー 名古屋駅→支社 1,800円 | 非課税 | 出張先への通常移動 |
| 5 | マイカー通勤 片道25km 5,000円 | 非課税 | 限度額内 |
| 6 | 電車通勤 月15,000円 | 非課税 | 月額150,000円以内 |
| 7 | 飛行機 大阪出張 25,000円 | 非課税 | 出張旅費(通常の経路) |
| 8 | タクシー 伊丹空港→支社 4,500円 | 非課税 | 出張先への通常移動 |
| 9 | 電車 セミナー参加 320円 | 非課税 | 業務交通費 |
| 10 | グリーン車 顧客訪問 1,580円 | 要確認 | 社内規程の確認要 |
| 11 | マイカー 営業出張 3,000円 | 非課税 | 業務目的の交通費 |
| 12 | 電車通勤 6ヶ月定期 200,000円 | 一部課税 | 月額換算≒33,333円で150,000円以内だが6ヶ月一括は超過分あり |
| 13 | 深夜タクシー帰宅 3,500円 | 要確認 | 業務必要性の確認要 |
| 14 | 高速バス 出張 3,500円 | 非課税 | 出張旅費(通常の経路) |
| 15 | レンタカー 営業 8,500円 | 非課税 | 業務目的の交通費 |
| 16 | 特急列車 出張 4,130円 | 非課税 | 出張旅費(通常の経路) |
| 17 | 自転車通勤 0円 | 対象外 | 交通費申請なし |
| 18 | 電車 社内会議 170円 | 非課税 | 業務交通費 |
| 19 | タクシー 接待同行 12,000円 | 要確認 | 交際費との区分確認要 |
| 20 | 新幹線グリーン車 出張 19,590円 | 要確認 | 社内規程の確認要 |
正解ラベルは国税庁のタックスアンサーと社内運用ルールをもとに手作業で作成した。社内規程や業務必要性が前提になるものは「要確認」とした。
難問ケースの設計意図
| # | ケース | なぜ難しいか |
|---|---|---|
| 12 | 6ヶ月定期代20万円 | 月額換算すると約3.3万円で15万以下。LLMが月割り計算できるか |
| 10, 20 | グリーン車利用 | 通勤手当ではグリーン料金は非課税対象外。出張旅費なら通常必要性と社内規程次第 |
| 13 | 深夜タクシー帰宅 | 業務上の必要性があるかの判断 |
| 19 | 接待同行のタクシー | 交通費か交際費かの区分問題 |
| 4, 8 | 出張中の駅→目的地タクシー | 目的列の「出張」とタクシー利用を結びつけられるか |
評価方法
| 項目 | 条件 |
|---|---|
| 採点対象 | 判定列のみ(根拠文は採点対象外) |
| 実行回数 | 各モデル1回 |
| 生成パラメータ | Ollama 規定(対話モード。temperature / seed 未固定) |
| 処理時間 | 初回ロード後、プロンプト投入からレスポンス完了まで |
| 出力形式 | Markdown表(プロンプトで指定) |
プロンプト設計
1つのプロンプトに以下を含めた。
あなたは日本の所得税法に基づく交通費の課税/非課税判定を行う経理アシスタントです。
## 判定ルール
### 通勤手当(所得税法9条1項5号、所得税法施行令20条の2)
- 公共交通機関: 月額150,000円まで非課税。超過分は課税対象
- 新幹線・特急料金は合理的経路であれば非課税対象に含まれるが、グリーン料金は含まれない
- マイカー通勤: 片道距離に応じた非課税限度額あり(国税庁タックスアンサーNo.2585)
- 2km未満: 全額課税
- 2km以上10km未満: 4,200円/月
- 10km以上15km未満: 7,300円/月
- 15km以上25km未満: 13,500円/月
- 25km以上35km未満: 19,700円/月
- 35km以上45km未満: 25,900円/月
- 45km以上55km未満: 32,300円/月
- 55km以上: 38,700円/月
### 出張旅費・業務交通費(所得税法9条1項4号)
- 勤務場所を離れて職務遂行のために行う旅行に通常必要な交通費は非課税
- タクシー、グリーン車等も、業務上の必要性や旅費規程との整合があり、
通常必要と認められる範囲なら非課税余地あり
- 判断材料が不足する場合は「要確認」とする
### 要確認ケース
- グリーン車/ビジネスクラスの利用(社内規程・通常必要性の確認要)
- 深夜タクシー帰宅(業務上の必要性の確認要)
- 接待に伴う移動(交際費との区分確認要)
## 出力フォーマット
| 行番号 | 社員名 | 交通手段 | 金額 | 判定 | 根拠 |
判定は「非課税」「課税」「一部課税」「要確認」「対象外」のいずれか。
根拠は簡潔に1文で記載。
今回は対話モードで検証した。
結果
以下の結果は、20件・各モデル1回・対話モード・Ollama既定設定での観測値です。
全体比較
| モデル | 正答率 | 処理時間 | 14B比 |
|---|---|---|---|
| Qwen3-14B | 17/20 (85%) | 40秒 | 基準 |
| Qwen3-30B(MoE) | 18/20 (90%) | 36秒 | 0.9倍(最速) |
| Qwen3-32B Dense | 20/20 (100%) | 12分40秒 | 19倍 |
モデルごとの誤答分析
モデルサイズとアーキテクチャで「間違え方」が全く違う。 ここが一番面白かった。
Qwen3-14B — 根拠と判定の矛盾
#19 接待同行タクシー 12,000円
根拠: 「交際費との区分確認要」 ← 気づいてる
判定: 「課税」 ← なのに断定してしまう
根拠の推論はできているのに、最終判定で「要確認」ではなく「課税」にしてしまう。推論と出力の一貫性が弱い。
Qwen3-30B / MoE — 文脈の取りこぼし
#4 名古屋駅→名古屋支社 タクシー 1,800円(目的: 出張)
判定: 「課税(理由なしのタクシー利用)」
正解: 「非課税(出張先への通常移動)」
#8 伊丹空港→大阪支社 タクシー 4,500円(目的: 出張)
判定: 「課税(理由なしのタクシー利用)」
正解: 「非課税(出張先への通常移動)」
30B-A3B は全 30.5B パラメータのうち推論時に使うのは約 3.3B だけ(MoE)。今回の20件では、目的列に「出張」と書かれているのにタクシー利用を「理由なし」と判定するケースがあった。同じ行の情報をうまく結びつけられていない。
なお、30B-A3B の全体正答率(90%)は 14B(85%)より高い。文脈依存タスクで一部弱かったという観測であり、MoE アーキテクチャ一般の限界を主張するものではない。
Qwen3-32B Dense — 全問正解
今回の検証範囲では 20/20。出張タクシーも「出張先への移動(通常の経路)」と正しく判定し、グリーン車も「社内規程確認要」ときっちりフラグを立てた。少なくとも本タスクでは、文脈理解とルール適用の安定性が最も高かった。
ただし12分40秒。20件で13分は実務では重い。
実運用への提案: 2段階方式
Step 1: 14B or 30Bで全件チェック(40秒)
↓
「非課税」「課税」→ 目視チェックして採用
「要確認」→ Step 2へ
↓
Step 2: 32Bで再判定(要確認分のみ)
大半の明確なケース(電車で顧客訪問→非課税)は軽いモデルで十分。微妙なケースだけ重いモデルに回す。
落とし穴: プロンプトのルール精度
検証中、プロンプトに書いたマイカー通勤の非課税限度額が古い数値だったことに気づいた。
| 距離 | 誤(古い値) | 正(最新) |
|---|---|---|
| 15-25km | 12,900円 | 13,500円 |
| 25-35km | 18,700円 | 19,700円 |
| 45-55km | 28,000円 | 32,300円 |
※ 2025年11月20日施行の改正後の数値。2025年4月1日以後に支払われるべき通勤手当に遡って適用される。
ローカル LLM は素のまま使う場合、最新の法令を自分で調べに行かない。プロンプトに渡すルールが間違っていたら、モデルがいくら優秀でも正しい判定はできない。公式ソースとの照合は必須。
RAGやツール連携で外部データを参照させる方法もあるが、今回は未検証。次の課題として面白そう。
参照元:
まとめ
| 観点 | 結論 |
|---|---|
| 精度 | 32B Dense なら 20/20。14B/30B でも 85-90% |
| 速度 | 14B/30B なら40秒以内。32B は12分で実務には重い |
| 実用性 | 2段階方式で精度と速度を両立可能 |
| 情報管理 | ローカル構成なら推論リクエストが localhost で完結 |
| 注意点 | プロンプトのルール精度が全て。公式ソースとの照合必須 |
限界と注意事項
- 本記事の結果は、Qwen3 系モデル・Ollama 0.17.7・評価セット 20 件・Ollama 既定パラメータなどの条件に依存する。あくまで同条件での比較結果として参考にとどまる
- 20件はサンプル数として小規模なため、ケーススタディ程度に捉えてほしい
- 実データでも傾向は概ね一致したが、統計的に十分な検証とは言えない
- 実務導入時は最終判断を必ず人間が行うこと。LLM の出力をそのまま確定処理に使うのはリスクが高い