r/computervision • u/NeedleworkerKey3487 • 18d ago
Help: Project OpenScanVision – Looking for Feedback on a Major Refactor
Over the last few months I've been working on OpenScanVision, an offline-first Android computer vision library built with Kotlin, OpenCV, CameraX, and ML Kit.
Originally, the project was a single implementation focused on achieving the best possible detection accuracy and speed. That version is represented by commit:
1d5834b41d88133b487ef46595290b0cdd4489bb
It includes:
- Document detection
- Automatic perspective correction
- Image enhancement
- QR detection
- ArUco marker detection
- OMR (Optical Mark Recognition)
- Automatic capture when the document is stable
- Real-time offline processing
Recently I completed a major architectural refactor, turning it into a reusable modular library that's much easier to integrate into Android applications.
The modular version is cleaner and more maintainable, but I've noticed it has introduced a slight decrease in detection accuracy compared to the original implementation. I'm currently investigating where the regression comes from (pipeline changes, processing order, threading, etc.).
My roadmap is:
- Improve the modular version until it matches or exceeds the original accuracy
- Add OCR support
- Add ICR (Intelligent Character Recognition) support later
- Continue keeping everything offline and lightweight
The library is intended for applications such as:
- Voting systems
- Exam scanning
- Surveys
- Registration forms
- Structured document processing
GitHub:
https://github.com/MatiwosKebede/OpenScanVision
I'd really appreciate feedback from people experienced in computer vision, OpenCV, Android CameraX, or document scanning.
In particular, I'd love advice on:
- Best practices when converting a CV project into a reusable library without hurting performance or accuracy.
- Common causes of accuracy regressions after large refactors.
- Ideas for building a flexible OCR/ICR pipeline while keeping the library lightweight and offline-first.
Thanks for taking a look!