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.
# 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
### Acknowledgements
* Dataset: Custom handwritten Amharic letters.
* Frameworks: TensorFlow, Streamlit.
## 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
github.com
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 th …