Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/Akylas/OSS-DocumentScanner

Android document document scanning app
https://github.com/Akylas/OSS-DocumentScanner

android document document-scan document-scan-to-text document-scanner document-scanner-app document-scanning image-processing opencv pdf scanner tesseract zxingcpp

Last synced: 6 days ago
JSON representation

Android document document scanning app

Lists

README

        

This repository is now the home of 2 apps




[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-v2.0%20adopted-ff69b4.svg)](COC.md)
[![GitHub repo stars](https://img.shields.io/github/stars/Akylas/OSS-DocumentScanner?style=flat)](https://github.com/Akylas/OSS-DocumentScanner/stargazers)
[![GitHub License](https://img.shields.io/github/license/Akylas/OSS-DocumentScanner)](https://github.com/Akylas/OSS-DocumentScanner/blob/master/COPYING)
[![GitHub All Releases](https://img.shields.io/github/downloads/Akylas/OSS-DocumentScanner/total.svg)](https://github.com/Akylas/OSS-DocumentScanner/releases/)
[![GitHub release](https://img.shields.io/github/v/release/Akylas/OSS-DocumentScanner?display_name=release&filter=*scanner*)](https://github.com/Akylas/OSS-DocumentScanner/releases)
[![GitHub release](https://img.shields.io/github/v/release/Akylas/OSS-DocumentScanner?display_name=release&filter=*wallet*)](https://github.com/Akylas/OSS-DocumentScanner/releases)

[![Small translation badge](https://hosted.weblate.org/widgets/oss-document-scanner/-/svg-badge.svg)](https://hosted.weblate.org/engage/oss-document-scanner/?utm_source=widget)

## Installation

| OSS Document Scanner | Oss CardWallet |
|:--------------------:|:--------------:|
|[Get it on IzzyOnDroid](https://apt.izzysoft.de/packages/com.akylas.documentscanner)|[Get it on IzzyOnDroid](https://apt.izzysoft.de/packages/com.akylas.cardwallet)|
|[Get it on PlayStore](https://play.google.com/store/apps/details?id=com.akylas.documentscanner)|[Get it on PlayStore](https://play.google.com/store/apps/details?id=com.akylas.cardwallet)|
|[Get it on GitHub](https://github.com/Akylas/OSS-DocumentScanner/releases)|[Get it on GitHub](https://github.com/Akylas/OSS-DocumentScanner/releases)|
|[Download on the App Store](https://apps.apple.com/us/app/oss-document-scanner/id6472918564)|[Download on the App Store](https://apps.apple.com/app/oss-cardwallet/id6504414362)|
|[Get it on Obtainium](https://apps.obtainium.imranr.dev/redirect?r=obtainium://app/%7B%22id%22%3A%22com.akylas.documentscanner%22%2C%22url%22%3A%22https%3A%2F%2Fgithub.com%2FAkylas%2FOSS-DocumentScanner%22%2C%22author%22%3A%22Akylas%22%2C%22name%22%3A%22OSS%20Document%20Scanner%22%2C%22preferredApkIndex%22%3A0%2C%22additionalSettings%22%3A%22%7B%5C%22includePrereleases%5C%22%3Afalse%2C%5C%22fallbackToOlderReleases%5C%22%3Atrue%2C%5C%22filterReleaseTitlesByRegEx%5C%22%3A%5C%22Document%20Scanner%5C%22%2C%5C%22filterReleaseNotesByRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22verifyLatestTag%5C%22%3Afalse%2C%5C%22dontSortReleasesList%5C%22%3Afalse%2C%5C%22useLatestAssetDateAsReleaseDate%5C%22%3Afalse%2C%5C%22trackOnly%5C%22%3Afalse%2C%5C%22versionExtractionRegEx%5C%22%3A%5C%22github%2F(.%2B)%5C%22%2C%5C%22matchGroupToUse%5C%22%3A%5C%221%5C%22%2C%5C%22versionDetection%5C%22%3Afalse%2C%5C%22releaseDateAsVersion%5C%22%3Afalse%2C%5C%22useVersionCodeAsOSVersion%5C%22%3Afalse%2C%5C%22apkFilterRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22invertAPKFilter%5C%22%3Afalse%2C%5C%22autoApkFilterByArch%5C%22%3Atrue%2C%5C%22appName%5C%22%3A%5C%22%5C%22%2C%5C%22shizukuPretendToBeGooglePlay%5C%22%3Afalse%2C%5C%22exemptFromBackgroundUpdates%5C%22%3Afalse%2C%5C%22skipUpdateNotifications%5C%22%3Afalse%2C%5C%22about%5C%22%3A%5C%22%5C%22%7D%22%2C%22overrideSource%22%3Anull%7D)|[Get it on Obtainium](https://apps.obtainium.imranr.dev/redirect?r=obtainium://app/%7B%22id%22%3A%22com.akylas.cardwallet%22%2C%22url%22%3A%22https%3A%2F%2Fgithub.com%2FAkylas%2FOSS-DocumentScanner%22%2C%22author%22%3A%22Akylas%22%2C%22name%22%3A%22OSS%20Card%20Wallet%22%2C%22preferredApkIndex%22%3A0%2C%22additionalSettings%22%3A%22%7B%5C%22includePrereleases%5C%22%3Afalse%2C%5C%22fallbackToOlderReleases%5C%22%3Atrue%2C%5C%22filterReleaseTitlesByRegEx%5C%22%3A%5C%22Card%20Wallet%5C%22%2C%5C%22filterReleaseNotesByRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22verifyLatestTag%5C%22%3Afalse%2C%5C%22dontSortReleasesList%5C%22%3Afalse%2C%5C%22useLatestAssetDateAsReleaseDate%5C%22%3Afalse%2C%5C%22trackOnly%5C%22%3Afalse%2C%5C%22versionExtractionRegEx%5C%22%3A%5C%22github%2F(.%2B)%5C%22%2C%5C%22matchGroupToUse%5C%22%3A%5C%221%5C%22%2C%5C%22versionDetection%5C%22%3Afalse%2C%5C%22releaseDateAsVersion%5C%22%3Afalse%2C%5C%22useVersionCodeAsOSVersion%5C%22%3Afalse%2C%5C%22apkFilterRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22invertAPKFilter%5C%22%3Afalse%2C%5C%22autoApkFilterByArch%5C%22%3Atrue%2C%5C%22appName%5C%22%3A%5C%22%5C%22%2C%5C%22shizukuPretendToBeGooglePlay%5C%22%3Afalse%2C%5C%22exemptFromBackgroundUpdates%5C%22%3Afalse%2C%5C%22skipUpdateNotifications%5C%22%3Afalse%2C%5C%22about%5C%22%3A%5C%22%5C%22%7D%22%2C%22overrideSource%22%3Anull%7D)|



Enjoying OSS Document Scanner or OSS Card Wallet?


Please consider making a small donation to help fund the project. Developing an application, especially one that is open source and completely free, takes a lot of time and effort.





:heart: Sponsor


Open Source app to scan your documents.

## Screenshots

| | | |

| | | |

## Having issues, suggestions and feedback?

You can,
- [Create an issue here](https://github.com/Akylas/OSS-DocumentScanner/issues)

## Contributors

Thanks to our contributors:
* [Enrico Dell'Oste](https://www.smartpixel.it/)

## Languages: [Übersetzungsstatus](https://hosted.weblate.org/engage/oss-document-scanner/?utm_source=widget)

[Übersetzungsstatus](https://hosted.weblate.org/engage/oss-document-scanner/)

The Translations are hosted by [Weblate.org](https://hosted.weblate.org/engage/oss-document-scanner/).





Feature Graphic generated with [hotpot.ai](https://hotpot.ai/design/google-play-feature-graphic)

## Building Setup

This repo can be used to build 2 different apps: `OSS DocumentScanner` and `OSS CardWallet`

Those apps are using [Nativescript](https://github.com/NativeScript/NativeScript) which is a cross platform framework to build apps for iOS/Android

### Setup / Environment

This project uses a few environment variables. While most are for publishing and thus not necessary for most, some are used to decide which app to build:
* `APP_ID`: `com.akylas.documentscanner` or `com.akylas.cardwallet`
* `APP_BUILD_PATH`: `build/documentscanner` or `build/cardwallet`
* `APP_RESOURCES`: `App_Resources/documentscanner` or `App_Resources/cardwallet`

You can either define them yourself. If you are using vscode the `vscode/settings.json` of this repo defines different custom shells which will try to source `.env.documentscanner` and `.env.cardwallet`. To do this it use the plugin `dotenv` from omzsh [here](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/dotenv)
If those variables are not define the project will default to variables for `OSS DocumentScanner`

### Nativescript

First [setup Nativescript](https://docs.nativescript.org/setup/linux)

This project is optimized to be built with [Akylas Fork](https://github.com/Akylas/NativeScript). Though it would work with main it is best to use this fork. The `package.json` defines a resolution to `../NativeScript/dist/packages/core` so clone the fork and build it using `npm run setup:yarn && npm run ui-mobile-base:build && npm run core:build`

Another change is that this project uses new features of the Nativescript [cli](https://github.com/farfromrefug/nativescript-cli) which were not released yet.
So for now you need to clone [it](https://github.com/farfromrefug/nativescript-cli), build with `npm run setup` then use it with `PATH_TO_CLI_FOLDER/bin/ns`

### 3rd parties

This app also uses opencv and tesseract. I did not include the libraries in git because there are huge and would make the github repo too big.
There are 2 ways to install them:
* download from [here](https://github.com/Akylas/OSS-DocumentScanner/releases/tag/dev_resources) and uncompress them at the root
* build them yourself:

#### OpenCV

* **Android**:
You can download Opencv 4.8.0 for android [here](https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-4.8.1-apple.zip).
Then place the necessary libs/includes in the `opencv/android` at the root of this repo like shown here:
![opencv directory structure](images/opencv_structure.png)

* **iOS** :
You can download Opencv 4.8.0 for iOS [here](https://github.com/opencv/opencv/releases/download/4.8.0/opencv-4.8.0-ios-framework.zip).
Then place the `opencv2.xcframework` in the `opencv/ios` at the root of this repo

This should be enough. Android and iOS build will use it using symlinks

#### Tesseract
It is a bit trickier for Tesseract as we need to compile it

* **Android**:
- clone [https://github.com/Akylas/Tesseract4Android](https://github.com/Akylas/Tesseract4Android)
- build with `./gradlew assembleRelease`
- search for the built static libs (search for `libtesseract.a`) in `tesseract4android/build/intermediates/cxx/*/obj`
- copy the static libs and the includes(in `tesseract4android/src/main/cpp/tesseract/src/include`) in the `tesseract/android` at the root of this repo like shown here:
![opencv directory structure](images/tesseract_structure.png)

* **iOS**:
- clone [https://github.com/Akylas/TesseractBuild](https://github.com/Akylas/TesseractBuild)
- build with `./Scripts/Build_All.sh`
- copy everything from `Root` to the `tesseract/ios` at the root of this repo

### Yarn

You need to use yarn with this project as it uses the `portal:` protocol for some dependencies.
Note that the project has some `yarn link` for easy local dev for me. The best is for you to remove the `resolutions` part of the `package.json`

### Building

Now that all is setup and that you prepared the 3rd party libraries you can actually build and run the app:

* `yarn`
* `ns run android --no-hmr --env.devlog` (replace by `ios` for iOS...)

This should run the app on the first discovered device or emulator.