Bangla OCR Handwriting Data is a full-stack web application designed to crowdsource handwritten Bangla text for building large-scale OCR datasets. It provides a clean submission portal for users and a robust backend for data moderation, tracking, and export.
- https://bangla-ocr-data-web.vercel.app/ (frontend)
- https://hossainimamrony71.pythonanywhere.com/ (API Endpoint)
- Weighted random Bangla prompt selection
- Direct, secure client-side uploads to Cloudinary
- Real-time status updates during submission
- RESTful API using Django + DRF
- Admin-only moderation dashboard (via API for now)
- Verified submission export as
.zip
withCSV
labels - Decoupled architecture: Vanilla JS frontend + DRF backend
The backend powers secure APIs for serving prompts, logging submissions, moderating content, and exporting verified data.
- Purpose: Serve a Bangla text prompt using weighted random logic (prompts with fewer submissions appear more)
- Permissions: Public
- Response:
{
"id": 1,
"text": "বাংলা আমার মাতৃভাষা।"
}
- Purpose: Provide a secure signature for client-side Cloudinary uploads
- Permissions: Public
- Response:
{
"api_key": "...",
"cloud_name": "...",
"timestamp": "...",
"signature": "..."
}
- Purpose: Log metadata after successful Cloudinary upload
- Permissions: Public
- Body:
{
"prompt": 1,
"image_url": "https://res.cloudinary.com/.../image.jpg",
"public_id": "bangla_ocr_handwriting_data/..."
}
- Purpose: View unreviewed submissions for moderation
- Permissions: Admin only
- Returns: List of pending entries with image URLs and prompts
- Purpose: Mark a submission as "verified" or "rejected", with optional notes
- Permissions: Admin only
- Example Update:
{
"status": "verified",
"notes": "Clear handwriting."
}
-
Purpose: Download a
.zip
with:- Folder of verified images
labels.csv
(image → prompt mapping)
-
Permissions: Admin only
The frontend offers a minimal and intuitive experience for users contributing handwritten Bangla samples.
-
Fetch Prompt
- Calls
/api/prompt/
and displays it using typewriter animation.
- Calls
-
Select & Preview Image
- Users upload an image which is locally previewed on-screen.
-
Upload & Submit
- Fetch secure Cloudinary signature from
/api/cloudinary-config/
- Upload image directly to Cloudinary
- Send metadata to
/api/submissions/
for logging
- Fetch secure Cloudinary signature from
-
Live Feedback
- Users see real-time status updates:
CONNECTING... → TRANSMITTING... → DONE ✅
- Users see real-time status updates:
Currently, moderation is done via API tools (like Postman). A future admin frontend is planned with:
- 🔐 Login-authenticated admin interface
- 📋 View & moderate pending submissions
- ✅ Approve/Reject entries with image preview
- 📥 One-click dataset export (.zip + labels.csv)
- 📊 Submission analytics dashboard
- 🛠 Built with React or Vue for responsiveness
verified_dataset.zip
├── images/
│ ├── user1_image.jpg
│ └── user2_image.jpg
└── labels.csv
# labels.csv format:
filename,text
user1_image.jpg,বাংলা আমার মাতৃভাষা।
user2_image.jpg,আমার সোনার বাংলা...
Layer | Technology |
---|---|
Backend | Django + DRF |
Frontend | HTML, CSS, JS |
Cloud | Cloudinary (uploads) |
Auth | Django Admin |
Dataset | .zip + CSV export |
Pull requests are welcome! If you plan on introducing breaking changes, please open an issue first to discuss the proposal.
MIT License © RONY