# subasad/handwritten-devanagari-recognition-system architecture

> Architecture diagram of the GitHub repository subasad/handwritten-devanagari-recognition-system, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/subasad/handwritten-devanagari-recognition-system
- Repository: https://github.com/subasad/handwritten-devanagari-recognition-system

## Overview

This repository contains experimental Devanagari image-processing code, with a primary workflow that segments an input image into word crops and recognizes their characters. A separate prediction script performs semantic image segmentation using a U-Net or FCN model and CRF post-processing; the sampled code does not connect that branch to the primary workflow. The graph focuses on the Minor_CMD implementation; similarly named files under “Devanagari in jupyter” are parallel copies. Relationships are limited to those shown in sampled source.

Main entry points: [`Minor_CMD/Minor/predict.py`](https://github.com/subasad/handwritten-devanagari-recognition-system/blob/main/Minor_CMD/Minor/predict.py) (Mask prediction), [`Minor_CMD/main.py`](https://github.com/subasad/handwritten-devanagari-recognition-system/blob/main/Minor_CMD/main.py) (Recognition runner), [`Minor_CMD/Minor/utils.py`](https://github.com/subasad/handwritten-devanagari-recognition-system/blob/main/Minor_CMD/Minor/utils.py) (Masks and CRF), [`Minor_CMD/copy_of_charactersegementation.py`](https://github.com/subasad/handwritten-devanagari-recognition-system/blob/main/Minor_CMD/copy_of_charactersegementation.py) (Character recognizer)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Recognition workflow"]
  node_main["Recognition runner<br/>[main.py]"]
  node_lineword["Line and word crops"]
  node_wordfiles["Word crop files"]
end

subgraph group_character["Character recognition"]
  node_recognizer["Character recognizer"]
  node_charseg["Character segmentation"]
  node_recognized["Devanagari text"]
end

subgraph group_segmentation["Semantic segmentation"]
  node_predict["Mask prediction<br/>[predict.py]"]
  node_models["U-Net and FCN<br/>[models.py]"]
  node_weights["Segmentation weights"]
  node_mask["Output mask"]
end

subgraph group_support["Segmentation support"]
  node_config["Model configuration<br/>[config.py]"]
  node_utils["Masks and CRF<br/>[utils.py]"]
end

node_user(("Image operator"))

node_user -.->|"runs on image"| node_main
node_main -->|"calls segmentation"| node_lineword
node_lineword -->|"writes crops"| node_wordfiles
node_main -->|"reads crops"| node_wordfiles
node_main -->|"calls recognition"| node_recognizer
node_recognizer -->|"inherits segmentation"| node_charseg
node_charseg -->|"calls recognition method"| node_recognizer
node_main -->|"prints strings"| node_recognized
node_predict -->|"uses dice"| node_models
node_predict -->|"reads settings"| node_config
node_predict -->|"calls CRF"| node_utils
node_models -->|"reads settings"| node_config
node_utils -->|"reads settings"| node_config
node_predict -->|"loads weights"| node_weights
node_predict -->|"displays mask"| node_mask
node_utils -->|"builds CRF mask"| node_mask

click node_main "https://github.com/subasad/handwritten-devanagari-recognition-system/blob/main/Minor_CMD/main.py"
click node_lineword "https://github.com/subasad/handwritten-devanagari-recognition-system/blob/main/Minor_CMD/line_word_segmentation.py"
click node_wordfiles "https://github.com/subasad/handwritten-devanagari-recognition-system/tree/main/Minor_CMD/i"
click node_recognizer "https://github.com/subasad/handwritten-devanagari-recognition-system/blob/main/Minor_CMD/copy_of_charactersegementation.py"
click node_charseg "https://github.com/subasad/handwritten-devanagari-recognition-system/blob/main/Minor_CMD/SegmentationCharacter.py"
click node_predict "https://github.com/subasad/handwritten-devanagari-recognition-system/blob/main/Minor_CMD/Minor/predict.py"
click node_models "https://github.com/subasad/handwritten-devanagari-recognition-system/blob/main/Minor_CMD/Minor/models.py"
click node_config "https://github.com/subasad/handwritten-devanagari-recognition-system/blob/main/Minor_CMD/Minor/config.py"
click node_utils "https://github.com/subasad/handwritten-devanagari-recognition-system/blob/main/Minor_CMD/Minor/utils.py"
click node_weights "https://github.com/subasad/handwritten-devanagari-recognition-system/tree/main/Minor_CMD/Minor/models"

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_main,node_lineword,node_wordfiles toneBlue
class node_recognizer,node_charseg,node_recognized toneAmber
class node_predict,node_models,node_weights,node_mask toneMint
class node_config,node_utils toneRose
class node_user toneIndigo
```

## Components

### Recognition workflow

- [Recognition runner](https://github.com/subasad/handwritten-devanagari-recognition-system/blob/main/Minor_CMD/main.py): `Minor_CMD/main.py`
- [Line and word crops](https://github.com/subasad/handwritten-devanagari-recognition-system/blob/main/Minor_CMD/line_word_segmentation.py): `Minor_CMD/line_word_segmentation.py`
- [Word crop files](https://github.com/subasad/handwritten-devanagari-recognition-system/tree/main/Minor_CMD/i): `Minor_CMD/i`

### Character recognition

- [Character recognizer](https://github.com/subasad/handwritten-devanagari-recognition-system/blob/main/Minor_CMD/copy_of_charactersegementation.py): `Minor_CMD/copy_of_charactersegementation.py`
- [Character segmentation](https://github.com/subasad/handwritten-devanagari-recognition-system/blob/main/Minor_CMD/SegmentationCharacter.py): `Minor_CMD/SegmentationCharacter.py`
- **Devanagari text**

### Semantic segmentation

- [Mask prediction](https://github.com/subasad/handwritten-devanagari-recognition-system/blob/main/Minor_CMD/Minor/predict.py): `Minor_CMD/Minor/predict.py`
- [U-Net and FCN](https://github.com/subasad/handwritten-devanagari-recognition-system/blob/main/Minor_CMD/Minor/models.py): `Minor_CMD/Minor/models.py`
- [Segmentation weights](https://github.com/subasad/handwritten-devanagari-recognition-system/tree/main/Minor_CMD/Minor/models): `Minor_CMD/Minor/models`
- **Output mask**

### Segmentation support

- [Model configuration](https://github.com/subasad/handwritten-devanagari-recognition-system/blob/main/Minor_CMD/Minor/config.py): `Minor_CMD/Minor/config.py`
- [Masks and CRF](https://github.com/subasad/handwritten-devanagari-recognition-system/blob/main/Minor_CMD/Minor/utils.py): `Minor_CMD/Minor/utils.py`

### Other components

- **Image operator**

## Connections

- Image operator → Recognition runner: runs on image
- Recognition runner → Line and word crops: calls segmentation (evidence: `Minor_CMD/main.py`)
- Line and word crops → Word crop files: writes crops (evidence: `Minor_CMD/line_word_segmentation.py`)
- Recognition runner → Word crop files: reads crops (evidence: `Minor_CMD/main.py`)
- Recognition runner → Character recognizer: calls recognition (evidence: `Minor_CMD/main.py`)
- Character recognizer → Character segmentation: inherits segmentation (evidence: `Minor_CMD/copy_of_charactersegementation.py`)
- Character segmentation → Character recognizer: calls recognition method (evidence: `Minor_CMD/SegmentationCharacter.py`)
- Recognition runner → Devanagari text: prints strings (evidence: `Minor_CMD/main.py`)
- Mask prediction → U-Net and FCN: uses dice (evidence: `Minor_CMD/Minor/predict.py`)
- Mask prediction → Model configuration: reads settings (evidence: `Minor_CMD/Minor/predict.py`)
- Mask prediction → Masks and CRF: calls CRF (evidence: `Minor_CMD/Minor/predict.py`)
- U-Net and FCN → Model configuration: reads settings (evidence: `Minor_CMD/Minor/models.py`)
- Masks and CRF → Model configuration: reads settings (evidence: `Minor_CMD/Minor/utils.py`)
- Mask prediction → Segmentation weights: loads weights (evidence: `Minor_CMD/Minor/predict.py`)
- Mask prediction → Output mask: displays mask (evidence: `Minor_CMD/Minor/predict.py`)
- Masks and CRF → Output mask: builds CRF mask
