BOM Extractor
Documentation
Extract Bill of Materials from engineering drawings using local AI. Everything runs on your machine — no cloud services, no API keys, no data leaves your environment.
Table of Contents
Overview
BOM Extractor is a desktop application that extracts Bill of Materials (BOM) from engineering drawings using local AI. It analyzes technical drawings — assembly diagrams, part lists, title blocks, and balloon callouts — and produces a structured, editable BOM that exports directly to CSV in a format compatible with TCS iON ERP.
Everything runs locally. No cloud services, no API keys, no data leaves your machine.
System Requirements
| Component | Minimum | Recommended |
|---|---|---|
| OS | Windows 10 / macOS 11+ / Linux | Windows 11 / macOS 14+ (Apple Silicon) |
| RAM | 8 GB | 16 GB |
| Storage | 3 GB free (for AI model) | 5 GB free |
| GPU | Not required (CPU works) | Any modern GPU accelerates inference |
| Python | 3.10+ (Mac/Linux only) | 3.12+ |
| Internet | Required on first run only | --- |
Installation
Windows
- Download BOMExtractor.exe from the Releases page
- Run the executable — no installation wizard, no admin rights needed
- On first use, the app automatically installs the AI engine and downloads the model (~2 GB)
macOS
- Download BOMExtractor-macOS.tar.gz from the Releases page
- Extract the archive (double-click or tar xzf BOMExtractor-macOS.tar.gz)
- Right-click BOMExtractor.app then select Open (required once to bypass Gatekeeper)
- The app auto-creates a Python virtual environment, installs dependencies, and sets up the AI engine on first launch
From Source (All Platforms)
First Run
On the very first launch, BOM Extractor performs a one-time setup:
- Ollama Installation — If not already present, the app downloads and installs Ollama, a local AI model runtime
- Server Start — Starts the Ollama server on localhost:11434
- Model Download — Pulls qwen2.5vl:3b (~2 GB), a vision-language model capable of reading engineering drawings
This process takes 2-5 minutes depending on your internet speed. A progress indicator shows the current step. After first run, the app launches instantly and works fully offline.
Features
Drawing Upload
Upload engineering drawings in the following formats:
| Format | Extension |
|---|---|
| PNG | .png |
| JPEG | .jpg, .jpeg |
| Bitmap | .bmp |
| WebP | .webp |
Click the upload zone or use Ctrl+O (Cmd+O on Mac) to select a file. A thumbnail preview appears in the left panel after upload.
AI-Powered BOM Extraction
Once a drawing is uploaded, the AI model analyzes it and extracts:
- Part numbers from title blocks, parts lists, and balloon callouts
- Part names and descriptions
- Quantities per assembly
- Material specifications (e.g., SS304, Aluminum 6061, MS)
- Parent-child relationships to build the hierarchy
- BOM levels (0 = top assembly, 1 = sub-assembly, 2+ = individual parts)
- Make/Buy classification
- Item categories (Finished Good, Semi-Finished, Raw Material, Bought Out, Consumable)
- HSN/SAC codes for GST compliance (where identifiable)
- Estimated weight and cost (where identifiable)
The extraction typically takes 15-60 seconds depending on drawing complexity and hardware.
Editable BOM Table
The extracted BOM appears in an editable table in the right panel. Columns:
| Column | Description |
|---|---|
| Lvl | BOM hierarchy level (0, 1, 2, ...) |
| Part Number | Unique item code |
| Part Name | Descriptive name (indented by level) |
| Qty | Quantity per parent assembly |
| UOM | Unit of measure (EA, KG, M, L, SET) |
| Material | Material specification |
| Parent | Parent item's part number |
| Description | Functional description |
| Make/Buy | Manufacturing source |
| Category | Item classification for ERP |
Editing: Double-click any cell to modify its value. Use Ctrl+N to add a new row, Delete to remove selected rows.
Tree Diagram
Access via Ctrl+T or the View Tree toolbar button. Opens a visual hierarchy of the BOM with:
- Color-coded nodes: Blue (Main Assembly, Level 0), Teal (Sub-Assembly, Level 1), Gray (Individual Part, Level 2+)
- Connector lines showing parent-child relationships
- Node details: Part name, part number, quantity, material
- Scrollable canvas for large assemblies
- Export as text — saves an indented text representation of the tree
CSV Export (TCS iON ERP)
Export via Ctrl+E or the Export CSV toolbar button. The CSV follows the TCS iON ERP BOM import template:
The file uses UTF-8 encoding with BOM (utf-8-sig) for Excel compatibility.
Keyboard Shortcuts
| Shortcut | Action |
|---|---|
| Ctrl+O / Cmd+O | Upload drawing |
| Ctrl+E / Cmd+E | Export BOM as CSV |
| Ctrl+T / Cmd+T | Open tree diagram view |
| Ctrl+N / Cmd+N | Add new BOM row |
| Delete | Delete selected rows |
TCS iON ERP Integration
The CSV output is formatted to match the TCS iON Manufacturing module's BOM import template. To import:
- Export the CSV from BOM Extractor
- In TCS iON, navigate to Manufacturing → Bill of Materials → Import
- Upload the CSV file
- Map columns if prompted (column names follow the standard template)
- Validate and confirm the import
Supported TCS iON Fields
| Field | Description | Values |
|---|---|---|
| BOM Level | Hierarchy depth | 0 (top) to N |
| Item Code | Unique part identifier | Alphanumeric |
| Item Name | Part description | Free text |
| Quantity | Required per parent | Numeric |
| UOM | Unit of measure | EA, KG, M, L, SET |
| Material | Material specification | Free text |
| Parent Item Code | Parent's item code | Blank for top level |
| Make/Buy | Source classification | Make, Buy |
| Item Category | ERP category | Finished Good, Semi-Finished, Raw Material, Bought Out, Consumable |
| HSN/SAC Code | GST classification | 4-8 digit code |
| Unit Weight | Weight in kg | Numeric |
| Unit Cost | Cost in INR | Numeric |
Architecture
Tech Stack
- Frontend: Python tkinter with custom-styled widgets
- AI Backend: Qwen2.5-VL 3B running on Ollama (local HTTP API)
- Data Model: Dataclass-based BOM items with TCS iON field mapping
- Export: CSV writer with UTF-8-sig encoding
- Packaging: PyInstaller (Windows .exe), native .app bundle (macOS)
Troubleshooting
"Ollama is not running"
The app auto-starts Ollama, but if it fails:
Extraction is slow
- CPU-only machines: 1-3 minutes per drawing is normal for the 3B model
- Apple Silicon Macs: Should complete in 15-30 seconds
- GPU-equipped Windows: Ensure Ollama detects your GPU (ollama ps shows the device)
Model not found
macOS: "App is damaged" or "Cannot verify developer"
Right-click the app then select Open (not double-click). This bypasses Gatekeeper for unsigned apps. You only need to do this once.
CSV encoding issues in Excel
The export uses utf-8-sig encoding which Excel handles natively. If characters appear garbled, open via Excel's Data → From Text/CSV import wizard and select UTF-8 encoding.