Giter Club home page Giter Club logo

receipt-manager-app's Introduction

Receipt manager Gitter

You can find pre-compiled releases on the Github release page or in the FDROID repository. All the needed info about how to use the receipt-manager-app is present at your wiki.

  • ⭐ We appreciate your star, it helps!


Please read the parser wiki.

receipt-manager-app's People

Contributors

izzysoft avatar monolidth avatar mre avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

receipt-manager-app's Issues

[REQUEST] new categories here.

Hi,
at the moment I added only 2 different categories. If a category is missing please tell me here.

Supported categories

  • health

  • grocery

I will update the post. If an new category is added.

Real-life receipt parsing issues

Would be helpful to keep track of some common real-life receipt issues. Although It might be better as a Github issues so each issue can have its own thread to discuss on.

  • Edge detection is sensitive to lighting and background contrast (e.g. pure white receipt on grey or coloured desk is not detected)
  • Cropping the receipt cuts off part of it
  • Detection on non-latin alphabet? (to be tested)
  • Receipts can be badly crumbled? (to be tested)
  • Receipts will generally be curved? (to be tested)
  • Some receipts are coloured: e.g. credit card or train ticket ones. Since those are more niche usecases and have no item information it can be ignored for now.
  • East Asian receipts are very packed both in design and character design so it can be sensitive to focus, blur and grey-scaling.

[REQUEST] new languages.

Now, the app is internationalized which means that it support various of languages, currencies and date formats.
However, if an language is missing, please request here.

I only speak 3 languages fluently and any help from native speakers is appreciated.

Supported languages:

  • English (GB)

  • English (US)

  • German

You can help me if you translate the language strings, if you are native speaker. Create a new arb file in lib/l10n. Copy the us_US.arb in the new arb file and translate the corresponding language.

Notify me here or send me a pull request.

Thanks in advance

FR: [UI] group connection options

Group the different possible connection settings, and have a dropdown/radio buttons to choose which settings to use. So far the options are:

  • zeroconf scanning the local network
  • manual IP/Port
  • domain-name
  • HTTPS on/off
    Ideally the domain-name and manual IP/Port should be one option, and then https can be inferred from the URL.

Settings going back to default

When selecting English in the settings, it changes, but after switching to another tab, it automatically switches back to german.

Same thing for the debug option. I turn it off, but it automatically turns on again.

Android 11 aosip.

tsv/json of analysed receipts?

Hello,
Many thanks for providing this app. I do like the idea very much.
is there any way to obtain csv or json of the analysed receipt - e.g. on the backend server?

please increase versionCode with each release

For several versions now (since v1.0.1), versionCode is stuck on "2". Please remember increasing this whenever you make a new release – else existing users won't ever receive updates, as Android considers the releases being "identical".

I don't know where you specify that, as details in your repo here are contradicting each other:

  • pubspec.yaml says version: 1.0.2+2 – but versionName in the APK is 1.0.3
  • app/build.gradle claims to get the versions from Flutter, and thus gives no details itself (no idea where Flutter takes them from, I'm no dev)
  • AndroidManifest.xml gives no clue

Could it be you override these values at build time, using command line parameters like --build-name and --build-number? In any case, you might wish to check with eg. How to set build and version number of Flutter app at StackOverflow, which discusses how to do it, what might go wrong and why.

[Feature request] Local storage alternative to self-hosting server

How feasible would it be to add an option to the client app to save everything to local storage (or cloud storage, e.g. OneDrive) rather than to a self-hosted server?

For many users, self-hosting adds a number of challenges, both in terms of computer literacy and hardware investment. Unless the server requires significant processing and/or storage space, it seems like many users would have the room to store their receipts on-device. If they want to access their receipts from another device or have it otherwise centralized, there could be an option to sync to 3rd-party cloud servers (or even just sync across devices with Syncthing).

Thoughts?

Wiki typo correction and question on what information is supposed to be stored

I checked out this wiki section for How it works and found some typos
- unfortunately GitHub doesn't support pull request for these wikis yet :(
Here's my corrected version (and I'd probably shorten "application" to "app"):

  1. The user takes a photo of a receipt
  2. The application uploads the receipt to the server
  3. The server parses the receipt and sends the output (as json response) back to the application
  4. The application stores the receipt in a SQL database

What I'm missing here is information about which properties of the receipt are saved.
Since it's not specified I assumed all - including each individual product and price - but then I read your medium article and noticed that just the key properties are saved. I also noticed that nothing happens when I press on a saved receipt in the "Expenses overview" so I assumed the app's not meant for that "drill-down".
Maybe in order to make this more clear, point 3 could be changed to something like this:
3. The server tries to parse the receipt (date, total, store name) and sends the output (as json response) back to the application

On the other hand I just noticed the property "receiptItems" in receipt_server.py. So I'm assuming that you did already think about including the individual products but didn't implement that feature yet due to missing time...but I don't know :D

FR: Display the parsed results

Would be more user friendly if after the server processes the receipt, we can see the results as well. In the future it will be useful for reinforcement training and correcting mistakes.

FR: Admin store names from app

Would be more applicable to add and manage the store names on the app rather than the server as they will change with time. In the future these can also be synced/imported from Grocy.

[UX] Allow caching and parsing at a later date

