https://github.com/keneandita/fidel-vision
A Deep Learning + Streamlit web app for recognizing handwritten Amharic fidel characters (34 root groups × 7 orders). It uses a CNN model built with TensorFlow/Keras, trained on a custom dataset of handwritten Amharic letters, and serves predictions through a Streamlit interface.
https://github.com/keneandita/fidel-vision
amharic-letters deep-learning docker keras machine-learning streamlit
Last synced: 2 months ago
JSON representation
A Deep Learning + Streamlit web app for recognizing handwritten Amharic fidel characters (34 root groups × 7 orders). It uses a CNN model built with TensorFlow/Keras, trained on a custom dataset of handwritten Amharic letters, and serves predictions through a Streamlit interface.
- Host: GitHub
- URL: https://github.com/keneandita/fidel-vision
- Owner: KeneanDita
- License: mit
- Created: 2025-08-26T16:56:31.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2026-03-06T11:48:54.000Z (4 months ago)
- Last Synced: 2026-03-06T15:46:50.065Z (4 months ago)
- Topics: amharic-letters, deep-learning, docker, keras, machine-learning, streamlit
- Language: Jupyter Notebook
- Homepage: https://fidel-vision-o7g3mngme3hazfamlacsxn.streamlit.app/
- Size: 14.2 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Amharic Handwritten Character Recognition
A **Deep Learning + Streamlit web app** for recognizing handwritten **Amharic fidel characters** (34 root groups × 7 orders).
It uses a **CNN model built with TensorFlow/Keras**, trained on a custom dataset of handwritten Amharic letters, and serves predictions through a Streamlit interface.
Author : [Kenean Dita](https://github.com/KeneanDita)
### Acknowledgements
* Dataset: [Custom handwritten Amharic letters.](https://www.kaggle.com/datasets/shahabdulmazid/handwritten)
* Frameworks: [TensorFlow](https://www.tensorflow.org/), [Streamlit](https://streamlit.io/).
## Sample outputs
- Using the canvas inside the webapp

- By uploading an image to the webapp

## Features
* **CNN model** trained on 32×32 grayscale images of handwritten fidel.
* Supports **34 × 7 = 238 Amharic characters**.
* **Streamlit web app** for interactive testing.
* Dataset images stored in a single `data/` folder.
* **Label mapping** from dataset class names → real Amharic letters.
## Project Structure
```PS
.
├── data/ # Dataset (images of letters)
├── Models/
│ ├── amharic_cnn.h5 # Trained CNN model
│ ├── class_names.npy # Encoded class labels
├── UI.py # Streamlit web app
├── training_notebook.ipynb # Training notebook
├── requirements.txt # Python dependencies
├── License
├── Dockerfile # For containerizaiton purposes
├── README.md # Project documentation
```
## Usage
### Environment Setup
Clone the repo:
```bash
git clone https://github.com/KeneanDita/Fidel-Vision
cd .\fidel-vision
```
Create a virtual envionment and install dependencies
```bash
python -m venv env
.\env\source\activate # for windows
source env\source\activate # for linux/mac
pip install -r requirements.txt
```
### Train the model (optional)
If you want to retrain:
```bash
jupyter notebook train.ipynb
```
### Run the Streamlit app
```bash
streamlit run .\UI.py
```
* Upload a handwritten Amharic character image or draw using the second tab as an option.
* The app preprocesses it → feeds it into the CNN → predicts the fidel.
## Model
* Input size: **32×32 grayscale** but accepts 28x28 and 63x64 too
* Architecture:
* Conv2D(32) → MaxPool → Conv2D(64) → MaxPool → Conv2D(128)
* Flatten → Dense(256, relu) → Dense(238, softmax)
* Optimizer: **Adam**
## Amharic Fidel Mapping
I used the **Amharic syllabary table (34 roots × 7 orders)** to map model outputs into their corresponding fidel characters, e.g.:
```P
ሀ ሁ ሂ ሃ ሄ ህ ሆ
ለ ሉ ሊ ላ ሌ ል ሎ
መ ሙ ሚ ማ ሜ ም ሞ
...
ፐ ፑ ፒ ፓ ፔ ፕ ፖ
```