# rudransh-12/digimaap_seal_validation architecture

> Architecture diagram of the GitHub repository rudransh-12/digimaap_seal_validation, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/rudransh-12/digimaap_seal_validation
- Repository: https://github.com/rudransh-12/digimaap_seal_validation

## Overview

SealScan is a FastAPI backend for seal-image quality checks and similarity-based tampering risk assessment. A client can first submit a single image for quality feedback, or submit a current image plus reference images for the full assessment: decoding and quality validation precede per-reference comparison, metric aggregation, and LOW/MEDIUM/HIGH classification. The similarity engine delegates preprocessing and feature measurement; quality validation also uses a blur classifier. The README is empty, so the documented endpoint descriptions and sampled source establish the product workflow. Aggregation and tampering-classifier details are based on the endpoint’s stated pipeline and tree paths, not inspected implementation excerpts.

Main entry points: [`backend/app/api/similarity.py`](https://github.com/rudransh-12/digimaap_seal_validation/blob/main/backend/app/api/similarity.py) (Similarity endpoint), [`backend/app/services/image_quality.py`](https://github.com/rudransh-12/digimaap_seal_validation/blob/main/backend/app/services/image_quality.py) (Quality metrics), [`backend/app/config/settings.py`](https://github.com/rudransh-12/digimaap_seal_validation/blob/main/backend/app/config/settings.py) (Thresholds and settings), [`backend/app/api/quality.py`](https://github.com/rudransh-12/digimaap_seal_validation/blob/main/backend/app/api/quality.py) (Quality endpoint)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API layer"]
  node_app["FastAPI application<br/>[main.py]"]
  node_quality_endpoint["Quality endpoint<br/>[quality.py]"]
  node_similarity_endpoint["Similarity endpoint<br/>[similarity.py]"]
  node_schemas["Request and response schemas<br/>[schemas.py]"]
end

subgraph group_quality["Image quality"]
  node_quality_service["Quality metrics<br/>[image_quality.py]"]
  node_blur_classifier["Blur assessment<br/>[blur_classifier.py]"]
  node_blur_model[("Blur model artifact")]
end

subgraph group_similarity["Similarity assessment"]
  node_similarity_engine["Comparison orchestration"]
  node_preprocessing["Image preprocessing<br/>[preprocessing.py]"]
  node_feature_extraction["Pairwise metrics"]
  node_aggregation["Reference aggregation"]
  node_tampering_classifier["Risk classification"]
  node_tampering_model[("Tampering model artifact")]
end

subgraph group_analysis["Analysis internals"]
  node_image_utils["Image decoding<br/>[image_utils.py]"]
  node_settings["Thresholds and settings<br/>[settings.py]"]
end

node_client(("Image submitter"))

node_client -->|"sends requests"| node_app
node_app -->|"routes quality checks"| node_quality_endpoint
node_app -->|"routes scans"| node_similarity_endpoint
node_quality_endpoint -->|"decodes image"| node_image_utils
node_quality_endpoint -->|"checks quality"| node_quality_service
node_quality_endpoint -->|"returns typed response"| node_schemas
node_similarity_endpoint -->|"decodes images"| node_image_utils
node_similarity_endpoint -->|"checks current image"| node_quality_service
node_similarity_endpoint -->|"compares references"| node_similarity_engine
node_similarity_endpoint -->|"aggregates metrics"| node_aggregation
node_similarity_endpoint -->|"classifies aggregate"| node_tampering_classifier
node_similarity_endpoint -->|"returns typed response"| node_schemas
node_quality_service -->|"assesses blur"| node_blur_classifier
node_quality_service -->|"converts grayscale"| node_image_utils
node_quality_service -->|"reads thresholds"| node_settings
node_blur_classifier -.->|"loads model"| node_blur_model
node_similarity_engine -->|"preprocesses images"| node_preprocessing
node_similarity_engine -->|"computes metrics"| node_feature_extraction
node_preprocessing -->|"reads parameters"| node_settings
node_feature_extraction -->|"reads ORB settings"| node_settings
node_aggregation -->|"reads aggregation choice"| node_settings
node_tampering_classifier -->|"reads classifier settings"| node_settings
node_tampering_classifier -.->|"loads model"| node_tampering_model

click node_app "https://github.com/rudransh-12/digimaap_seal_validation/blob/main/backend/app/main.py"
click node_quality_endpoint "https://github.com/rudransh-12/digimaap_seal_validation/blob/main/backend/app/api/quality.py"
click node_similarity_endpoint "https://github.com/rudransh-12/digimaap_seal_validation/blob/main/backend/app/api/similarity.py"
click node_schemas "https://github.com/rudransh-12/digimaap_seal_validation/blob/main/backend/app/models/schemas.py"
click node_image_utils "https://github.com/rudransh-12/digimaap_seal_validation/blob/main/backend/app/utils/image_utils.py"
click node_quality_service "https://github.com/rudransh-12/digimaap_seal_validation/blob/main/backend/app/services/image_quality.py"
click node_blur_classifier "https://github.com/rudransh-12/digimaap_seal_validation/blob/main/backend/app/services/blur_classifier.py"
click node_blur_model "https://github.com/rudransh-12/digimaap_seal_validation/blob/main/backend/model/blur_classifier.pkl"
click node_settings "https://github.com/rudransh-12/digimaap_seal_validation/blob/main/backend/app/config/settings.py"
click node_similarity_engine "https://github.com/rudransh-12/digimaap_seal_validation/blob/main/backend/app/services/similarity_engine.py"
click node_preprocessing "https://github.com/rudransh-12/digimaap_seal_validation/blob/main/backend/app/services/preprocessing.py"
click node_feature_extraction "https://github.com/rudransh-12/digimaap_seal_validation/blob/main/backend/app/services/feature_extraction.py"
click node_aggregation "https://github.com/rudransh-12/digimaap_seal_validation/blob/main/backend/app/services/reference_aggregation.py"
click node_tampering_classifier "https://github.com/rudransh-12/digimaap_seal_validation/blob/main/backend/app/services/tampering_classifier.py"
click node_tampering_model "https://github.com/rudransh-12/digimaap_seal_validation/tree/main/backend/model"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_quality_endpoint,node_similarity_endpoint,node_schemas toneBlue
class node_quality_service,node_blur_classifier,node_blur_model toneAmber
class node_similarity_engine,node_preprocessing,node_feature_extraction,node_aggregation,node_tampering_classifier,node_tampering_model toneMint
class node_image_utils,node_settings toneRose
class node_client toneIndigo
```

## Components

### API layer

- [FastAPI application](https://github.com/rudransh-12/digimaap_seal_validation/blob/main/backend/app/main.py): `backend/app/main.py`
- [Quality endpoint](https://github.com/rudransh-12/digimaap_seal_validation/blob/main/backend/app/api/quality.py): `backend/app/api/quality.py`
- [Similarity endpoint](https://github.com/rudransh-12/digimaap_seal_validation/blob/main/backend/app/api/similarity.py): `backend/app/api/similarity.py`
- [Request and response schemas](https://github.com/rudransh-12/digimaap_seal_validation/blob/main/backend/app/models/schemas.py): `backend/app/models/schemas.py`

### Image quality

- [Quality metrics](https://github.com/rudransh-12/digimaap_seal_validation/blob/main/backend/app/services/image_quality.py): `backend/app/services/image_quality.py`
- [Blur assessment](https://github.com/rudransh-12/digimaap_seal_validation/blob/main/backend/app/services/blur_classifier.py): `backend/app/services/blur_classifier.py`
- [Blur model artifact](https://github.com/rudransh-12/digimaap_seal_validation/blob/main/backend/model/blur_classifier.pkl): `backend/model/blur_classifier.pkl`

### Similarity assessment

- [Comparison orchestration](https://github.com/rudransh-12/digimaap_seal_validation/blob/main/backend/app/services/similarity_engine.py): `backend/app/services/similarity_engine.py`
- [Image preprocessing](https://github.com/rudransh-12/digimaap_seal_validation/blob/main/backend/app/services/preprocessing.py): `backend/app/services/preprocessing.py`
- [Pairwise metrics](https://github.com/rudransh-12/digimaap_seal_validation/blob/main/backend/app/services/feature_extraction.py): `backend/app/services/feature_extraction.py`
- [Reference aggregation](https://github.com/rudransh-12/digimaap_seal_validation/blob/main/backend/app/services/reference_aggregation.py): `backend/app/services/reference_aggregation.py`
- [Risk classification](https://github.com/rudransh-12/digimaap_seal_validation/blob/main/backend/app/services/tampering_classifier.py): `backend/app/services/tampering_classifier.py`
- [Tampering model artifact](https://github.com/rudransh-12/digimaap_seal_validation/tree/main/backend/model): `backend/model`

### Analysis internals

- [Image decoding](https://github.com/rudransh-12/digimaap_seal_validation/blob/main/backend/app/utils/image_utils.py): `backend/app/utils/image_utils.py`
- [Thresholds and settings](https://github.com/rudransh-12/digimaap_seal_validation/blob/main/backend/app/config/settings.py): `backend/app/config/settings.py`

### Other components

- **Image submitter**

## Connections

- Image submitter → FastAPI application: sends requests
- FastAPI application → Quality endpoint: routes quality checks
- FastAPI application → Similarity endpoint: routes scans
- Quality endpoint → Image decoding: decodes image
- Quality endpoint → Quality metrics: checks quality
- Quality endpoint → Request and response schemas: returns typed response
- Similarity endpoint → Image decoding: decodes images
- Similarity endpoint → Quality metrics: checks current image
- Similarity endpoint → Comparison orchestration: compares references
- Similarity endpoint → Reference aggregation: aggregates metrics
- Similarity endpoint → Risk classification: classifies aggregate
- Similarity endpoint → Request and response schemas: returns typed response
- Quality metrics → Blur assessment: assesses blur
- Quality metrics → Image decoding: converts grayscale
- Quality metrics → Thresholds and settings: reads thresholds
- Blur assessment → Blur model artifact: loads model
- Comparison orchestration → Image preprocessing: preprocesses images
- Comparison orchestration → Pairwise metrics: computes metrics
- Image preprocessing → Thresholds and settings: reads parameters
- Pairwise metrics → Thresholds and settings: reads ORB settings
- Reference aggregation → Thresholds and settings: reads aggregation choice
- Risk classification → Thresholds and settings: reads classifier settings
- Risk classification → Tampering model artifact: loads model