Hello,

data cap's are a problem some of us encounter quite often. It would be nice to have the app cache the pictures and upload them only on WiFi (better yet, ask before uploading with mobile data). (:

Enjoy your Rockstar.

1.1.6 adds non-free dependencies

My updater just sent me a warning: the new v1.1.6 introduces some proprietary components requiring the AntiFeatures NonFreeNet and NonFreeDep with my repo – while being a show-stopper for inclusion with F-Droid.org should you have planned that:

Offending libs:
---------------
* Firebase Data Transport (/com/google/android/datatransport): NonFreeNet
* Google Mobile Services (/com/google/android/gms): NonFreeDep
* Firebase (/com/google/firebase): NonFreeNet,NonFreeDep

Was that intended – or accidentally dragged in by some dependency? In the first case I'd ask you to reconsider: proprietary components taint your app, it's no longer entirely FOSS now. In both cases I kindly ask you to get rid of those libs again. Until then, I'll have to flag your app with the two mentioned AntiFeatures – and the ⭐ in my app-listings will be lost automatically. The "before-state" will be restored once those libraries are gone again.

As your app deals with sensitive data (finances), this combination further is a show-stopper for my repo as well. So should the move have been intentionally, and you want to stick to it, I'll have to remove your app from my repo unfortunately 😢

My guess is this is for "upload notifications" mentioned with the release notes – as I see the app now requests the C2D permission. May I suggest taking a look here for alternatives? You could instead use UnifiedPush – which supports multiple notification systems including FCM but, to my knowledge, not require using proprietary libraries in your app.

FR: Fine camera controlls

Would be more useful if we can manually adjust the focus and exposure of the camera. Otherwise you can get overexposed white paper. Sometimes there is a document settings on the camera app, but I'm not sure if it's the app or if it can be used externally.

FR: Test server connection

Add a button to test connection to the server. If failed, spit out the cause of error and/or error log if requested, e.g. certificate not trusted, cannot resolve address, etc.

Attach APK to releases

First, congrats to your first release! And thanks for providing the APK to end-users for easy access! 💚 🤩

To not bloat your repo unnecessarily (each new version would mean a growth of ~25M), I'd suggest you attach the APK to releases/ instead (when you edit a release, Github lets you add attachments). That way the APK remains available for everyone – and potential contributors have "less to clone" 😉

Another weird idea: I'm no Android developer, but I've heard proguard can be used to eliminate unused stuff from the build. This feature might help you reducing the size of the resulting APK, so it might be worth a try.

All the best for your project!

Increase accuracy of receipt-ocr

I recorded my screen on the Android app to show what's going on. I downloaded the apk from here. Maybe I'm not doing something correctly. It takes nearly 45 seconds to stop loading.

Google Photos Video link

I opened up Postman to see what the API is up to and here's the response with an uploaded png with the key of "image":

https://10.0.0.10:8721/api/upload/

{
    "storeName": null,
    "receiptTotal": null,
    "receiptDate": "null",
    "receiptCategory": "grocery"
}

The server is running with instructions from the receipt-parser-server readme on Docker with

docker pull monolidth/receipt-parser:latest
docker run -p 8721:8721 monolidth/receipt-parser

And I had to add a directory in the server Docker container for /app/data/img to fix an error.

But further inspection of the container shows that it did OCR the images:

root@c1e3b968b0a7:/app# ls data/txt/
receipt_2020-11-30_143843.txt  receipt_2020-11-30_144826.txt  receipt_2020-11-30_151504.txt
receipt_2020-11-30_144445.txt  receipt_2020-11-30_151113.txt  snip_20201130145614.txt

As I'm writing my Issue here I'm discovering more.

So I forked the repo and rebuilt the server Docker container with a new config.yml ...

...

It's been a few hours now and I made a few changes to ReceiptManager/receipt-parser now. I found that a regex wasn't matching lines correctly and a normalize() function needed another string function to properly split lines and not literally every character.

Anyways... The mobile app still didn't add any receipts as shown in the video. It did, however, fill in the name of my grocery store correctly, which was neat. If I'm missing something please let me know!

Gradle error when building a clone of this project.

Hi all.
When building the project I get this error.

FAILURE: Build failed with an exception.

* Where:
Build file ':\Application\android\app\build.gradle' line: 58

* What went wrong:
A problem occurred evaluating project ':app'.
> path may not be null or empty string. path='null'

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 1m 49s
Exception: Gradle task assembleDebug failed with exit code 1

I then got this fix, by commenting the these line in Application\android\app\build.gradle which works.

    // signingConfigs {
    //     release {
    //         keyAlias keystoreProperties['keyAlias']
    //         keyPassword keystoreProperties['keyPassword']
    //         storeFile file(keystoreProperties['storeFile'])
    //         storePassword keystoreProperties['storePassword']
    //     }
    // }
    // buildTypes {
    //     release {
    //         signingConfig signingConfigs.release
    //     }
    // }

I hope it will not alter the functionality of the app.
Regards.

For IOS?

Hi, I am interest in this project and I would like to know when will the IOS flutter app will be release?

Allow arbitrary URL rather than IP

Simple as that. On the server side you could serve some basic info of the server to check via json API if the location is a receipt-parser server or not.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.