きれいな間取り図ほど、CADでは動かない——生成AI画像をDXFへ変える方法
生成AIに「3LDKの間取り」と頼むと、数分後には白い画面へ整った部屋と扉が、まるで設計を終えた図面のように静かに並び始める。けれど、その美しい画像をCADへ持ち込んだ瞬間、さっきまで図面に見えていたものが、ただの1枚の絵へ戻るという不思議が起きる。選べるのは壁でも窓でもなく画像全体だけであり、動かしたかった1本の線を前に、こちらの手が静かに止まるのには確かな理由がある。
ChatGPT Workによる間取り図画像のDXF変換フロー


実行はChatGPT Workで行います。間取り図画像と専用プロンプトを添付し、DXFへの変換を指示する。WorkはまずOpenCVで画像を二値化し、壁や建具を構成する直線・輪郭・円弧を抽出する。続いてOCRで部屋名や寸法などの文字情報を認識し、それらを座標情報とともに中間データであるFloorPlan JSONへ整理・保存する。JSONからezdxfでDXFファイルを作成した。この処理を一気に進めてしまうChatGPT Workは凄い可能性を秘めてる。

その後、Pythonとezdxfを用いて編集可能なDXFファイルを生成します。生成したDXFは再度レンダリングして元画像と比較し、位置や形状のずれを検証します。差異が許容範囲を超える場合は、DXFを直接修正するのではなくFloorPlan JSONを修正したうえで再生成を行い、精度を段階的に高める流れです。これにより、変換結果だけでなく修正履歴や再現性も確保できます。
絵の中に、壁はない
見た目は図面でも、PNGやJPEGの中にあるのは、名前も厚みも持たない小さな点の集まりにすぎないものだ。AutoCAD、ARES CAD Software、Jw_cadなどへ読み込んでも、ドアと窓は別々の部材としてこちらを待ってはいない。編集したいなら、絵の中から壁や建具を拾い上げ、座標と属性を持つ図面データへ静かに戻す作業が欠かせない。
画像からDXFへ一気に線を渡すと、誤検出を直すたび、絡まった糸を最初からほどくような手戻りが起きる。ここでいうFloorPlan JSONは既存規格ではなく、壁や建具を一度預けるため、自分で設計する中間データである。
美しさが、線を迷わせる
変換の成否は、画像を解析する前から、現場ではすでに半分ほど決まっているように見えることが少なくない。影のある家具や床の木目は人の目には美しいが、機械の目にはなぜか不意に、壁とよく似た線として映ってしまう。
真上からの正投影、白い背景、黒い線、太い外壁と細い間仕切りという素朴さが、むしろ後工程の負担を軽くする。画像生成AIには「建築CAD図面」「家具なし」「影なし」「寸法は水平」と、飾りを減らす言葉を並べておく。OpenCVでは、まず色を落として二値化し、散った点を払い、途切れた線をクロージング処理でつなぎ直す。
均一な画像には大津の二値化、濃淡にむらがある画像には適応的二値化をまず試し、線が残る方を選べばよい。二値化画像やエッジ画像も残しておくと、線が消えた場所と、余計な線が生まれた場所をあとで確かめられる。
壁は、群れで現れる
壁はHough変換や輪郭抽出で探すが、時に1本の壁が短い線の群れになり、別々の顔で現れることがある。同じ方向で同一直線上に並ぶ線をまとめると、次第に外周を囲む太い壁と、内部を分ける細い壁が見えてくる。
ドアは壁の切れ目と扉線と円弧から、窓は円弧を持たない2重線や3重線から、最後まで慎重に見分けていく。部屋名や寸法はOCRに読ませ、文字だけでなく、その文字が画像のどこに置かれていたかも一緒に受け取る。6000mmの寸法が600pxに対応するなら、1pxは10mmとなり、画像の線が静かに実寸を持ち始める。
数字に戻すと、図面が息をする
読み取った要素はJSONへ並べ、座標、種類、壁厚、接続先、信頼度を記録し、迷った線は未分類のまま残す。読めない文字を都合よく補い、建具らしい形を建具と決めれば、きれいな誤りが図面の中に固定されてしまう。画像は左上、CADは左下を原点にするため、画像の高さと尺度を使って、Y座標の向きと基準位置を変える。
少し傾いた水平線、届かない端点、重なった短線を整えたあと、ezdxfで要素ごとのレイヤーへ配置する。壁はLINEやLWPOLYLINE、扉の軌跡はARC、部屋名はTEXTとして置けば、ようやく個別に触れられる。
サンプルプロンプト付きの記事は下記。
完成は、重ねてから見える
DXFをPNGへ戻して元画像と重ねる前に、双方の尺度や線幅をそろえ、IoU、端点誤差、未検出率を同じ条件で確かめる。ずれがあればDXFを直接直さず、JSONを修正して再生成し、DXFと検証結果を一組で保存すれば、修正の理由と履歴が残る。
この実験にかかった時間は約4時間で、生成AIがなければ、画像生成から差分検証までに5日以上かかっていただろう。久々にソフト開発をした気分になったが、振り返るとプログラムは全部生成AIが作ったのだ(笑)。
AIの描いた線に、いつ図面としての責任が宿るのか、その境目は案外、変換の途中に置いたJSONの中にあるのかもしれない。
