{"id":18995879,"url":"https://github.com/mars885/doc-skanner","last_synced_at":"2025-04-06T02:08:04.434Z","repository":{"id":37975443,"uuid":"311384511","full_name":"mars885/doc-skanner","owner":"mars885","description":"An Android application that makes it possible to automatically scan and digitize documents from photos.","archived":false,"fork":false,"pushed_at":"2025-02-20T20:01:43.000Z","size":148307,"stargazers_count":115,"open_issues_count":4,"forks_count":17,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-30T01:11:23.130Z","etag":null,"topics":["android","android-application","computer-vision","doc-scanner","document-scanner","opencv"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mars885.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-09T15:37:29.000Z","updated_at":"2025-03-17T03:51:28.000Z","dependencies_parsed_at":"2025-03-03T07:10:34.207Z","dependency_job_id":null,"html_url":"https://github.com/mars885/doc-skanner","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mars885%2Fdoc-skanner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mars885%2Fdoc-skanner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mars885%2Fdoc-skanner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mars885%2Fdoc-skanner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mars885","download_url":"https://codeload.github.com/mars885/doc-skanner/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247423513,"owners_count":20936626,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","android-application","computer-vision","doc-scanner","document-scanner","opencv"],"created_at":"2024-11-08T17:33:11.294Z","updated_at":"2025-04-06T02:08:04.411Z","avatar_url":"https://github.com/mars885.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DocSkanner\nAn Android application that makes it possible to automatically scan and digitize documents from photos.\n\n![Min API](https://img.shields.io/badge/API-23%2B-orange.svg?style=flat)\n[![Platform](https://img.shields.io/badge/platform-Android-green.svg)](http://developer.android.com/index.html)\n[![Build](https://github.com/mars885/doc-skanner/workflows/Build/badge.svg?branch=master)](https://github.com/mars885/doc-skanner/actions)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n\n## Screenshots\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"/media/screenshot1.png\" width=\"24%\"/\u003e\n\u003cimg src=\"/media/screenshot2.png\" width=\"24%\"/\u003e\n\u003cimg src=\"/media/screenshot3.png\" width=\"24%\"/\u003e\n\u003cimg src=\"/media/screenshot4.png\" width=\"24%\"/\u003e\n\u003c/p\u003e\n\n## Tech Stack \u0026 Open-Source Libraries\n* [Kotlin](https://kotlinlang.org) language\n* [Coroutines](https://kotlinlang.org/docs/reference/coroutines-overview.html) and [Flow](https://kotlinlang.org/docs/reference/coroutines/flow.html#asynchronous-flow) for asynchronous programming\n* Architecture:\n  * MVVM and sprinkles of MVI (View \u003c--\u003e ViewModel \u003c--\u003e UseCase)\n  * Cleanish architecture project structure ([domain](https://github.com/mars885/doc-skanner/tree/master/domain/src/main/java/com/paulrybitskyi/docskanner/domain), [data](https://github.com/mars885/doc-skanner/tree/master/data/src/main/java/com/paulrybitskyi/docskanner/data) and [presentation](https://github.com/mars885/doc-skanner/tree/master/app/src/main/java/com/paulrybitskyi/docskanner) modules)\n* [JetPack](https://developer.android.com/jetpack) libraries:\n  * [Navigation](https://developer.android.com/jetpack/androidx/releases/navigation)\n  * [Fragment](https://developer.android.com/jetpack/androidx/releases/fragment)\n  * [Lifecycle](https://developer.android.com/jetpack/androidx/releases/lifecycle)\n  * [Dagger Hilt](https://developer.android.com/jetpack/androidx/releases/hilt) with [ViewModel integration](https://developer.android.com/training/dependency-injection/hilt-jetpack#viewmodels)\n* [OpenCV](https://opencv.org) for image processing\n* [PdfDocument](https://developer.android.com/reference/android/graphics/pdf/PdfDocument) for generating PDF documents\n* [AndroidPdfViewer](https://github.com/barteksc/AndroidPdfViewer) for displaying PDF documents\n* [Picasso](https://github.com/square/picasso) for image loading and caching\n* [Material Components](https://github.com/material-components/material-components-android) for common UI components\n* [Material Dialogs](https://github.com/afollestad/material-dialogs) for displaying dialogs\n* [Dexter](https://github.com/Karumi/Dexter) for requesting runtime permissions\n* [Kotlin Gradle DSL](https://docs.gradle.org/current/userguide/kotlin_dsl.html) for build scripts\n* [buildSrc](https://docs.gradle.org/current/userguide/organizing_gradle_projects.html#sec:build_sources) module for dependency management\n* [Gradle Versions Plugin](https://github.com/ben-manes/gradle-versions-plugin) for updating dependencies\n\nFor more information about used dependencies, see [this](https://github.com/mars885/doc-skanner/blob/master/buildSrc/src/main/java/Dependencies.kt) file.\n\n## Download\nThis project contains OpenCV native libraries for every mobile architecture, which means that the APK is split into multiple ones to prevent a one big [fat APK](https://en.wikipedia.org/wiki/Fat_binary). You can install the application in one of two ways:\n1. Go to the [releases](https://github.com/mars885/doc-skanner/releases) and download the APK for your phone's architecture. If you don't know it, [here](https://handstandsam.com/2016/01/28/determining-supported-processor-types-abis-for-an-android-device/) is a nice article describing how to determine it. If don't have time to read the article, then `arm64-v8a` should be a safe bet.\n2. Clone the project and install it using Android Studio.\n\n## Resources\n1. [Canny Edge Detection](https://docs.opencv.org/master/da/d22/tutorial_py_canny.html). This tutorial explains the Canny edge detection algorithm, which plays a big role in identifying a document in the photo.\n2. [Fundementals of Image Contours](https://evergreenllc2020.medium.com/fundamentals-of-image-contours-3598a9bcc595). This article explains image countours, what they are, and why they are useful for image processing.\n3. [Contour Features](https://docs.opencv.org/master/dd/d49/tutorial_py_contour_features.html). This tutorial explains the features of contours, like area, perimeter, centroid, bounding box.\n4. [Perspective Morphing](https://www.pyimagesearch.com/2014/08/25/4-point-opencv-getperspective-transform-example/). This article goes into the details of what perspective morphing is, where it is applicable, how it works, etc.\n5. [Application of Perspective Morphing](https://www.pyimagesearch.com/2014/05/05/building-pokedex-python-opencv-perspective-warping-step-5-6/). This article shows an example of applying perspective morhping to cut out and collect images of pokemons.\n\n## License\n\nDocSkanner is licensed under the [Apache 2.0 License](LICENSE).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmars885%2Fdoc-skanner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmars885%2Fdoc-skanner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmars885%2Fdoc-skanner/lists"}