{"id":18463712,"url":"https://github.com/alvii147/banglanotepad","last_synced_at":"2026-04-11T02:02:50.692Z","repository":{"id":134303438,"uuid":"289138748","full_name":"alvii147/BanglaNotepad","owner":"alvii147","description":"Bengali character and numeral recognition project","archived":false,"fork":false,"pushed_at":"2020-10-21T00:07:59.000Z","size":33439,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-16T16:57:57.464Z","etag":null,"topics":["css","flask","javascript","keras","pillow","pyqt5","python","tensorflow"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alvii147.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-08-21T00:23:35.000Z","updated_at":"2020-11-10T02:18:46.000Z","dependencies_parsed_at":null,"dependency_job_id":"edc24c2f-0f46-4bc9-aab0-4facba1bce20","html_url":"https://github.com/alvii147/BanglaNotepad","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alvii147%2FBanglaNotepad","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alvii147%2FBanglaNotepad/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alvii147%2FBanglaNotepad/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alvii147%2FBanglaNotepad/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alvii147","download_url":"https://codeload.github.com/alvii147/BanglaNotepad/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251320073,"owners_count":21570508,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["css","flask","javascript","keras","pillow","pyqt5","python","tensorflow"],"created_at":"2024-11-06T09:07:43.985Z","updated_at":"2026-04-11T02:02:50.624Z","avatar_url":"https://github.com/alvii147.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BanglaNotepad: a smart notepad that incorporates AI to recognize Bengali handwriting\nThis is a project currently under construction.\n## Character Recognition\nCurrently this is the only aspect of the project that's initiated. It can identify (with around 90-95%-ish accuracy) individual Bengali alphabets and numerals (and special hybrid alphabets with decreased accuracy).\n### Training dataset\nFor numerals, I used the [NumtaDB: Bengali Handwritten Digits](https://www.kaggle.com/BengaliAI/numta) dataset. For alphabets (and special hybrid alphabets), I used the [Ekush: Bangla Handwritten Characters Dataset](https://www.kaggle.com/shahariar/ekush) dataset.  \nUnfortunately not all the special hybrid characters were covered in those datasets, and even with the ones covered, the trained model wasn't as accurate as anticipated, simply because hybrid characters tend to look like both of their parent characters. Hybrid character recognition may require some sort of stacked model.  \nThe data is processed before training. Sigmoid functions are used with appropriate parameters to reduce image noise and highlight strokes.  \nNote: dataset is not included in this repository (thanks for blocking my 100MB+ pushes, Github :expressionless:)\n### Model\nThe model has (so far) been trained with Keras under Tensorflow, using a 2-hidden-layer neural network, Adam optimizer and sparse categorical crossentropy for the loss function (all this may change in the future).\n```python\nmodel = tf.keras.models.Sequential()\nmodel.add(tf.keras.layers.Flatten())\nmodel.add(tf.keras.layers.Dense(784, activation = tf.nn.relu))\nmodel.add(tf.keras.layers.Dense(392, activation = tf.nn.relu))\nmodel.add(tf.keras.layers.Dense(196, activation = tf.nn.relu))\nmodel.add(tf.keras.layers.Dense(50, activation = tf.nn.softmax))\n\nmodel.compile(optimizer = \"adam\", loss = \"sparse_categorical_crossentropy\", metrics = [\"acc\"])\nmodel.fit(x_train, y_train, epochs = 8, batch_size = 128)\n\nmodel.save(\"alphabets.model\", save_format = \"h5\")\n```\n### Demo Website\nThe results of the model can be tested [here](http://banglanotepad.herokuapp.com/).\n![Snapshot](BanglaNotepadWeb/NotepadSnapshot.gif)  \nLetters in green have been included in trained model, letters in red have not.\n## Next Steps\nIn order to program accurate predictions, I believe using stacked models is essentials. Next step is to read multiple letters and words from images and process the different letters and words individually. This can be done using stroke detection tools, although may be challenging. Finally I also have plans of incorporating natural language processing for Bengali words and linguistics (but that's way too far ahead for me to think about right now. :stuck_out_tongue:","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falvii147%2Fbanglanotepad","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falvii147%2Fbanglanotepad","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falvii147%2Fbanglanotepad/lists"}