a-shojaei/constructdrawingai — explained in plain English
Analysis updated 2026-05-18
Automatically detect symbols and components on electrical, architectural, or P&ID drawings.
Generate a connectivity graph showing how components on a drawing are wired or piped together.
Produce a quantity takeoff of counts, areas, and lengths from a drawing.
Ask natural language questions about a drawing or draft an RFI document from it.
| a-shojaei/constructdrawingai | alex72-py/aria-termux | anime0t4ku/gentleman | |
|---|---|---|---|
| Stars | 20 | 20 | 20 |
| Language | Python | Python | Python |
| Setup difficulty | moderate | moderate | moderate |
| Complexity | 4/5 | 2/5 | 2/5 |
| Audience | developer | developer | general |
Figures from each repo's GitHub metadata at analysis time.
Requires Python 3.11+, the uv package manager, and trained detector weights for full functionality.
ConstructDrawingAI reads 2D construction drawings, such as electrical plans, architectural floor plans, and piping and instrumentation diagrams known as P&ID, and turns them into structured data a computer can reason about. It detects symbols and components on the drawing, builds a connectivity graph showing how those components are wired or piped together, produces a quantity takeoff of counts, areas, and lengths, and lets a user ask natural language questions about the drawing or draft a request for information document based on it. The project reports benchmark results against published research on real, held out test drawings, covering electrical, architectural, and P&ID symbol and connectivity detection, compared to prior published state of the art numbers where available. Internally, a drawing passes through five layers that all read and write one shared data format called the Canonical Intermediate Representation. The first layer ingests a PDF, DWG or DXF CAD file, an IFC building model file, or an image, and breaks large drawings into tiles. The second layer runs detection models to find symbols, components, and how they connect. The third layer maps those detections to standard building industry classification codes. The fourth layer computes the quantity takeoff. The fifth layer is an agent that answers questions and drafts RFI documents using everything extracted so far. Every value the system produces carries a confidence score and a link back to the original drawing sheet it came from. The codebase is organized by these same layers, with separate folders for the shared schema, ingestion, detection, code mapping, takeoff calculations, the question answering agent, evaluation tooling, a synthetic drawing generator for creating training data, and a FastAPI backend that exposes the whole pipeline as a web API with an included demo console. Running it requires Python 3.11 or newer and the uv package manager. After installing dependencies, a user can run the test suite, run a quantity takeoff on an existing CIR file from the command line, or start the backend API and demo console to upload a drawing image and get detection, takeoff, question answering, and RFI results back. The benchmark datasets used for evaluation carry their own separate licenses and are not stored in the git repository. The project itself is free to use for noncommercial research and education under the PolyForm Noncommercial License, and anyone wanting to use it commercially needs to contact the author for a separate license.
An AI pipeline that reads construction drawings and extracts detections, connectivity graphs, and quantity takeoffs.
Mainly Python. The stack also includes Python, FastAPI, PyTorch.
Free for noncommercial research and education, commercial use requires a separate license from the author.
Setup difficulty is rated moderate, with roughly 1h+ to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Don't trust strangers blindly. Verify against the repo.