IamBatman07's picture
Serve the Streamlit demo at / with the API behind nginx
fb6e17c verified
|
Raw History Blame Contribute Delete
1.56 kB
metadata
title: Diagram Structure Extractor
emoji: πŸ“Š
colorFrom: blue
colorTo: green
sdk: docker
app_port: 8000
pinned: false
license: mit

Diagram Structure Extractor

Upload an architecture diagram and get its structure back as schema-valid JSON: every text label, box, arrow, icon, and the relationships between components. Output is a typed Pydantic model, so the JSON parses on every call.

Demo: the Space opens on a Streamlit app. Upload a diagram or pick one of the samples to see the annotated overlay, the relationship graph and the JSON, with JSON and CSV downloads. The sidebar switches each detector stage.

API (same host)

  • POST /extract β€” multipart image upload; returns the typed structure, an annotated PNG, and a flat edge CSV
  • GET /health β€” liveness
  • GET /docs β€” interactive API docs

Measured results (relationship F1; edges are directed, and a double-headed connector counts once each way)

  • 14 synthetic reference architectures: 1.000
  • A real draw.io export: 0.900
  • 10 held-out draw.io-style diagrams: 0.789 (0.711 when first scored, before the code-review fixes)
  • Schema-valid JSON on every input, at every pipeline stage
  • Detectors: PaddleOCR text (F1 0.962), Canny boxes (1.000), directed-lines arrows (1.000 on the synthetic set), template-matched icons (1.000)

Handles draw.io conventions: thin dashed connectors, small and double-headed arrowheads, elbow routing, line labels, icon nodes with captions underneath.

Source: https://github.com/Mark007-R/Diagram-Structure-Extractor