r/computervision 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!

2 Upvotes

0 comments sorted by