How anisharyal09/lipi-snap works
Lipi Snap is a Ranjana-script OCR application: users provide a word image and receive a Devanagari transcription, with optional IAST transliteration and English translation. The main runtime is the Streamlit word-level CRNN/CTC app; separate tools prepare synthetic training examples, and training/evaluation scripts support the model lifecycle. The tree and excerpts also document an older character-level CharCNN branch. Some app internals and dataset wiring are described only in the README, so uncertain implementation links are omitted.
Main entry points: app_word_crnn.py Streamlit app · generate_word_images.py Synthetic image generation · train_crnn.py CRNN training · model Model checkpoint
Components 25
Word Recognition
- Streamlit app
app_word_crnn.py - Image preprocessing
app_word_crnn.py - Devanagari text
app_word_crnn.py - IAST transliteration
app_word_crnn.py - English translation
app_word_crnn.py - OCR results and metrics
app_word_crnn.py
CRNN Model
- CRNN inference
app_word_crnn.py - CTC decoding
app_word_crnn.py - CRNN training
model/train_crnn.py - Model checkpoint
model
Data and Evaluation
- Model evaluation
model/evaluation_script.py - Word lists
data/nepali_words.txt - Unseen test words
data/new_test_words.txt - Word cleaning
tools/clean_split_words.py - Clean test words
data/new_test_words_clean.txt - Synthetic image generation
tools/generate_word_images.py - Ranjana font
font/NithyaRanjanaDU-Regular.otf - Training and test images
data
Character Archive
- Character-level app
CharCNN/app_char_cnn.py - CharCNN inference
CharCNN/model/inference.py - CharCNN training
CharCNN/model/train.py - Character mappings
CharCNN/mapping
Other components
- Image user
- Indic transliteration
- Google Translate
Connections 30
- Image user → Streamlit app: uploads image
- Streamlit app → Image preprocessing: preprocesses
- Streamlit app → CRNN inference: predicts word
- Image preprocessing → CRNN inference: provides image
- CRNN inference → CTC decoding: emits frame scores
- CTC decoding → Devanagari text: decodes text
- Streamlit app → IAST transliteration: requests transliteration
- IAST transliteration → Indic transliteration: transliterates with
- Devanagari text → English translation: supplies text
- Streamlit app → English translation: requests translation
- English translation → Google Translate: translates via
- Streamlit app → OCR results and metrics: renders output
- Devanagari text → OCR results and metrics: provides transcription
- IAST transliteration → OCR results and metrics: provides transliteration
- English translation → OCR results and metrics: provides translation
- CRNN training → Training and test images: reads samples
- CRNN training → Model checkpoint: saves weights
- Model checkpoint → Streamlit app: loads weights
- Model evaluation → Training and test images: reads test samples
- Model evaluation → Model checkpoint: loads weights
- Unseen test words → Word cleaning: cleans and splits
- Word cleaning → Clean test words: writes words
- Clean test words → Synthetic image generation: provides labels
- Word lists → CRNN training: supplies word labels
- Synthetic image generation → Ranjana font: renders with
- Synthetic image generation → Training and test images: writes image dataset
- Image user → Character-level app: uploads character image
- Character-level app → CharCNN inference: classifies character
- CharCNN inference → Character mappings: uses mappings
- CharCNN training → Character mappings: uses class labels