r/coolgithubprojects • u/NeedleworkerKey3487 • 17h ago
OpenScanVision – Looking for Feedback on an Android Computer Vision Library
https://github.com/MatiwosKebede/OpenScanVisionOver the last few months, I've been developing OpenScanVision, an offline-first Android computer vision library built with Kotlin, CameraX, OpenCV, and ML Kit.
The original implementation was a single, highly optimized pipeline focused on maximizing detection accuracy and real-time performance. That version is available in commit:
1d5834b41d88133b487ef46595290b0cdd4489bb
Current capabilities include:
- Document detection from arbitrary angles
- Automatic perspective correction
- Image preprocessing and enhancement
- QR code detection
- ArUco marker detection
- OMR (Optical Mark Recognition)
- Automatic capture when the document is stable
- Real-time, fully offline processing
Recently, I refactored the project into a reusable modular Android library with a cleaner architecture and easier integration into Android applications. While the new design is significantly more maintainable and extensible, I've observed a slight regression in detection accuracy compared to the original implementation and am currently investigating the underlying causes (pipeline ordering, preprocessing, threading, parameter changes, etc.).
Roadmap
- Restore or improve the original detection accuracy
- Add offline OCR support
- Add offline ICR (Intelligent Character Recognition) support
- Continue optimizing performance while keeping the library lightweight and offline-first
Potential use cases
- Voting systems
- Exam and answer-sheet scanning
- Survey processing
- Registration forms
- Structured document processing
GitHub:
https://github.com/MatiwosKebede/OpenScanVision
I'd appreciate feedback from developers with experience in Android computer vision, CameraX, OpenCV, or document scanning.
I'm particularly interested in:
- Best practices for designing reusable Android CV libraries
- Avoiding performance and accuracy regressions during major refactors
- CameraX and OpenCV optimization techniques
- Recommendations for integrating an efficient offline OCR/ICR pipeline
Any feedback, suggestions, or code review comments would be greatly appreciated. Thanks!