AI Blueprint Analyzer: Floor Plan & Construction Data
Pricing
from $130.00 / 1,000 blueprint analyzeds
AI Blueprint Analyzer: Floor Plan & Construction Data
AI-powered architectural blueprint analyzer. Extract floor plans, rooms, dimensions, materials, walls, doors & structural elements from construction drawings. Built for architects, contractors, real estate pros. Batch up to 10 images. PDF & JPG. Structured JSON.
Pricing
from $130.00 / 1,000 blueprint analyzeds
Rating
0.0
(0)
Developer
daehwan kim
Maintained by CommunityActor stats
0
Bookmarked
139
Total users
2
Monthly active users
6 days ago
Last modified
Categories
Share
Blueprint Intelligence Analyzer
AI-powered architectural blueprint analysis for automated document intelligence and construction data extraction.
Extract floor plans, structural elements, dimensions, rooms, materials, and annotations from architectural and engineering drawings using advanced AI vision.
| Free plan (preview) | Paid Apify plan (Starter and up) | |
|---|---|---|
| Blueprints analyzed per run | 1 (the first URL) | every URL you enter (maxImages, default 10) |
| Room / element / dimension rows | 1 row of each kind; the rest are counted (N of M shown) | every row |
| What the rest would give | a free-plan-preview row: images not analyzed, finding rows locked by kind, and an estimate (BRONZE prices) of a paid run of the same input | — |
| Price | same events | same events, with plan discounts: BRONZE 20% off, SILVER 35% off, GOLD and up 48% off |
A free run ends as SUCCEEDED with a status message that says what was left out. Run the same input again on a paid plan for everything.
This Actor is an independent, unofficial tool. It is not affiliated with, endorsed by, or sponsored by any CAD or BIM software vendor. It analyzes only images you supply a URL for; see the Legal Notice below for your responsibilities as the uploader.
Features
- Document Classification: Automatically identify blueprint types (floor plans, structural, electrical, plumbing, HVAC, site plans, elevations, sections, details)
- Room Detection: Extract room names, estimated areas, and dimensions from floor plans
- Element Extraction: Identify architectural and structural elements (walls, doors, windows, stairs, columns, pipes, wires, fixtures)
- Dimension Recognition: Automatically detect and extract measurements and scales
- Text Annotation Parsing: Extract all text labels, notes, and annotations from drawings
- Material Identification: Recognize and list materials mentioned in blueprints
- Confidence Scoring: Get reliability metrics for each analysis
- Batch Processing: Process up to 10 blueprints per run
Input
{"imageUrl": "https://example.com/blueprint.jpg","imageUrls": [],"analysisDepth": "standard","maxImages": 10}
Parameters
| Parameter | Type | Required | Description | Default |
|---|---|---|---|---|
imageUrl | string | Optional | Single blueprint image URL | null |
imageUrls | array | Optional | Array of blueprint URLs (max 10) | [] |
analysisDepth | enum | No | Analysis level: quick, standard, detailed | "standard" |
maxImages | integer | No | Maximum images to process (1-10) | 10 |
Note: Provide at least one image via imageUrl or imageUrls. You can use both simultaneously; duplicates are automatically removed.
Output
Each blueprint analysis produces an overview record. While the finding rows below are on (the element-detected event is on the price list, as it is now), the overview carries the counts roomCount, elementCount and dimensionCount, and each room, element and dimension comes as its own finding row. Without the finding layer the overview carries the rooms, elements and dimensions lists shown here:
{"imageUrl": "https://example.com/blueprint.jpg","status": "success","documentType": "floor_plan","drawingTitle": "Building A - Level 2","drawingScale": "1:100","rooms": [{"name": "Living Room","area_sqft": 250,"dimensions": "20' x 12.5'"}],"elements": [{"elementType": "door","count": 5,"details": "Interior doors with swing direction"}],"dimensions": [{"label": "Room Width","value": "20","unit": "feet"}],"textAnnotations": ["Property line","Setback: 25 ft"],"materials": ["Concrete","Steel reinforcement"],"confidence": 0.92,"model": "Qwen2.5-VL","processingTimeMs": 2500}
Finding rows (additional layer, once priced)
For a successfully analyzed blueprint, this Actor also writes one extra row per
detected room, architectural element or dimension (rowType: "finding"). This is
on top of — not instead of — the overview row above, and only charges once the
element-detected event below is on the live price list.
{ "rowType": "finding", "imageUrl": "https://example.com/blueprint.jpg","findingType": "room", "name": "Living Room", "area_sqft": 250, "dimensions": "20' x 12.5'" }
Output Fields
| Field | Type | Description |
|---|---|---|
imageUrl | string | Original blueprint image URL |
status | string | "success" or "error" |
documentType | string | Blueprint classification |
drawingTitle | string | null | Drawing title if visible |
drawingScale | string | null | Drawing scale (e.g., "1:100") |
roomCount / elementCount / dimensionCount | integer | How many finding rows of each kind follow (finding layer on) |
rooms | array | Detected rooms/spaces with area and dimensions (finding layer off) |
elements | array | Architectural elements found (finding layer off) |
dimensions | array | Measurements and scales detected (finding layer off) |
textAnnotations | array | Text labels and annotations |
materials | array | Materials mentioned in drawing |
confidence | number | Analysis confidence (0.0-1.0) |
model | string | AI model name |
processingTimeMs | integer | Processing time |
error | string | Error message (on failure) |
code | string | Error code: INVALID_INPUT, INVALID_URL, IMAGE_UNREACHABLE, TIMEOUT, API_ERROR, PROCESSING_ERROR |
errorSide | string | On error rows: target (the image host answered with an error — 401/403/404/410, or 429/503 twice — or the URL is not an image; IMAGE_UNREACHABLE) or service (our side) |
reason | string | On target rows: login-required, forbidden, not-found, gone, temporarily-unavailable, host-error, not-an-image or empty-body |
httpStatus | integer | On target rows: the HTTP status the host answered (null when it was not an HTTP error) |
Pricing
| Event | Price (FREE tier list price) | When it is charged |
|---|---|---|
blueprint-analyzed | $0.25 | once per analyzed blueprint (the overview row) |
element-detected | $0.01 | once per room, element or dimension finding row of an analyzed blueprint |
blueprint-checked | $0.02 | once per image URL our vision service could not download and whose host then refused the Actor too (HTTP error, not an image, empty body): code: "IMAGE_UNREACHABLE", errorSide: "target", reason, httpStatus. Charged only once this event is on the live price list |
Who is behind a failed URL. When the URL's own host answers 401, 403, 404 or 410, the check is done and the answer is the host's: errorSide: "target" with reason (login-required, forbidden, not-found, gone) and httpStatus, charged as blueprint-checked. When it answers 429, 503 or another temporary code, the Actor waits briefly and asks once more; the same kind of answer again is the host's own state: reason: "temporarily-unavailable" with the HTTP code, charged the same way. Our side is never charged: our time limit, a host that never answered, our vision service's errors (errorSide: "service").
If the platform restarts a run, the new run life reads the run's own dataset and the platform's charge counts: rows already delivered are not delivered or charged again. An image whose overview row was already delivered is not analyzed again: if the restart cut it between its overview row and its finding rows, the missing finding rows are not made again (a second analysis may list the findings differently) and not charged, and one free partial-result row names them per kind (partial: true, missingLayers, inputIndex); the status says N of M complete, K partial. Every result row and the partial-result row carry inputIndex: the image's 0-based place in the list the Actor builds from your input — imageUrl, url, imageUrls, urls in that order, without values that do not start with http(s)://, without exact repeats of a URL (the first one keeps its place), cut at maxImages. The dataset's Overview view shows inputIndex, rowType, findingType, noticeCode, missingLayers and message, so a cut image is visible next to its rows. If the dataset cannot be read back, the run stops without processing or charging anything more.
Not charged: TIMEOUT, API_ERROR, PROCESSING_ERROR, EXCEPTION rows (errorSide: "service" — our side), INVALID_URL/INVALID_INPUT rows (rejected before any work), notice rows. Plan discounts: BRONZE 20%, SILVER 35%, GOLD and up 48%.
The run stops when its maximum charge is reached: no further row is delivered, a charge-limit-reached notice row says how many images were not processed, and the run ends as SUCCEEDED. If our vision service fails 3 images in a row, the run stops with a free service-unavailable notice row.
Examples
Single Blueprint Analysis
curl -X POST https://api.apify.com/v2/acts/YOUR_ACTOR_ID/runs \-H "Authorization: Bearer YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"imageUrl": "https://upload.wikimedia.org/wikipedia/commons/c/cd/Cleveland_Union_Terminal_floor_plan.jpg"}'
Batch Processing Multiple Blueprints
curl -X POST https://api.apify.com/v2/acts/YOUR_ACTOR_ID/runs \-H "Authorization: Bearer YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"imageUrls": ["https://upload.wikimedia.org/wikipedia/commons/c/cd/Cleveland_Union_Terminal_floor_plan.jpg","https://upload.wikimedia.org/wikipedia/commons/8/85/EER_Arena_Floor_Plan.png"],"analysisDepth": "detailed","maxImages": 10}'
Using the JavaScript SDK
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('YOUR_ACTOR_ID').call({imageUrl: 'https://example.com/blueprint.jpg',analysisDepth: 'standard',});const results = await client.dataset(run.defaultDatasetId).listItems();console.log(results.items);
Use Cases
- Construction Project Management: Automatically catalog and extract data from project blueprints
- Real Estate Analysis: Extract room counts, dimensions, and property layouts
- Building Information Modeling (BIM): Feed extracted data into BIM systems
- Compliance Verification: Extract regulatory markings and construction notes
- Cost Estimation: Get detailed element counts and dimensions for material quotes
- Property Valuation: Analyze building layouts and room dimensions
- Renovation Planning: Extract existing structural elements for renovation designs
- Facility Management: Index and retrieve building information from drawings
Supported Blueprint Types
- Floor Plans — Residential, commercial, industrial building layouts
- Structural Drawings — Load-bearing walls, columns, beams, foundations
- Electrical Plans — Power distribution, outlet locations, circuit layouts
- Plumbing Diagrams — Water lines, fixtures, drainage systems
- HVAC Schematics — Ductwork, equipment, air handling systems
- Site Plans — Property boundaries, landscaping, access points
- Elevations — Building facades and exterior views
- Cross-Sections — Internal building profiles and details
- Detail Drawings — Construction connection and assembly details
- Other Diagrams — Any architectural or engineering drawings
Limitations & Accuracy
- Image Quality: Analysis accuracy depends on blueprint image resolution and clarity
- Hand-Drawn Drawings: Legibility may vary for hand-sketched or aged prints
- Complex Symbols: Non-standard or custom symbols may not be recognized
- Text Extraction: Small or stylized text may be missed
- Dimension Accuracy: Extracted dimensions should be verified against original documents
- Dense Drawings: Very complex drawings with many elements may have reduced accuracy
Confidence Scores: Use the confidence field (0.0-1.0) to gauge analysis reliability. Scores below 0.7 indicate less certain results.
AI Model
- Model: Qwen2.5-VL (7B parameters)
- Processing: Local AI server (no cloud storage of blueprints)
- Response Time: 2-10 seconds per image (typical)
Legal Notice
Copyright & Ownership (IMPORTANT)
- Architectural blueprints and engineering drawings are protected by copyright law (U.S. Architectural Works Copyright Protection Act, 1990).
- You may ONLY upload blueprints that you: (a) Own or created yourself (b) Have explicit written permission from the copyright holder to analyze (c) Are licensed to use for this purpose
- Uploading third-party blueprints without authorization may constitute copyright infringement.
- We assume no liability for unauthorized use of copyrighted architectural works.
Confidential & Trade Secret Documents
- Do NOT upload blueprints marked as "Confidential," "Proprietary," or "Trade Secret."
- Unauthorized analysis of confidential blueprints may violate trade secret laws and result in significant legal liability for the user.
- We do not verify the confidentiality status of uploaded documents.
Not an Engineering Tool
- This tool provides AI-assisted analysis for INFORMATIONAL PURPOSES ONLY.
- Results are NOT a substitute for professional architectural or structural engineering review.
- Do NOT use extracted dimensions, measurements, or structural data for construction, renovation, or engineering decisions without professional verification.
- Errors in AI-extracted measurements could lead to structural failures, safety hazards, or code violations.
Liability
- The developer assumes no liability for errors, omissions, or decisions based on this tool's output.
- Users must verify all extracted data with qualified architects, engineers, or licensed contractors.
- This tool does not provide structural analysis, load calculations, building code compliance, or safety certifications.
Data Processing
- Blueprint images are processed on our local AI server and immediately discarded.
- We do not retain, share, or use uploaded blueprints for any purpose beyond the requested analysis.
- For confidential projects, consider using our service only with proper authorization from all stakeholders.
Error Handling
| Error Code | Cause | Resolution |
|---|---|---|
INVALID_INPUT | URL is null or not a string | Provide valid imageUrl or imageUrls |
INVALID_URL | URL format is invalid | Ensure URL starts with http:// or https:// |
TIMEOUT | AI service took too long (>180 s, or the time the run had left) | Try again or use lower analysisDepth |
API_ERROR | AI service returned error | Check image accessibility and try again |
PROCESSING_ERROR | Unexpected error during analysis | Check logs; image may not be a blueprint |
Support & Feedback
For issues, suggestions, or feature requests, contact the development team through Apify.
Changelog
v1.0.0 (Initial Release)
- ✅ Blueprint document type classification
- ✅ Room and space detection
- ✅ Architectural element extraction
- ✅ Dimension and measurement recognition
- ✅ Text annotation parsing
- ✅ Material identification
- ✅ Batch processing (up to 10 images)
- ✅ Confidence scoring
- ✅ PPE pricing model ($0.25/analysis)
🔗 Related Actors by ntriqpro
Build your data pipeline with the ntriqpro Actor suite:
- invoice-extraction-mcp — AI Invoice & Receipt Parser
- pdf-to-markdown — Office to Markdown — Document Extractor
- vehicle-damage-assessment — AI Vehicle Damage Inspector
⭐ Love it? Leave a Review
Your rating helps other construction and real estate professionals discover this actor. Rate it here.
Last Updated: 2026-04-19 AI Model: Qwen2.5-VL v7B Processing Server: ai.ntriq.co.kr