Skip to main content

diagram-analyser

Structural analysis of diagrams — the lens-family member that reads diagrams as graphs (nodes + edges) rather than as raster images.

Supports four text formats out of the box:

Format Extensions
Mermaid .mmd, .mermaid
PlantUML .puml, .plantuml
Graphviz / DOT .dot, .gv
drawio (XML) .drawio

Plus an optional [vision] path for image diagrams (.png/.jpg) via Anthropic Claude Vision — explicit-only, since those extensions auto-route to image-analyser.

image-analyser sees raster pixels; this one parses the diagram's structure — nodes, edges, orphans, cycles, depth, naming. Built for design-unit assessment (CS/IS architecture, ER, UML, flowcharts).

Install

pip install diagram-analyser                       # text formats — pure Python
pip install 'diagram-analyser[vision]'             # adds image-diagram support

For the vision path, set one of:

export ANTHROPIC_API_KEY=sk-ant-...

Use

Python:

from diagram_analyser import DiagramAnalyser

result = DiagramAnalyser().analyse("architecture.mmd")
print(result.diagram_type)              # "flowchart"
print(result.graph.node_count)          # 7
print(result.structure.orphan_nodes)    # []
print(result.structure.cycle_count)     # 1
print(result.structure.is_dag)          # False

# Image diagram (needs [vision] extra + ANTHROPIC_API_KEY):
result = DiagramAnalyser().analyse("diagram.png")
print(result.vision.raw_description)

CLI:

diagram-analyser flow.mmd                  # human summary
diagram-analyser model.puml --json         # raw JSON
diagram-analyser arch.png                  # vision path (needs API key)
diagram-analyser serve                     # HTTP API on port 8013
diagram-analyser manifest                  # capability manifest

HTTP (diagram-analyser serve on port 8013):

curl -F file=@flow.mmd http://localhost:8013/analyse
curl http://localhost:8013/health

Signals

For every diagram (text or vision-extracted):

  • Graph — nodes (id, label, kind), edges (source, target, kind, label), counts.
  • Structure — orphan_nodes (disconnected), cycle_count + sample cycles, max_depth, is_dag, connected_components.
  • Naming quality — label coverage, average label length, suspiciously short labels.
  • Diagram type — for mermaid: flowchart / classDiagram / erDiagram / sequenceDiagram / stateDiagram; for PlantUML: uml / mindmap / wbs; for graphviz: digraph / graph; for drawio: best-effort from cell hints.

The family

Part of the lens analyser family.

What you want Use
Raster image (any kind) image-analyser
Structured diagram (mermaid/UML/drawio/dot) diagram-analyser (this)
Image of a diagram image-analyser detects + auto-analyser cascades to here, or diagram-analyser file.png directly
Any file → right engine auto-analyser

Limits

  • v1 text parsers are pragmatic — not full grammars. They get nodes, edges, and the diagram type for ~all realistic student diagrams; corner cases (subgraphs, deeply nested mermaid classes) may parse approximately.
  • Vision path produces structure only as well as the LLM extracts it. We surface the raw description so you can verify.

License

MIT

Metadata

Release files for diagram-analyser 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for diagram-analyser 0.3.0
File Size Uploaded
diagram_analyser-0.3.0.tar.gz 138.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for diagram-analyser 0.3.0
File Interpreter ABI Platform
diagram_analyser-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 160.2 kB

Release files / diagram_analyser-0.3.0.tar.gz

Download URL diagram_analyser-0.3.0.tar.gz
Size 138.0 kB
Tags Source
SHA-256 checksum
How to use checksums
4a00164e4bd536d78a80706fd296e016c0acdd9c3030c092558a503a6ffc2e4d
BLAKE2b-256 checksum
How to use checksums
0401c6a058c30919f3fdd5b74a977de45b8951ff625496d4587ad5b5d3a43664
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.0

Release files / diagram_analyser-0.3.0-py3-none-any.whl

Download URL diagram_analyser-0.3.0-py3-none-any.whl
Size 22.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bb662bb95fb129b2a2452ed56802e1c3ad0e0a9abb769f37245d6228b93fdb82
BLAKE2b-256 checksum
How to use checksums
27a6acf0eb7f729988ee352b5518b94c8d67b3400346b92964be0c039bd3f624
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.0

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page