This project Converts the given Text into a Realistic Handwriting, utilizing the Conditional Adversarial Network(GAN) model to generate the Handwriting.By training neural networks on large datasets of handwritten characters, the system generates new images that closely mimic natural handwriting styles for any input text.
Unlike traditional handwriting font converters, which simply use pre-designed fonts, our model learns handwriting patterns from real human samples, capturing variations such as stroke thickness, curvature, slant, spacing, and natural imperfections that give handwriting its authentic look. This results in outputs that are nearly indistinguishable from real human writing.
The model is trained using the EMNIST dataset, a large-scale extension of the classic MNIST dataset containing thousands of handwritten English characters and digits. During training, the generator learns to synthesize realistic character images while the discriminator learns to distinguish between real and generated handwriting. Through this adversarial process, the model progressively refines its ability to produce highly convincing handwritten text.
The primary motivation behind this project is to bridge the gap between digital convenience and human personalization. It can be applied in various domains, such as generating handwritten notes from typed input, creating digital calligraphy, producing personalized letters, and assisting individuals with motor impairments who wish to simulate natural handwriting.
| Package | Version |
|---|---|
| Python | 3.10.14 |
| [Pandas] | 1.5.3 |
| Numpy | 1.24.4 |
| Pillow | 9.5.0 |
| Matplotlib | 3.7.1 |
| Keras | 2.12 |
| TensorFlow | 2.11.0 |
| Streamlit | 1.27.2 |
Follow these steps to set up the project and generate Hand writing using this model :
git clone https://github.com/AAC-Open-Source-Pool/25AACR11pip install -r requirements.txtDataset Link: https://www.kaggle.com/datasets/crawford/emnist
1. Download the dataset from the given link, and place it appropriately in the dataset directory
2. Run project.py file
3. You can directly plot the characters.
1. Place the folder of trained Characters in Function.
2. Place the folder in which you want to save the output.
3. Run main.py
4. Find the Handwriting image in given directory.
Team Number:
25AACR11
Senior Mentor:Ekanth Sai
Junior Mentor:Hemanth Nag Bitra
Coordinator:Duniya
Team Member 1:Rushwith
Team Member 2:Sriharsha
This section provides instructions and details on how to submit a contribution via a pull request. It is important to follow these guidelines to make sure your pull request is accepted.
- Before choosing to propose changes to this project, it is advisable to go through the readme.md file of the project to get the philosophy and the motive that went behind this project. The pull request should align with the philosophy and the motive of the original poster of this project.
- To add your changes, make sure that the programming language in which you are proposing the changes should be the same as the programming language that has been used in the project. The versions of the programming language and the libraries(if any) used should also match with the original code.
- Write a documentation on the changes that you are proposing. The documentation should include the problems you have noticed in the code(if any), the changes you would like to propose, the reason for these changes, and sample test cases. Remember that the topics in the documentation are strictly not limited to the topics aforementioned, but are just an inclusion.
- Submit a pull request via Git etiquettes
- Customizable Handwriting Styles: Allow users to select or upload different handwriting styles or fonts for greater personalization and variety.
- Ink and Paper Customization: Enable options for changing ink color (blue, black, red, etc.), paper background, and margin/line settings for more realistic outputs.
- Export Options: Include features to export handwritten pages to PDF, DOCX, or images in high resolution for print-ready outputs.
- Better Ligatures and Natural Variations: Enhance the model to add more natural letter connections, irregularities, and variations in slant and spacing, making outputs look less uniform and more authentic.

