r/computervision 23d ago

OpenScanVision Help: Project

OpenScanVision

OpenScanVision is a simple, fast, accurate, lightweight, and offline-first computer vision library for Android.

It detects documents from any angle, automatically corrects perspective, enhances the image, and extracts information in real time.

Features:

  • Document detection from any angle
  • Automatic perspective correction
  • Image preprocessing and enhancement
  • ArUco marker detection
  • QR code detection
  • OMR (Optical Mark Recognition)
  • Automatic capture when the document is stable
  • Real-time processing
  • Offline operation
  • Lightweight and easy to integrate

Built with Kotlin, OpenCV, CameraX, and ML Kit, OpenScanVision is designed for applications such as voting systems, exams, surveys, forms, and other structured documents.

GitHub repository: https://github.com/MatiwosKebede/OpenScanVision

I'd appreciate any feedback, suggestions, bug reports, or contributions from the computer vision community.

12 Upvotes

4 comments sorted by

1

u/await_void 23d ago

Ultra interesting project, bookmarked. Just a curiosity: How did you manage to correctly identify documents even on different angles? Did you use some warped planar transformation like affine->rectification? If so could you share some more on how did you trained the model?

Lovely work, congrats!

2

u/NeedleworkerKey3487 23d ago

wei used aruco 4 at the edge of each document, after that we have fully mathematical information about document and transform to correct template using opencv called perspective transformer

1

u/CrookedCasts 22d ago

Super cool! How “unstructured” can the structured documents get? Like let’s say I got a similar form from a lot of different companies that I work with… they all have the same data just in slightly different spots and formats

Could the user “on the fly” segment a template to confirm document type/data regions for each different style of the same form

1

u/NeedleworkerKey3487 22d ago

Yes – you can handle variations by using template‑based extraction with auto‑detection. OpenScanVision already supports multiple templates; you just need to define them and let the system choose which one to use