0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

レントロールPDFから直接還元法Excelを自動生成するOSSを作った話

0
Posted at

はじめに

収益物件の簡易試算をするとき、こんな手作業が毎回発生していませんか?

  • レントロール(賃料一覧)をPDFからExcelに転記する
  • GPI(潜在総収入)→ EGI → NOI の計算式を毎回手組みする

revenue-kun(収益還元クン) はこの転記・計算式組みを自動化するOSSです。
レントロール(CSV または text-based PDF)を入力すると、直接還元法の収益試算Excelワークブックを出力します。

⚠ 出力値は「収益試算値」であり、鑑定評価による「収益価格」ではありません。
正式な価格判断・投資判断には不動産鑑定士等の専門家にご確認ください。


何を出力するか

--excel-output を指定すると3シート構成の .xlsx を生成します。

シート① 直接還元法_OER

項目
E5〜E9 各収入(賃料・共益費・水道光熱費・駐車場・その他)年額 ← レントロールシートの年計を自動参照
E10 GPI(潜在総収入) =SUM(E5:E9) 自動
E13〜E17 空室損失率・貸倒損失率・経費率・資本的支出・還元利回り ユーザーが手入力
E20〜E24 EGI・運営費用・NOI・収益試算値 自動計算

収益試算値のセルは =IFERROR(E23/E17,"") — 還元利回りが未入力のうちは空白のまま、手入力後に自動表示されます。

シート② 直接還元法‗費用詳細版

管理費・修繕費・損害保険料・固定資産税等を年額で入力する補助シート。経費率の妥当性確認用で、OERシートのNOIには直接連動しません。

シート③ 読み取りレントロール

PDFから抽出した区画データ・月計・年計。空室区画には「ユーザーが賃料等を入力可能」と表示され、入力すると年計・OERシートの収入セルに反映されます。


技術構成

revenue-kun/
├── src/
│   ├── main.py              # CLIエントリポイント
│   └── revenue_kun/
│       ├── extractor.py     # pdfplumber でレントロール抽出
│       ├── calculator.py    # GPI / EGI / NOI 計算
│       └── excel_writer.py  # openpyxl で3シート生成
├── skill/                   # claude.ai / Cowork 向けPackage Skill
│   ├── SKILL.md             # Skillエントリポイント
│   └── scripts/             # build_skill.py でsrc/から同期
└── data/
    ├── sample_rentroll_simple.pdf       # 合成サンプル(5区画・全入居)
    └── sample_rentroll_missing_values.pdf  # 合成サンプル(5区画・1空室)

主要ライブラリ:

  • pdfplumber — text-based PDFからテーブルを抽出
  • openpyxl — Excelワークブック生成・数式埋め込み
  • PyYAML — 前提条件ファイル(assumptions.yaml)の読み込み

OER自動計算モデルの設計ポイント

E20:E24 の計算チェーンは N() 関数で空白をゼロとして扱うことで、一部の入力が未完了でも中間値まで自動表示されます。

E20 (EGI) = E10 * (1 - N(E13)) * (1 - N(E14))
E21 (運営費用) = E10 * N(E15)
E22 (NOI前) = E20 - E21
E23 (NOI) = E22 - N(E16)
E24 (収益試算値) = IFERROR(E23 / E17, "")

還元利回り(E17)だけは IFERROR で空白ガード — ゼロ除算を防ぎつつ、入力後すぐに収益試算値が表示されます。


claude.ai / Cowork Skill としての実装

ローカルCLIに加え、skill/ ディレクトリに Package Skill を実装しています。claude.ai / Cowork に導入すると、clone もターミナルも不要でレントロールPDFをアップロードするだけで動作します。

ワークフローは以下の通りです:

  1. Skill をリポジトリから導入(claude.ai / Cowork)
  2. レントロールPDFをアップロード
  3. --dry-run で抽出内容(区画数・月計・欠損)を確認(Checkpoint A)
  4. 問題なければ収益試算Excelを生成・ダウンロード(Checkpoint B でセル入力箇所を確認)

Claudeは空室損失率・経費率・還元利回り等の数値を提案しません。 これらはユーザーが専門家の助言や公的統計をもとに手入力します。


制限事項

制限 内容
OCR・スキャンPDF 対象外。text-based PDFのみ(pdfplumber)
qualifying real-world PDF評価 未完了(Issue #21 open)。実務検証済みとは表記しません
欠損の自動補完 実施しません。欠損は missing_info.md に明記
鑑定評価・投資助言・税務助言 提供しません
Claude Skillマーケットプレイス公開 未定

テスト

python -m pytest tests/   # 200件

ユニットテスト(抽出・計算・Excel生成・Skill同期・免責文言)200件がパスしていることを継続的に確認しています。


今後の予定

  • Issue #21: qualifying real-world text-based PDFでの評価(実物件PDF調達中)
  • Issue #19: 評価後の追加改善
  • Claude Skillマーケットプレイスへの公開(#21完了後に検討)

まとめ

revenue-kun は「転記と計算式組みの自動化」にフォーカスしたOSSです。判断(空室率・利回り・費用)はユーザーが行い、Claudeはその補助に徹します。

qualifying real-world PDF評価(Issue #21)が完了したタイミングで Gate 2(PR TIMES等)の情報発信を予定しています。それまでは合成サンプルでの動作確認版として公開します。

フィードバック・Pull Request歓迎です。


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?