OpenTakeoff について
OpenTakeoffは、積算担当者とAIエージェント向けの建築図面数量算出エンジンで、ブラウザーキャンバスと共通の測定ロジックを備えています。測定方法、縮尺、作成者、レビュー状態を記録し、確認と出所の追跡を支援します。
主な機能
- 0158個のstdio MCPツール
- 02ブラウザーキャンバスで図面を測定
- 03縮尺対応の数量計算と再校正
- 04形状、方法、レビューの出所記録
- 05注釈付き図面と数量表の出力
- 06複数図面にまたがるスケジュール検索
活用シーン
- 01図面から部屋と数量を測定
- 02承認前にエージェントの測定を確認
- 03接合された図面にまたがる仕上げの追跡
- 04セル単位の引用付きでスケジュールを検索
MCP 対応
stdio MCPサーバーは、図面の読み込み、縮尺設定、測定、出力などの建築積算ツールをエージェントに提供します。標準ビルドには58個のツールが含まれますが、one_clickとdetect_roomsは現在登録されていません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
53掲載時のツール一覧 · 3 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| path | string | はい | ディスク上の計画 PDF のパス |
| merge | boolean | いいえ | true = 既存の作業をすべて維持したまま、このドキュメントを作業セットに追加します(空のセッションへのマージは単なる読み込みです) |
詳細
OpenTakeoff
建築図面のための数量拾いエンジン。AI エージェントが操作でき、積算担当者にも使いたいと思ってもらえるように設計されています。
数量拾いとは、建設図面から数量を計測する作業です。OpenTakeoff は、1 つのエンジンを介して 2 通りの方法でこれを実現します。エージェント向けの 58 個の MCP ツール と、人が使うブラウザーのキャンバスです。エージェントと人は、数量拾いドキュメントと数量計算を共有します。各シートには縮尺が設定され、計測データには形状、方法、作成者が記録されます。縮尺を再設定すると数量も合わせて更新され、互換性のないインポートでは縮尺の競合が報告され、エージェントによる計測には明示的なレビュー状態が付与されます。フェーズ 1 のテストガイドをご覧ください。
エージェント向け · キャンバスを試す · エンジンの契約 · キャンバスを使う方へ · データレイヤー · 研究 · フォークする · コントリビュート
2 つのマニュアル: エージェントマニュアル · ユーザーマニュアル
プロトコル関連の作業: Takeoff Protocol のドラフトと互換性ステータス—既存のレコードを形式化するもので、現在の数量拾いの動作に変更はありません。
動画: 自律型エージェントがライブで数量拾いを実行、編集なし(2:47) · 病院の仕上げ図から約 1 分でレポートを作成(1:14) · キャンバスのウォークスルー(1:10) · ワンクリック面積(0:51)
ワンクリック面積は一時的に無効になっています。 より幅広い図面コーパスを用いて、フラッドエンジンの再検証を進めています。完了するまで、ワンクリックツールはキャンバスのツールバーから無効化され(
Oで無効状態を確認できます)、one_click/detect_roomsMCP 動詞は登録されません(デフォルトのビルドには 58 個のツールが含まれます)。キャンバスでは Area(A)、MCP ではmeasure_polygonを使って部屋の輪郭をトレースしてください。それ以外のツール、スイープ、派生処理に変更はありません。ビルドでVITE_ONE_CLICK=1(キャンバス)/OPENTAKEOFF_ONE_CLICK=1(サーバー)を設定すると、この無効化を解除できます。以下にあるワンクリックを紹介するセクションと動画は、再有効化後のエンジンについて説明しています。詳細はdocs/design/ONE_CLICK_GATE.mdをご覧ください。
Premium ワークスペースでは、コンパクトなコントロール、検索可能なアクションとシート、個人別のパネル配置、調整可能な表示領域、大きなシートプレビューを利用できます。このブラウザーに保存済みのレイアウト設定がない場合は、これがデフォルトになります。Classic layoutも引き続き利用できます。ワークスペースのデザインと研究についてはこちらをご覧ください。 シートを切り替えると、タイルワーカーから閉じた PDF と埋め込みフォントが解放されます。 30 回のフリップ描画チェックをご覧ください。 開いているタブの PDF とは別に、アイドル状態の PDF は最大 4 件まで読み込まれたままになります(スマートフォンやタブレット、またはメモリ容量が 4 GB 以下と報告するブラウザーでは 2 件)。最も長く使われていないものから解放されます。12 件の PDF チェックをご覧ください。
まずはこちら
| あなたの立場 | こちらをご覧ください |
|---|---|
| 入札期限が迫った積算担当者 | キャンバスを開く—図面をドラッグするだけです。アカウントは不要で、アップロードもされません。ユーザーマニュアルでは、空のタブから 5 分で積算をエクスポートするまでの手順を説明しています。また、実際の入札での作業順序では、実際の入札図書一式を扱う際の順序を確認できます。 |
| AI エージェント、またはその設定を行う方 | npx -y opentakeoff-mcp を実行してから、エージェントマニュアルをご覧ください。運用モデル、すべての積算で必ず行う標準の仕上げ、エンジンが推測を拒否する内容とその理由を説明しています。各ツールのリファレンスは mcp/README.mdをご覧ください。 |
| エンジンを基盤に開発する開発者 | AGENTS.mdはリポジトリの構成とリリースの手順を示しています。 FEATURES.mdでは、各機能を実装するコードに対応付けています。 |
| 独自のコピーを使いたいチーム | フォークする—数分で、独自の URL に独自のインスタンスを用意できます。ライセンスは AGPL-3.0 で、外部にデータを送信しません。プルリクエストを送る場合も同じ手順です。 |
Windows、macOS、Linux — すべてに対応
OpenTakeoff はクライアントのみで動作するブラウザーアプリのため、最新の Chrome、Edge、Firefox、Safari であれば、Windows、macOS、 ChromeOS、Linux のいずれでもキャンバスは同じように動作します。インストールもアップロードも不要で、OS による機能制限もありません。
- ショートカットはプラットフォームに対応しています。 アプリは目の前のキーボードに合わせて修飾キーを表示します —
Windows と Linux では
Ctrl/Alt/Shift、Mac では⌘/⌥/⇧です。また、ハンドラーは常に⌘とCtrlを同じキーとして扱ってきました。現在の一覧を確認するには、キャンバスで?を押してください。 - MCP サーバーは Windows でもテストされています。
npx -y opentakeoff-mcpは Windows、macOS、Linux で動作し、CI では変更のたびにwindows-latestとubuntu-latestの両方で MCP スイート全体 — 型チェック、テスト、ビルド、パッケージのスモークテスト — を実行します。 - オプションの追加機能。 同梱のキャプチャサーバーは標準ライブラリのみを使う Python 3 製で、Python が動作する環境ならどこでも実行できます。Windows では、
python3の代わりにpython\capture\capture_server.py selftest(またはpyランチャー)を実行してください。キャンバスの利用に、キャプチャサーバーもオプションのserver/AI サンドボックスも必要ありません。 - 利用が制限された企業向け環境(MSIX パッケージ化、Windows Sandbox、Intune によるサイレントデプロイ)への対応は #226で追跡中で、まだ実装されていません。
概要
図面から数量を測り出すことは、すべての建設入札の出発点です。床面積はいくらか、壁面積はいくらか、器具はいくつか、縮尺はいくつか、どのシートか。これは毎日、何千回も行われています。OpenTakeoff が登場するまで、Web ベースかどうかを問わず、オープンソースの拾い出しエンジンは存在せず、自律型エージェントが呼び出せるものもありませんでした。
OpenTakeoff はそのエンジンであり、ジオメトリと数量のモジュールを共有する 2 つのフロントエンドを備えています。
- レビュー時のクリーンアップ—エージェントはジオメトリとレビュー状態を保ったまま、取り消し機能を使って注釈テキストを編集できます。RFI にリンクされた注記には、ブラウザーでのレビューが必要です。範囲に関する警告では、数値上の端部残差と実際の小さな重なりを区別します。
- stdio MCP サーバー—
npx -y opentakeoff-mcp。58 個のツールを備え、公式 MCP レジストリに掲載されています。エージェントは図面を開き、タイトルブロックを読み取り、縮尺を設定し、壁面に沿って部屋をトレースします(フラッドエンジンは引き続きゲートされています)。レンダリングされたオーバーレイで自身の作業を確認し、注釈入りの図面セット PDF を返します。 - ブラウザーキャンバス—バックエンドもアカウントもアップロードも不要です。見積担当者は図面セットをドラッグして取り込み、ワンクリックの部屋検出、CAD ハッチ、ロール材の継ぎ目レイアウト、資材の購入リスト、エクスポート機能を使ってトレースできます。
どちらかがもう一方のラッパーというわけではありません。MCP サーバーは共有 Web モジュールをインポートするため、数量計算と拾い出しレコードには互換性があります。現在、ブラウザーと MCP では部屋検出の経路が異なります。コードを共有していても、すべての図面で境界が同一になるとは限りません。境界を再検証する間、ワンクリック機能は引き続きゲートされています。
**データの来歴こそが要です。**すべての形状には、測定時の縮尺、生成方法(ベクトルフラッド、ラスターのトレース、手描き、エージェントによる提案)、人間が修正したかどうか、そして修正箇所の横に保存された機械の元の境界が記録されます。手動測定ツールで描画したエージェントの形状も含まれます。操作主体と描画方法は別々のフィールドです。 下流では、これは PM が確認できる監査証跡になります。上流では、ラベル付きの (ジオメトリ → 仕上げ) のペアになります。これは、拾い出しモデルがこれまで大規模に利用できなかった学習シグナルです。この 2 つ目の用途は副次的な効果ではありません。データレイヤーをご覧ください。
最近リリースされた機能
- エージェントが実際に読むトレースルール—積算担当者が使う部屋境界の規約(最も内側の壁面、壁の中心線上で横切るドア開口部、柱や設備スペースを囲むこと、ハッチの端やドアの戸当たりを使わないこと、リングごとに厳密なオーバーレイチェックを行うこと)が、サーバーに組み込まれました。
takeoff://wiki/workflows、初期化手順、measure_polygonの説明から参照できます。 規約の指定がないタスクで行った、プロンプトによる指示なしの実行では、ドアのくぼみを含む部屋が0/6から6/6になりました (#423、MCP 0.9.84) - 参照リングを備えた図面セットと、それに対するブラインド実行—公開されている3つの平面図(VA の医療施設の仕上げ図、VA の診療所の平面図、市のパブリックドメインの ADU)に、積算担当者のトレースに基づく参照データ、凹形の部屋と仕上げの分割に対応するスコアラー設定、固定されたエクスポート、スコア、オーバーレイを含む公開済みのブラインドエージェント実行結果を追加しました。実行では、まず参照データの欠陥が見つかりました。参照データは v2 ですが、まだ人によるレビューを受けておらず、未解決の積算上の疑問点も記載されています
(#421、
#422、
evals/mcp-workflow-bench/plan-set/) - 人によるレビューの一連の流れを、最初から最後まで—エージェントの積算データをインポートし、リングを修正してバッチを承認、エクスポートした後、別のクリーンなマシンでアーカイブを開き直します。形状データとレビュー状態が保持される様子を、実際のアプリのスクリーンショットとともに ユーザーマニュアル で紹介しています (#424)
- Takeoff Protocol のドラフト、共有ウィキ、スクリプト化されたワークフローベンチマーク—既存のレコードフィールドを一覧化し、実行可能な互換性マトリックスを備えたドラフトスキーマとして形式化しました(10件は準拠、1件はアダプターが必要、5件は未対応として明記)。人とエージェントが共用するウィキを MCP リソースとしてパッケージ化し、CI でソースとの整合性をチェックします。また、ビルド済みサーバーをフラット方式と段階方式で動かし、形状と合計を分けて採点し、新しいプロセスでエクスポートを開き直すワークフローベンチマークを追加しました (#406–#419、 ロードマップ)
- つなぎ合わせたシート—照合線で分割された平面図を1つの作業面にまとめます。継ぎ目をまたぐ部屋を1つの形状としてトレースでき、ワンクリックにも対応します (#161)
- PDF レイヤーの役割—CAD からエクスポートされた図面には、線が何を表すかが明記されているため、ワンクリックではハッチから境界を推測する代わりにレイヤーツリーを読み取ります。キャンバスのレイヤーパネルと、コーパスの IoU スコアリングも追加しました (#85)
- シートグラフ—エージェントが「部屋134の仕上げは何で、どうしてそう分かるのか」と尋ねると、継続シート、回転したヘッダー、複数棟のキーをまたいで、セルごとの引用元を添えた表の行が返ります:
sheet_graph/resolve_tag/find_schedule(#87) - ロール状材料—条件をタイルカーペットやシート材に設定すると、エンジンが継ぎ目を算出します。レーン、複数ロールへの分割、部屋に重ねて縮尺どおりに描画したカット図(カット順)、ドラッグして順序を変更できる縮尺どおりのロール図、計測数量と並べて表示される発注用の延長を提供します (#136)
- キャンバスでの見切り材—テイクオフパネルの ⟂ Transitions… は、計測済みの部屋から2種類の仕上げが接する線を算出します。
derive_transitionsを使えば MCP からも同じ処理を実行できます。塗りつぶしトレースされた部屋は辺を共有しないため、実際に扱うのは性質の異なる2種類の近接関係です。同じ開放空間内で仕上げが変わる場合は突き付け継ぎとして確定します。一方、間仕切りを挟んで平行に並ぶ部屋の場合は、質問として保留されます。見切り材は出入口の敷居にあたりますが、トレースレコードには出入口の位置が記録されていないためです。2つの部屋が34 LFの壁を共有しているというだけで敷居を34 LF確定すれば、機械の自信に満ちた出力に裏打ちされた誤った見積もりになってしまいます (#202) symbol_sweep—マーキーで囲んだ1つの例から、繰り返し使われる記号の全インスタンスを取得します。縮尺をまたぐ場合に使えるのは、明示された比率だけで、検索した比率は使いませんmark_verdict/delete_verdict—エージェントは、自身の作業に鉛筆色のAGENTダイヤモンドを付けて署名します。緑色のAPPROVEDシールを付けられるのは人だけです- ワンクリック精度向上—RFC #60 に基づく面の抽出と隙間許容度(@knmurphy による貢献)、より太い壁に沿う極細の線を境界ではなく注記として分類する処理、内開きドアの扇形領域を弧ではなく戸先の後ろ側から取得する処理
- 音声によるテイクオフ(デフォルトではツールバーから無効化されています。
VITE_COMMAND_BOX=1を指定すると有効になります)—Mを押したまま「carpet one, waste seven」と話します。音声認識はお使いのマシン上で WebAssembly を使って whisper-tiny.en により実行され、音声がブラウザーの外に出ることはありません (docs/VOICE.md) 完全な履歴:CHANGELOG.md · すべての機能と対応するコード: FEATURES.md
エージェント向け — まずはこちら
公開パッケージを、任意の stdio MCP クライアントから指定してください。Node 20 以降が必要です。クローンもビルドも不要です。
{
"mcpServers": {
"opentakeoff": {
"command": "npx",
"args": ["-y", "opentakeoff-mcp"]
}
}
}
GitHub のアカウントをお持ちの場合は、リポジトリをフォークしてください。エンジンに加えた変更はここでテストされます。フォークからのすべてのプルリクエストでは読み取り専用トークンで完全な CI が実行され、エージェントが提出したテスト済みのプルリクエストも、ほかの人のものと同じ基準でマージされます。コントリビューター向けの手順も同じです。
**初めての方へ。OpenTakeoff を AI に接続する**では、Claude Code、Codex、Cursor、Claude Desktop の設定手順を順を追って説明し、デモ用プランで最初のコマンドを実行します。
Claude Code の場合:claude mcp add opentakeoff -- npx -y opentakeoff-mcp。Claude Desktop をお使いの場合は、最新リリースの opentakeoff-mcp.mcpb バンドルをダブルクリックしても使えます。このバンドルでは、意図的にオプションのネイティブキャンバスを除外しています。そのため、すべての JSON ツールはどこでも動作し、レンダリング機能(view_sheet、シート画像リソース)は、実行できない場合に何が不足しているかを明示します。Docker とローカルクローンの両方に対応しています:mcp/README.md。
実際の実行(3倍速):エージェントが連邦施設の仕上げプランで患者用個室161~163を計測し、確定のたびにエクスポートします。各図形は破線の鉛筆提案としてアプリに反映され、オペレーターが「承認」をクリックするとインク表示になります。 実行の全編は、ライブ映像をカットなしでYouTube(2:47)でご覧いただけます。
ツール
| グループ | ツール |
|---|---|
| 開いて把握する | load_plan · sheet_info · sheet_context · get_sheet_vectors · read_sheet_text · find_text · view_sheet |
| 縮尺 | set_scale |
| 計測 | one_click · detect_rooms · measure_polygon · cut_out · measure_line · measure_surface · place_count |
| 繰り返しと派生 | symbol_sweep · sweep_schedule_row · derive_base · derive_transitions · apply_rules |
| 図面一式を読み取る | sheet_graph · resolve_tag · find_schedule |
| 編集と監査 | list_shapes · edit_shape · edit_condition · edit_materials · duplicate_condition · split_condition · delete_shape · undo_last |
| 注釈と判定 | annotate · list_annotations · link_annotation · mark_verdict · delete_verdict |
| 問い合わせる | create_rfi · list_rfis · resolve_rfi · delete_rfi |
| 引き継ぐ | takeoff_summary · export_takeoff · export_report · export_marked_pdf · export_dxf · import_takeoff |
閲覧可能なシートリソース(takeoff://sheets)も用意されているため、エージェントは作業対象を操作するだけでなく、見ることもできます。複数ドキュメントのセッションにも標準で対応しています。入札用図面一式は、図面とスケジュールと追補で構成されます。load_plan --merge を使うと、既存の縮尺、条件、図形を変更せずにドキュメントを追加できます。シートグラフは図面一式全体にまたがるため、あるファイル内の部屋タグを別のファイル内のスケジュール行に解決できます。edit_condition では、廃材率、×N の乗数、roll_setup を設定できるため、エージェントの数量拾いで正味数量が総数量と同じままになることはありません。
**エージェント向けマニュアルはdocs/AGENT_GUIDE.md**です。積算担当者向けマニュアルに対応する内容として、6つの事実で説明する運用モデル、すべての数量拾いで最後に行う標準仕上げ、「回答は保留中の情報にある」という原則、エージェントが実行できる操作がない項目とその理由、そして拒否された場合の次の手順をまとめた表を掲載しています。各ツールのリファレンス:mcp/README.md。シートグラフとスイープの動作を詳しく説明した、同じ機能の文章版はこちらです:docs/MCP.md。
操作可能にする契約
ほとんどの測定 API は、エージェントが自信満々に間違えることを許すため、エージェントにとって扱いにくいものです。この API をモデルに安心して任せられるようにするルールと、それぞれの理由を以下に示します。
- 座標系は一つに統一し、あらゆる場所で明示します。 レンダリング倍率 2.0 の画像ピクセル、つまり PDF ポイント × 2 です。原点は左上、y 軸は下向きで、ブラウザーのキャンバスが本来使用する座標空間です。すべてのシートのペイロードには、px と pt の両方で寸法が含まれます。どのツールも、単位を推測しなければならない座標を受け取りません。
- 縮尺はデフォルト値ではなく、通過条件です。 図面に記載された縮尺はシートから読み取られますが、暗黙に適用されることはありません。採用する場合は、必ず明示的に
set_scaleを実行します。縮尺が設定されていないシートの測定は拒否されます。ピクセルに誤った縮尺の二乗を掛ければ、すべての数値が一度に誤るため、エンジンは推測するより処理を止めることを優先します。測定領域内の縮尺表記が一致しない場合は、黙って一方を選ぶのではなく、警告を出します。 - トレースするのはエンジンであり、モデルは形状をでっち上げません。
one_clickは、指定したシード点をもとに壁のネットワークから生成したリングを返します。モデルが想像したポリゴンを返し、それを測定値として扱わせることはできません。ワンクリック機能が制限されている間、モデルはmeasure_polygonでリングを自ら描きます。その際、パッケージに含まれるルールに従い、get_sheet_vectorsで読み取った最内側の壁面の線上に配置し、壁の中心線上でドアを横切り、次の部屋に進む前に拡大オーバーレイで確認する必要があります。事前の指示がないエージェントがどれだけ適切に従えるかは、仮定するのではなく測定します。詳しくはプランセットを参照してください。 - すべてのレコードに、作成方法を記録します。 手法、シード点、ハッチングフィルターが適用されたかどうか、スキャン画像のピクセルから取得したかどうか、信頼度の要因、さらに人が後からリングを移動した場合に備えた機械生成時のリングを記録します。
- エージェントの作業は、人が確定するまでは鉛筆書きです。 エクスポートされた内容は、破線の提案としてキャンバスに配置されます。
mark_verdictを使うと、エージェントは自分の作業に鉛筆書きのAGENTダイヤモンドを付けられます。一方、緑色のAPPROVEDシールを発行するコードパスは一つだけで、人の操作によるツールバーのボタンです。MCP 呼び出しでもインポートでも発行できません。 - 納品物は JSON ではなく、注釈入りのプランセットです。
export_marked_pdfは、状態色、ハッチング、数量チップ、個数マーカーを含む作業内容を、描画どおりに図面へ反映します。合計値と、人が実際に確認したセットの割合を示す一覧を載せた凡例ページも付属します。確認できないテイクオフは、テイクオフとは言えません。 - 処理を拒否する場合は、次に取るべき行動が分かるメッセージを返します。 *「その空間は図面の線分で囲まれていません。塗りつぶしが外へ漏れました」*と伝えれば、モデルは次に何をすべきか分かります。黙ってゼロを返しても役に立ちません。回答できないツールは、もっともらしい数値を返すのではなく、理由を明示して回答を控えます。
実力を証明する — OpenTakeoff Academy / Commonwealth Agent Union
Commonwealth Agent Union は、OpenTakeoff Academy と、その建設エージェント向け評価・認定部門の拠点です。任意のモデルと独自のハーネスを持ち込み、制御できない形状を対象に、実際のテイクオフツールを操作する能力が採点されます。誤ったキャリブレーションは誤った面積につながります。もっともらしい数値を出力する能力が採点されるのではありません。実行ごとに、すべてのツール呼び出しの完全な来歴を含む署名付きバンドルが生成されます。採点は非公開の正解データと人間のシニア積算士の基準値に照らして行われ、各段階の基準をクリアすると、第三者が独立して検証できる認定資格を取得できます。Certified パスでは、タスクツールの背後でこのエンジン(opentakeoff-mcp)を動作させます。リポジトリ:
Kentucky-ai/opentakeoff-academy。
キャンバスを使う方へ
エージェント向けの経路が存在するのは、人間向けの経路が実在するからです。以下のすべては、商用の建築仕上げ積算システムから切り出した、本番用の計測エンジンであり、デモ用に再実装したものではありません。
cd web
npm install
npm run dev # http://localhost:5173
または、ライブデモを開いてください。
demo/sample-plan.pdfをドラッグして読み込み、検出された縮尺を確定し、条件を選択して、A(面積)を押し、部屋の角をクリックします。(ワンクリック面積計測は一時的に制限されています。冒頭の注記をご覧ください。)レポートを開くと、内訳とエクスポート機能を確認できます。一連の操作を動画でご覧いただけます:操作ガイド(1:10) ·
ワンクリック面積計測(0:51)。ゼロからエクスポートまでを網羅した操作ガイドは、ユーザーマニュアルをご覧ください。
実際の入札案件での使い方を、積算担当者が作業する順に紹介します。
- 入札プラットフォームから、図面、仕上げ表、追加資料が入った
.zip全体をドラッグして読み込みます。 - 計測する各シートで縮尺を設定し、各シートで寸法(
K)を確認します。1シートにつき10秒ほどで済み、すべての数値に一度に影響する唯一の間違いを防げます。 - 条件を手入力するのではなく、建築家の仕上げ表から取り込み、トレースを始める前にロス率と材料を設定します。
- 分割されている部分があれば合わせ目でつなぎ、位置を揃えてから計測を始めます。
- 各部屋の床をトレースします。ワンクリック計測が制限されている間は、面積(
A)を使います。今トレースした部屋から幅木と見切りを算出すれば、二度目の計測は不要です。ただし、算出結果に表示されるが計上されない項目も確認してください。そこには、まだ計上が必要な出入口の敷居が含まれています。 - 図面一式を確認して計測結果を見直し、グリップで修正して、リビジョンを保存します。
- 2種類をエクスポートします。価格算出用のレポートと、確認担当者向けの注釈付き図面一式PDFです。
この手順の詳細と各ステップの説明は、マニュアルの実際の入札案件での作業手順をご覧ください。上記の用語の意味は、用語集に記載されています。
どんなファイルもすぐに開けます
入札プラットフォームから、図面のPDF、画像(スキャン、スクリーンショット、写真)、または**.zip形式の図面一式**をそのまま開けます。zipは解凍され、画像はブラウザー内でPDFに変換されます。複数ページや複数ファイルに対応し、最大4枚のシートを横並びにできます。不正なzipでタブが肥大化するのではなく、適切にエラーとなるよう、悪意あるアーカイブへの対策も備えています。zip内の読み取り不能な画像はスキップされ、残りの図面はそのまま開きます。アップロードも、変換サービスも、アカウントも不要です。
本格的な計測エンジン
ワンクリック面積が目玉機能です。洪水塗りつぶしエンジンを再検証している間は一時的に利用できません(上部の注記をご覧ください)。利用可能な場合は、部屋の内側をクリックすると、線画が塗りつぶしの境界になり、ポリゴンが自動で描かれ、頂点が実際の角にスナップします。ハッチングやポシェは誤認しません。タイルの目地、板材の線、断面の塗りつぶしは壁ではなくパターンとして分類され、慎重なエスカレーションにより、読み取りを誤っても厳密な塗りつぶしより悪い結果になることはありません。スキャンした図面にも対応しています。ベクター線画がない場合、エンジンは描画されたピクセルを読み取ります。適応型しきい値処理、青写真のネガ画像に対応した極性検出、薄れたインクを補うギャップ接続処理を行い、結果にバッジを付けるので、確定前に境界を確認できます。レイヤーツリーを公開する CAD 書き出しでは、One-Click は役割を推測する代わりに、宣言された役割を読み取ります。
さらに、手動計測ツール一式——面積、長方形、線形、曲線、表面積(壁)、カウント——に加え、テイクオフに触れずに「このウィングには何がある?」と確認できるゾーンチェックもあります。カットアウトは差し引きに対応します。
⟂ 境界線は、すでに計測した部屋から、2 種類の仕上げが接する線を導き出します。1 つの広い空間内で仕上げが切り替わる場合は、破線の突き付け継ぎとして確定候補が表示され、採用するか選択できます。壁を挟んで平行に並ぶ部屋は報告されますが、計上されません。トレースでは位置を特定できない出入口の敷居がその境界に当たるためです。長さ、壁厚、およびその位置を画面に表示するリンクが得られます。
製図ツールとして自然に使える製図補助機能
45°/90°角度ロック:直角または斜めの線に数度まで近づくと、線分が軸にロックされます。クリックすると、軸上の点に正確に確定されるため、壁をぴったり直角に描けます(⇧ を押し続けると、どの角度でもロックできます)。キャンバスでは、クロスヘアがカーソルそのものです。OS のポインターは非表示になり、交点に星印が表示され、作業中の図形はツール本来のコバルト色で描画され、確定した図形には状態色が付きます。ロックは控えめに示されます。星印が大きくなり、プレビューが太くなって、チップにロックされた角度と現在の線分の長さが表示されます。スナップ(ベータ版)は実際の PDF 端点に吸着し、軸よりも角が優先されます。
実際の図面セットに合った縮尺
図面に記載された縮尺を自動検出するか、既知の寸法から校正できます。図面セット内で縮尺は統一されているとは限らず、一律と仮定するツールは数値を誤るため、縮尺はシートごとに記憶されます。寸法チェック(K)は、校正の読み取り専用版です。印刷された寸法表記を選び、図面に記載された値を入力すると、評価結果(誤差 1% 以内は緑、5% 以内はアンバー、それを超えると赤)と、ワンクリックで実行できるこれに合わせて再校正が表示されます。縮尺を確定するたびに、シート上に一時的な校正済み定規が表示されるため、縮尺が 2 倍ずれていても、何かをトレースする前に気づけます。ヤード・ポンド法またはメートル法(m²/m、1:50 形式の比率)は表示切り替えで選択できます。テイクオフは単位に依存しない形式で保存されるため、切り替えても計測値は変わりません。
条件、材料、発注リスト
条件とは、1つの仕上げ材(LVP、カーペット、タイル、巾木など)のことで、線/塗りつぶしの色、実際の図面のようにキャンバス上で見えるCADハッチパターン、条件ごとのロス率(%)、×N乗数、既定の壁の高さ、および線状の長さを境界のSFに換算する厚さを持ちます。スケジュールからインポートすると、シート上の建築家の仕上げ表または材料表を(CODE、TAG、MARK、SYMBOLをキーとして)読み取り、確認ダイアログを介して条件に取り込みます。カテゴリ別にグループ化され、行の語句から推測されたカテゴリには確認用のフラグが付き、スケジュールでNOT USEDと記された行は未選択のままになり、テキストレイヤーのある図面では読み取れなかった4文字または5文字のコードが通知に表示されます。どの項目を条件にするかはユーザーが承認します。スケジュールの備考を含む製品仕様は、そのままレポートの列に引き継がれます。G-01(C)のような括弧付きコードはサフィックスを保持し、再インポート時には古い可能性のあるG-01C条件が確認用に保留されます。
ラスターからのインポートでは、スキャンされたコードはすべて未選択の状態で始まり、1件ずつ確認または修正する必要があります。OCRが2回とも同じ誤ったコードを読み取ることもあります。
短いコードも2回目の読み取りが行われ、不一致はコードを確認として表示されます。
認識された仕上げ表内で復元された数値の誤読は、コードを設定として表示されます。作成する前にコードを入力する必要があります。公開OCRエビデンスを参照してください。
補助材料は、多くの拾い出しツールが対応を後回しにしているレイヤーです。条件ごとに、労務の種類と下地の種類に加え、実際に発注する消耗品(接着剤、シーラー、薄塗りモルタル、目地材、巾木用接着剤)を設定します。それぞれに施工可能面積と基準(床面積SF/線長LF/個数/算出した目地LF)を指定できます。発注数量は、計測値 ÷ 施工可能量から自動算出され、整数単位に切り上げられます。接着剤とモルタルには施工可能量のプリセットがあり、目地材にはタイルのサイズ、厚さ、目地幅、袋の重量から1袋あたりのSFを算出する計算機があります。プリセット値は業界で一般的な概数です。必ず製品のデータシートで確認してください。
ロール材 — 目地を算出
条件をブロードルームまたはシート材として設定し(材料クラス、ロール幅、最大ロール長、目地と壁の余裕、方向、販売単位)、エンジンで裁断をレイアウトできます。通し、目地の配置、複数ロールへの分割、発注長さが算出されます。裁断は、それぞれの部屋に実際の縮尺と材料本来の色で描画され、裁断順に番号が付きます。編集モードでは、裁断を移動またはサイズ変更でき、その操作は取り消し履歴に記録されます。ドッキングされたロールパネルには、裁断がロール上に寸法付きで入れ子表示され、ドラッグによる順序変更と再配置もできます。ロール発注LF、ロール数、目地LFは、計測数量と並んでレポート、CSV、Excelにも出力されます。目地LFは、レイアウトから直接読み取る溶接棒/目地テープの数量です。同じ部屋の隣接する通しの間だけを数え、壁際の余剰分を差し引き、2つの通しが実際に向かい合う箇所だけを対象とします。これにより、目地LF基準の補助材料の項目では、周長の一部ではなく裁断が接する箇所に基づいて溶接棒の数量を算出できます。幅20フィートの部屋に幅12フィートのロールを使うと、部屋の長さ方向に1本の目地ができます。同じ面積でも、幅10フィートの部屋が2つなら目地はできません。面積に係数を掛けるだけでは、この違いを判別できません。edit_conditionのroll_setupを使えば、ヘッドレス環境でも利用できます。(ロールレイアウトエンジンはMichael Hartmanによる提供です。)
複数シートでの実際の作業
ステッチング:目地線で分割された床を1つの作業面にします。両方のシートで同じ描画点を選んで継ぎ目を位置合わせすれば、継ぎ目をまたいで直線をトレースできます。
レベルは複数階のセットをグループ化します。シートを選択して開く場所は、視覚的なギャラリー(G)です。再グループ化すれば、ワンクリックで左右に並んだ構成に戻せます。2枚のグループ化されたシートにまたがるトレースはできません。パネル間の隙間は実際の距離ではないため、確定しようとすると拒否され、ステッチングを案内します。
レポート、エクスポート、改訂
条件ごとの内訳——床/壁/境界のSF、LF、EA、合計SF、SY(ロス込み・なし)——と、統合された資材購入リストを表示します。ロスが適用されるのはレポートの発注数量だけで、実測値には適用されません。そのため、拾い出し数量と購入リストの区別が明確に保たれます。CSV、JSON、実際のExcel ワークブック(Summary/By-sheet/Materials/Shapes-audit/床×部屋別。セルは完全精度、数式に見える名前も不活性なテキストとして保持)、印刷、またはマークアップ入りセット PDFとしてエクスポートできます。マークアップ入りセット PDF は、何もインストールすることのない GC に渡せる、ブラウザーだけで完全に作成する配布用図面セットです。
追補版が届いたら、改訂機能で考古学のような確認作業をせずにデータとして管理できます。入札の改訂ごとに名前付き改訂を保存し、任意の 2 つを比較して、条件別、シート別、購入リストの数量差分を確認できます。比較結果は CSV にも出力できます。比較対象は意図的に図形ではなく数量です。どの数値が変わったかは分かりますが、どの壁が変わったかは分かりません。復元時には、まず現在の拾い出しを退避するため、一方通行になることはありません。
マークアップ、承認印、RFI
注釈ツールバーでは、編集可能な矢印、3 種類のハイライトモード、吹き出し、雲形メモ、保存済みのお気に入りツール、番号付きの Sweep 確認チェックリストを利用できます。Sweep 確認チェックリストは、注釈を一括適用する前に確認できます。ピン留めすると、シートを切り替えても図面の切り抜き参照を表示したままにできます。ユーザーガイドとレビューの根拠資料をご覧ください。
数量に決して加算されない独立レイヤーです。改訂雲形、吹き出し、テキストメモ、ハイライトの線、画像(PNG/JPEG をアップロードするか、図面上の領域をドラッグして選択し、浮動スクリーンショットとして貼り付けます。移動・サイズ変更が可能で、マークアップ入りセットに焼き込まれます)、再利用可能なスタンプ(板の向き、継ぎ目の向き、パターンの起点。自作するか、.svgをインポートできます)。承認印は積算担当者が押す印です。確定済みの拾い出しをクリックして承認すると、マークアップ入りセットの表紙に集計行「積算担当者承認済み N 件・エージェントによるマーク N 件」が追加され、PM はセットのうち担当者が確認した範囲を正確に把握できます。RFI 台帳では、任意のマークアップをステータス、優先度、対応担当、コスト/スケジュールへの影響フラグを備えた追跡可能な質問に変換できます。CSV/JSON として、またマークアップ入りセットの RFI スケジュールページとしてエクスポートできます。
ブラウザー内のエージェントパネル
作業を選ぶと、キャンバスとインポートしたエージェントの測定値を一緒に確認できます。シートを横断して検索し、境界を特定し、根拠情報を確認して、取り消し可能なレビューを記録できます。エージェントタブではブラウザーエージェントを実行できます。インポートした拾い出しのレビューには、モデル接続は必要ありません。
キャンバスを離れずに、MCP と同じ提案者/レビュー担当者の分離を実現します。一文で拾い出しの内容を説明すると、モデルが——お使いのモデルを、お客様のキーで、お客様のブラウザーから——アプリ独自の決定論的なツールでシートを処理し、破線の提案を作成します。提案は承認、修正、却下できます。レビュー用の根拠情報フィールドも含まれており、縮尺を設定することはできません。提案された境界とその根拠を確認してから承認してください。
AI アカウントなしで一連の動作を確認するには、scripts/にあるキー不要の決定論的モックサーバーを実行してください。
ベクター表示の鮮明なキャンバス
ズームが約 1.15 倍を超え、さらにディスプレイのピクセル比を掛けた倍率になると、固定ビットマップを拡大するのではなく、表示領域を現在のズーム倍率で PDF ベクターから直接再描画します。そのため、細い吹き出しやハッチングもぼやけません。ジェスチャーが一時停止した後に再描画を開始するため、ズーム操作中は高速なベースレイヤーを維持します。画面上にあるものだけを重ねて表示するため、シート全体のビットマップを保持する必要はありません。ダーク表示(☾)では、CSS フィルターではなく、シートのピクセル自体を反転して、白い線画を黒地に表示する本物のネガ印刷にします。ハッチングも調整され、エクスポートにも反映されます。
あなたのブラウザーに保存
すべての図形、縮尺、条件、注釈、RFIはあなたのブラウザーに自動保存されます(IndexedDB + localStorage)。何もアップロードされず、アカウントも不要で、デフォルトのビルドにはサーバーもありません。一方で、マニュアルに明記されているとおり、データはブラウザーごと、オリジンごとに保存され、サイトデータを消去すると作業内容も消去されます。
任意:チーム向けクラウドモード(Google サインイン + Drive)
上記の動作がデフォルトであり、変更はありません。ページを開くと、匿名のローカル専用ユーザーとして利用できます。Google Workspace を利用するチームは、任意でサインインして共有モードを有効にできます。プロジェクトはチーム独自の Google Drive 内のフォルダーとして保存され、プロジェクト一覧は既存の Glide アプリからディープリンクされ、材料費は同期された pricing.json から取得されます。これはあくまで追加機能です。何も設定しなければ、この機能は存在しません。セキュリティ方針にも偽りはありません。引き続き単純な静的サイトであり、バンドルにシークレットは含まれません。Google OAuth アプリはドメイン内で内部用であるためチーム専用となり、データはチーム独自の Drive に保存されます。docs/GOOGLE_SETUP.md と docs/GLIDE_INTEGRATION.md を参照してください。クラウドへのデプロイでは、ローカルファースト同期(VITE_CLOUD_SYNC=1)も有効にできます。注釈はブラウザー内のデータを正本とし、バックグラウンドで Drive に同期されるため、キャンバスをすぐに表示でき、不安定なネットワークでも作業が失われません。—docs/SYNC_ARCHITECTURE.md
任意:独自のビジョンモデルを使用
キャンバス内の数量算出エージェントは、あなたが用意するビジョンモデルで動作します。目標を入力すると、アプリ独自のツールを使って目標を達成します。Agent パネルとその AI 設定を開き、ビジョンに対応したモデル ID とともに、OpenAI 形式のエンドポイント(デフォルト。自分のマシン上のローカルランタイムもこの形式に対応しており、キーは不要です)または Anthropic 形式のエンドポイントを指定してください。
- **送信されるデータ(開始した実行中のみ):**目標、プロンプト、エージェントのツールが返す情報が、あなたのエンドポイントに送信されます。これには、シート名(PDF ファイル名を含みます)、各シートのサイズと縮尺の状態、読み取ったテキストと工程表の行、参照したシート領域の画像(最大でシート全体、各辺最大 1,024 px)が含まれます。また、条件(仕上げタグ、ハッチ、廃材率)と、計測した面積および周長も含まれます。この一覧はすべてを網羅しているわけではありません。プランファイル全体が送信されることはありません。
- **何も設定しなければ、何も送信されません。**AI ネットワーク呼び出しは、未設定のビルドでは一切行われません。Agent パネルには AI 設定のみが表示されます。いずれの場合もテレメトリーはありません。
- エージェントが見つけた図形は提案です。承認するまで、破線の状態で保留されます。エージェントが作成した条件は、すぐにリストに追加されます。
- キーはこのブラウザーの localStorage に保存されるため、失効できるキーを使用してください。デプロイする場合、
VITE_AI_ENDPOINT/VITE_AI_MODEL/VITE_AI_PROVIDERでチームのデフォルトを組み込めます。ただし、公開環境へのデプロイでVITE_AI_KEYを設定しないでください。Vite はこの値を出荷するバンドルにインライン化します。
| 領域 | 内容 |
|---|---|
| 取り込み | PDF、画像、または.zipの図面セットをブラウザー内で展開。複数ページ・複数ファイルに対応し、最大4枚のシートを横並びで表示 |
| 縮尺 | 図面上の寸法注記を自動検出、既知の寸法から調整、または段階評価付きチェックで確認。シートごとに設定 |
| 計測 | ワンクリック面積(ベクター塗りつぶし+ラスターへのフォールバック。一時的に利用制限中)、面積、長方形、直線、曲線、表面積、個数、差し引き部分、⟂切り替え、ゾーンチェック。ヤード・ポンド法またはメートル法 |
| 作図補助 | ⇧による固定ロック付き45°/90°角度ロック、カーソル位置での角度と線分長のリアルタイム表示、端点スナップ(ベータ版) |
| 条件 | 仕上げごとの色+CADハッチング、ロス率、×N倍数、壁高、縁の厚さ、スケジュールのインポート、ブラウザー全体で使えるライブラリ |
| 副資材 | 作業人件費+下地材の種類、施工面積×基準(算出した継ぎ目のLFを含む)から端数を丸めた発注数量を算出、こて/ローラーのプリセット、目地材計算機 |
| ロール材 | 条件ごとのロール設定から、レーン、継ぎ目、複数ロールへの分割、ドラッグで順序を変更できるネスティング付き実寸カットを作成。すべてのエクスポートにロール発注LF+ロール数+算出した継ぎ目のLFを記載 |
| 複数シート | タイトル欄のシート番号を使ったシートツリー、シートギャラリー、タブと横並びグループ、グループ再編、階層、通り芯線をまたいだ結合、PDFレイヤーの役割 |
| 検索とコピー | ギャラリーから全シートのテキストを検索、枠内またはシート全体からテキストをコピー、スキャンしたシートをデバイス上で読み取り(OCR。使用箇所を明記) |
| レポート | 条件ごとに、ロス込み/ロス抜きの床・壁・縁のSF、LF、EA、SYと、合算した購入リストを表示。列、グループ化、保存済みテンプレートに対応 |
| エクスポート | CSV、JSON、Excel(.xlsx)、印刷、マークアップ済み図面セットPDF、RFIのCSV/JSON |
| 改訂 | 入札の改訂ごとに保存し、条件/シート/購入リストごとに数量差分を比較。保護付き復元 |
| マークアップ | 雲形、吹き出し、メモ、蛍光ペン、画像(アップロードまたは範囲選択スクリーンショット)、スタンプ、承認印、RFI登録簿に対応。独立したレイヤーで、数量には一切含めません |
| 音声 | プッシュ・トゥ・トークによる拾い出しコマンド。WebAssemblyを使ってデバイス上で認識し、音声がブラウザーの外に出ることはありません。デフォルトではツールバーから無効化されています(VITE_COMMAND_BOX=1) |
| 表示 | ライトモードまたは**ダークモード(ネガ反転)**に対応。シートのピクセルを描画時に反転し、エクスポートにも反映 |
| ストレージ | IndexedDB+localStorage。クライアント側のみで、何もアップロードされません |
| MCP サーバー | stdio上で58個のツールと閲覧可能なシートリソースを提供。複数ドキュメントのセッションに対応(mcp/) |
| 出所情報 | すべての図形に、縮尺、方法、信頼度、および作成者が人かエージェントかを記録 |
| キャプチャ(オプトイン) | 同梱のキャプチャサーバーが、提供された拾い出しを「形状 → ラベル」の学習データ行として蓄積 |
| デプロイ | 静的ビルド1つで、Netlify、Vercel、GitHub Pages、Cloudflare Pages、S3など、任意の静的ホストにデプロイ可能 |
データレイヤー — このエンジンが存在する理由
完成したテイクオフはすべて、専門家による判断の集合です。この領域にはこの仕上げを割り当て、このロス率で、これらの数量を算出します。一度行えば、それは入札案件です。毎回記録すれば、これまで存在しなかったラベル付きデータセットになります。つまり、プランのジオメトリと、専門家が割り当てた仕上げを組み合わせたものであり、テイクオフができるモデルのトレーニングに必要な、まさに生のデータです。今日では、入札を提出した瞬間にそのデータが消えてしまいます。
反証できるように、仮説を明確に述べます。**マークアップはラベルです。**プロ向けテイクオフソフトウェアは、描画されたすべての領域をすでにベクタージオメトリとして保存しており、そのポリゴンを再構築すれば記録された数量を正確に再現できます。つまり、20年分の積算作業はノイズの多いデータではなく、正確で検証可能なコーパスになります。この主張を検証するのが研究プログラム全体であり、特許出願中です。
OpenTakeoffは、オプトイン方式で監査可能な収集経路を備え、コーパスを生成するためのツールです。
- ReportのContributeボタンは、派生データのみのペイロードを作成します。条件ラベル、形状の役割、数量、シートに対して0~1に正規化されたジオメトリ、各形状の来歴情報(手動トレースか機械による提案か、人間が修正したかどうか、修正前の機械のリングを修正後の形状と併記)を含みます。ビルダーは監査済みの約150行のコードです(
web/src/lib/contribute.js)。規範となるワイヤー契約はdocs/CONTRIBUTION_SPEC.mdにあります。 - ビルダーのホワイトリストによって、以下は絶対に送信されません。PDFまたはそのレンダリング、ファイル名またはシート名、プロジェクト名またはクライアント名、マークアップテキスト、絶対座標、縮尺の値(送信されるのは縮尺の来歴情報、つまり校正済み、検出済み、標準のいずれかのみ)、作成日時以外の編集時刻。意図的に開示している関連付けが1つあります。形状にはローカルで生成された不透明なIDが付与されるため、補遺後に再度データを提供しても、重複せずに既存データを置き換えます。
- 同梱のcapture server(
capture/)は、pip install不要の標準ライブラリのみを使うPythonファイル1つで、localhostでデータを受信し、ラベル付き形状ごとに1つのトレーニングデータ行を保存します。ハッシュで管理するため、再提供しても重複しません。v2の行では、機械が正しく処理した部分と専門家が修正する必要があった部分を区別します。これが、テイクオフモデルの学習に実際に役立つシグナルです。--mirrorで同期フォルダーを指定すると、既存の会社ストレージ同期を通じてコーパスがアトミックに保存されます。
python3 capture/capture_server.py # then, in the app's browser console:
# localStorage.opentakeoff_contribute_endpoint = "http://localhost:8787/contribute"
capture serverは、デフォルトで公開アプリとローカル開発用のオリジンを許可します。別のホストを指定するには、--allow-origin https://takeoff.example.comを渡してください。正確なデフォルト値と繰り返し指定できるオプションについては、captureのセットアップを参照してください。
OpenTakeoffをそのまま実行するだけなら、これらの機能は動作しません。何も収集されず、何もマシンの外に送信されません。インストールすれば、自分で選んで提供したテイクオフの一つひとつが、自分の所有する資産として積み重なっていきます。これは、OpenTakeoffの派生元である商用のDivision 9積算システム、Splineのキャプチャレイヤーをオープンエディションとして提供するものです。Splineでは、ボタン操作ではなく、自動保存とコミットに伴ってバックグラウンドでキャプチャが実行されます。行スキーマとトレーニングの方針については、capture/README.mdを参照してください。
研究プログラム
OpenTakeoff は、現役の商業用床材見積担当者が、自身の部署で使用する AI を開発する応用研究プログラム (Kentucky AI)のオープンな部分です。オープンコアの境界は、優れた オープンな科学ソフトウェアが定めるものと同じです。計測エンジン(レンダリング、縮尺、ジオメトリ、エクスポート、 MCP サーバー)は AGPL-3.0 で公開され、オープンな状態を保ちます。自社の見積アーカイブでトレーニングしたモデルは独占所有です。 シートライセンスなしで実際に使えるツールを利用でき、当社のデータでしか構築できない部分は当社が所有します。
研究部門はラボとして運営されており、重視しているのは実績です。
- 事前学習ではなく、パラメーター効率の高いファインチューニング。 オープンウェイトのベースモデルに対する QLoRA アダプター (トレーニング対象のパラメーターは約 0.1%)を、検証済みの入札アーカイブから特化させています。データが再トレーニングの必要性を示せば再トレーニングできるほど低コストで、小さくて配布しやすいモデルです。フラッグシップアダプターは、51 件のプロジェクトからなる時系列ホールドアウトで、入札総額を中央値絶対パーセント誤差 12.3%で予測します。ファインチューニングしていないベースモデルの誤差は**62.8%**です。手法の詳細と率直な注意事項は モデルカードをご覧ください。
- 検証済みラベルを投入。 過去の入札をトレーニングデータにする前に、2 つの文書による検証ゲートを通します。入札ワークブックと別途提出された提案書の間で総額が一致する必要があり、変更注文は実際の変更注文書で裏付けられた場合にのみ計上し、明細の計算は再計算してフォレンジックチェックを行います。検証できないプロジェクトはトレーニングに使用しません。
- 検証可能なものさしを出力。 モデルは時系列でホールドアウトしたプロジェクト、つまりランダム分割ではなく将来の入札で評価します。ジオメトリスコアラー自体の誤差の下限(0.4%)を測定しているため、数値をモデルの誤差と計測誤差に切り分けられます。
- 複数シードで再現。 単一のトレーニング実行だけで結果を昇格させることはありません。昇格には、対応のあるブートストラップ信頼区間を用いたシード再現が必要であり、最良のシードと併せてシード間のばらつきも公開します。
- 否定的な結果も残します。 実験台帳には、検出性能を損なったアンフリーズのレシピや、垂直領域に特化したモデルが汎用モデルの領域横断的な転移性能に及ばなかったことなど、失敗した理由を成功した結果と併せて記録します。
- 公開前にリークを監査。 識別情報はトレーニング前に置き換えるため、重みが実名を見ることはありません。また、公開するすべての成果物に対して差分レッドチームテストを行います。ファインチューニング済みモデルへの敵対的抽出プローブを、ファインチューニングしていないベースモデルと比較します。
サニタイズ済みの成果物(モデルカード、ベンチマーク仕様、論文)は、審査を通過したものから順次公開します: Hugging Face · kentucky-ai.com。エージェント側の評価は OpenTakeoff Academyで確認できます。
実行/デプロイ
利用するには、ブラウザーがあれば十分です。セルフホストする場合は、静的ビルドを 1 つ、どこにでも配置できます。バックエンドもデータベースも、構築が必要な実行環境もありません。
cd web
npm install
npm run build # → web/dist/ (static; host it anywhere)
リポジトリにはルートに netlify.toml が含まれているため、このボタンから実際にワンクリックでデプロイできます。同じ
web/dist/ はVercel、GitHub Pages、Cloudflare Pages、S3など、静的ファイルを配信する場所ならどこでも動作します。nginx、Docker、Tailscale などで独自のリバースプロキシを運用する場合は、まず
docs/SELF_HOSTING.mdをご確認ください。知っておくべき MIME タイプの注意点が 1 つあります。デプロイに関する説明とオプションの AI バックエンドについては、
docs/DEPLOYMENT.mdをご覧ください。
フォークする
AGPL-3.0:フォークして、変更して、公開しましょう。自分のチーム向けに使うことも、自分の製品のベースとして使うこともできます。 ホスト型サービスとして提供する場合も含め、変更したコピーをほかの人に使わせる場合は、同じライセンスのもとで変更内容を公開してください。ここでは、フォークが所有の単位であり、貢献の単位でもあります。同じ3つの手順で、プライベートインスタンスを作成し、変更を送り返すためのブランチを用意できます。
- **GitHub でフォーク**して、フォークをクローンします。
- 実行します:
cd web && npm ci && npm run dev— キャンバスはlocalhost:5173で表示されます。npm run checkは CI の正確なチェックゲートです(型チェック、lint、テスト、ビルド)。 - 独自の URL で公開します: リポジトリには
netlify.toml(baseweb、publishdist)が含まれているため、フォークを Netlify にインポートするだけで、設定なしでデプロイできます。静的ホストであればどれでも使えます。nginx に関する注意点はdocs/SELF_HOSTING.mdに記載されています。インスタンス内のすべてのプランは、公開版と同じくローカルに保持されます。
フォークからのプルリクエストは、シークレットを使わず読み取り専用トークンで CI 全体を実行するため(docs/DEPLOYMENT.md)、フォークでチェックが成功すれば、こちらでもチェックが成功します。
コードベースは意図的に小さく読みやすく保たれており、ジオメトリライブラリは純粋なため、そのまま取り出して利用できます。
| 内容 | 場所 |
|---|---|
| 塗りつぶし、面の抽出、コーナースナップ、ラスターフォールバック | web/src/lib/oneclick.ts—純粋な TS、テスト済み |
| 縮尺の検出、シート用ヘルパー、ポリゴンの面積 | web/src/lib/sheets.ts—純粋な TS、テスト済み |
| 廃材、平方ヤード、必要量 → 発注数量 | web/src/lib/totals.js |
| ロール材のレーンと継ぎ目のレイアウト | web/src/lib/rollgoods.js—純粋、テスト済み |
| 永続化(IndexedDB + localStorage) | web/src/lib/store.js |
| PDF/画像/zip の取り込み | web/src/lib/ingest.js |
| キャンバス(アプリの約90%を占める大規模なコンポーネント) | web/src/pages/TakeoffCanvas.jsx |
| MCP サーバー(同じライブラリをインポート) | mcp/src/ |
| デザイントークン—色と間隔の唯一の信頼できる定義元 | web/src/styles/tokens.css |
サードパーティの連携機能と派生フォークは、現在このエンジン上で動作しています。
cd web && npm run check は CI の正確なチェックゲートです。型チェック、lint、テスト、ビルドを実行します。
oneclick.ts と sheets.ts には React と DOM を含めないでください。この純粋性によって、再利用とテストが可能になります。実際の建築プランは絶対にコミットしないでください。公開 OCR コードのテスト用フィクスチャには、架空のスケジュール、セルごとの期待コード、ネイティブ/ブラウザーでの計測コマンドが用意されています。CONTRIBUTING.md と AGENTS.md—このリポジトリ独自のコーディングエージェント向け手順書—およびユーザーマニュアルを参照してください。
コントリビューション
未完了の作業はアーキテクチャに関するもので、作り物の作業リストではなく、明確な完了条件を定めた RFC として公開しています。現在オープンな項目:
- RFC #60—One-Click Area を真に優れた機能にする: 顔の抽出、隙間の許容度、信頼度。作業の一部は反映済みです。最初の一部は @knmurphy の貢献により #179 でマージされ、リリースノートにもクレジットが記載されています。ただし、精度の上限に関する課題はまだ残っています。
- RFC #87—シートグラフ: 部屋のタグ、スケジュール、凡例、詳細図のコールアウトを、回答ごとに出典を示せるクエリ可能な単一のグラフに解決します。2 つのフェーズはリリース済みです。改訂雲マークと詳細図コールアウトの連鎖は未対応です。
rfcまたはflagshipのラベルが付いた項目。フラッグシップとは、複数の応募を歓迎するオープンな設計・実装課題で、最良の成果がクレジット付きでマージされます。- 仕様が完全に定まった小規模な着手項目には
good first issueのラベルが付いており、対象ファイルが明記されています。コメントで担当を申し出て、取りかかってください。
基本ルールは CONTRIBUTING.md に記載しています。npm run check が成功し、ジオメトリライブラリに関わる変更にはテストがあることが基準です。テスト済みの PR は迅速にマージされます。CI ではさらに、npm run check では確認しない 2 つの項目もチェックします。ドキュメント内のすべての相対リンクとアンカーが解決できること(ローカルでは node scripts/check-doc-links.mjs で実行できます)、および web/bench/results.json がエンジンの実際の出力と一致することです。エンジンを変更する場合は、ベンチマークの差分も同じ PR に含めてください。外部からの貢献はコミットとリリースノートに名前を記載してクレジットを表記します。また、opentakeoff-mcp は mcp-v* タグから npm に公開されるため、マージされたエンジンの変更は、パッケージを取得するすべてのエージェントに届けられます。
悪用可能な問題を見つけましたか?公開の issue ではなく、 非公開の脆弱性報告 から報告してください。SECURITY.md には脅威モデルを冒頭で説明しています。クライアント専用アプリとローカル stdio MCP サーバーにおける信頼境界の実際の範囲と、どのような問題が脆弱性に該当するかを説明しているため、報告の前に読むことをお勧めします。
技術スタック
- フロントエンド: React 18 + Vite 6、プレーンな JSX
- 描画: 生の HTML5 Canvas + SVG—チャートやキャンバスのフレームワークは不使用
- ジオメトリ: TypeScript(
oneclick.ts、sheets.ts)、純粋関数で単体テスト済み - PDF レンダリング: pdf.js
- 図面セットの取り込み: fflate(zip)+ pdf-lib(画像 → PDF)、遅延読み込み
- 音声: transformers.js、Web Worker 内の whisper-tiny.en(q8 エンコーダー + uint8 デコーダー)—ベンチマーク済み
代替手段との比較は
docs/VOICE.mdを参照してください - MCP: ウェブエンジン独自のライブラリをインポートする TypeScript stdio サーバー
- ストレージ: IndexedDB + localStorage—バックエンド不要
- テスト:
node --test+tsx - 有料の依存関係なし。 THIRD-PARTY-NOTICES.md を参照してください。
ステータス
プレビューではなく、実際の商用入札で使用されている稼働中のツールです。計測エンジンは商用積算システムから切り出した本番用エンジンで、同じ計算、同じ縮尺チェック、同じ出典記録を使って、キャンバス上のユーザーにも MCP 経由のエージェントにも応答します。エージェントによる操作について測定済みの内容と、未解決の項目は、フェーズ 3 の完了ゲートに 1 つの表でまとめています。見落としを防ぐため、既知の制限を明記します。Snap はベータ版で、改訂版の比較は幾何学的ではなく数量レベルで行われ、翻訳版の README は英語版より更新が遅れています。issue とプルリクエストを歓迎します。
開発者について
私は業務用床材会社で積算を担当し、部門を動かすAIを構築しています。 OpenTakeoffはその取り組みのオープンな部分です。建物を読み取る必要がある人間やエージェントに提供する、測定エンジンです。自社の積算アーカイブでトレーニングしたモデルは当社のものであり、説明責任を果たせるよう、その境界を公開しています。
データに価値があるのは、実際に提出され、受注または失注し、別途提出された提案書と照合された入札から得られるためです。また、だからこそエンジンは無料でなければなりません。コーパスの品質は、それを生成するツールを通じて処理される実際の数量拾いの件数に左右されるからです。
— Michael · Kentucky AI
Kentucky AIはNVIDIA Inceptionプログラムのメンバーです。
お問い合わせ: 研究協力、データに関する質問、報道関係、またはバグ以外のお問い合わせは、 [email protected]までご連絡ください。バグ報告や機能リクエストは issuesにお寄せください。セキュリティに関する報告はSECURITY.mdに従ってください。
貢献者への謝辞
画像キャプチャ、描画スタイル、より鮮明なオーバーレイを提供してくださった**@knmurphy**(Kevin Murphy)に感謝します。Pin参照ツールは、彼の画像キャプチャの成果を基盤としています。
ライセンス
GNU Affero General Public License v3.0(AGPL-3.0-only)です。利用、フォーク、配布、拡張が可能で、改変したコピーを他の人に提供する場合は変更内容を共有してください。
コミット84c7f48e(タグapache-2.0-final)までのOpenTakeoffはApache-2.0であり、そのコードはすでに取得したすべての人に対して、引き続きApache-2.0で提供されます。帰属表示とライセンス変更に関する注記、および第7条(b)の帰属表示条項についてはNOTICEをご覧ください。貢献はCLAに基づいて受け付けます。AGPLの範囲外の商用条件については、Kentucky AIまでお問い合わせください。
正確なジオメトリに重点を置いたエージェント測定ワークフローについては、ソースからレビューまでのジオメトリをご覧ください。
人間とエージェントのための共有ナレッジ
ウィキでは、アーキテクチャ、プロトコル、人間/エージェントのワークフロー、MCP ツールの選択、ドメイン知識を案内しています。MCP クライアントは、プランを読み込む前に、パッケージに含まれる同じページをtakeoff://wikiおよびtakeoff://wiki/{page}から読み込みます。AGENTS.mdはコントリビューター向けの案内ページで、詳しいガイダンスはウィキに記載されています。CIでは、パッケージ化されたウィキの内容、ツール数/一覧、スキーマ参照、ソースに対するリンクをチェックします。
プライバシーと利用規約
プライバシーポリシー · 利用規約。どちらもアプリ内ガイド(?)からリンクされています。ソフトウェアライセンス(AGPL-3.0)は別途定められています。
© 2026 NVIDIA、NVIDIAのロゴ、およびNVIDIA Inceptionは、米国およびその他の国におけるNVIDIA Corporationの商標または登録商標です。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。