Receipt parser application written in dart.

Overview

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.

Comments
  • Allow arbitrary URL rather than IP

    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.

    enhancement 
    opened by LecrisUT 30
  • Attach APK to releases

    Attach APK to releases

    First, congrats to your first release! And thanks for providing the APK to end-users for easy access! :green_heart: :star_struck:

    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" :wink:

    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!

    opened by IzzySoft 22
  • 1.1.6 adds non-free dependencies

    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 :star: 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 :cry:

    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.

    opened by IzzySoft 14
  • FR: Fine camera controlls

    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.

    opened by LecrisUT 14
  • Increase accuracy of receipt-ocr

    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!

    enhancement 
    opened by starbuck93 9
  • please increase versionCode with each release

    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.

    opened by IzzySoft 8
  • Settings going back to default

    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.

    opened by TomDW-BE 7
  • Wiki typo correction and question on what information is supposed to be stored

    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

    opened by JavaJeremy 3
  • Gradle error when building a clone of this project.

    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.

    opened by petermusembi69 3
  • initial fastlane structures

    initial fastlane structures

    As discussed in #3 – here comes the "Fastlane starter package". Be welcome to let you guide by my Fastlane Cheat-Sheet to build on this – especially for screenshots :wink:

    opened by IzzySoft 3
  • Add sponsorship information

    Add sponsorship information

    As discussed, we would like to go forward and encourage supporters to extend the app's functionality and cover the maintenance costs. We set up an Open Collective organization over at https://opencollective.com/receiptmanager, which will serve as our fiscal host. A first step is to let people know about the funding opportunities via Github's own FUNDING.yml file, which will add a badge to the sidebar of the repository.

    opened by mre 2
Releases(1.1.7)
  • 1.1.7(May 26, 2021)

  • 1.1.6(May 15, 2021)

    Receipt Manager 1.1.6

    Bug fixes

    • correct list view in HistoryWidget
    • correct language strings

    Enhancements

    • add upload notification
    • improve language strings
    • translate notifications
    • set default notification style
    • update store icons
    • progress notifications
    Source code(tar.gz)
    Source code(zip)
    app-release.apk(24.70 MB)
  • 1.15(May 2, 2021)

  • 1.1.4(Apr 22, 2021)

    Receipt Manager 1.1.4

    Warning, this new release, use a new database scheme. The old database scheme is not supported anymore. Please backup your old database before your download the app and uninstall the application.

    Screenshots

    New features

    Improve code quality

    • implement clean code architecture
    • take care of the DRY and SOLID principle
    • remove redundant code and cleanup comments
    • nearly 2 times less code

    UI changes

    • UI is completely rewritten and more intuitive
    • the receipt form feature now a currency picker
    • the data picker is more intuitive
    • autocomplete for store name, tag name, categories
    • add custom categories now
    • simplify navigation bar and remove animation
    • add animations in history widget
    • the stats widget uses now infinite cards
    • animations in stats widget and automatic card change after 10s
    • remove unused options in settings widget

    Background upload

    • the image upload is now asynchron
    • the user can check stats while the image is uploaded and processes

    Null safety

    • flutter null safety is now enrolled
    • fix weird null glitches and invalid date formats

    Gallery picker

    • now, you can pick images from your gallery
    • cache receipts

    Camera picker

    • now fix auto focus and flash
    • store camera images in gallery

    Implement multi button

    • file upload is implemented but not in the current release present

    Database

    • still use MOOR as a SQL wrapper but this release has a new database scheme
    • reduce database size
    • faster and cleaner queries
    Source code(tar.gz)
    Source code(zip)
    app-release.apk(23.47 MB)
  • 1.1.3(Mar 29, 2021)

    Receipt Manager 1.1.3

    This release has may of improvements and bug fixes.

    Improvements

    • simplify network interface
    • implement update memento method
    • Upgrade all dependencies
    • implement null safety in network client holder
    • add receipt tag in receipt form
    • migrate database scheme
    • simplify url builder method and simplify network client
    • implement null safety in settings
    • simplify total calculation logic
    • simplify shared preference logic
    • request legacy external storage
    • implement edge detection
    • allow to enable and disable edge detection
    • improve language strings
    • use licence generator instead of static licence list
    • change color in date picker
    • improve date validation method

    Bug fixes

    • correct training API url builder
    • correct filter widget (now works as expected)
    • fix delete method in History Widget
    • correct banner height calculation
    • correct weekly overview day array
    • fix wrong month and day formatting in StatsWidget
    • load SettingsWidget with default values
    • remove unused global keys (lead to race condition)
    • show error message if API token is not valid
    • fix wrong error message on failed upload
    • fix human date manipulator if years < 100
    • fix Scaffold state key bug

    Refactor

    • refactor settings widget
    • remove deprecated classes and helper methods and shrink app size
    • replace deprecated FlatButton with TextButton
    • replace deprecated cubit object with bloc object
    • simplify receipt form
    • replace deprecated Scaffold method with ScaffoldMessenger
    • remove device info dependencies
    • remove pull to refresh (since unused)
    • pop context if image path is null (fixes null pointer exception)
    • use camel case for local variables
    • trim white spaces in APISettings and NetworkSettings
    • remove set state method in History widget
    • rename receipt list to receipts

    Tests

    • add weekly api test
    • add monthly overview test
    • add weekly overview test
    • add date formatter test
    Source code(tar.gz)
    Source code(zip)
    app-release.apk(89.60 MB)
  • 1.1.2(Mar 23, 2021)

    Receipt Manager 1.1.2

    This release has various of improvements and bug fixes

    Improvements

    • simply network interface
    • allow to specify server domain and local IPv4 address
    • test server connection
    • improve filter performance in FilterWidget

    Bug fixes

    • correct language strings
    • fix training API build method
    • fix filter widget and rebuild refresh indicator
    • update delete method in History widget

    Refactor

    • simplify settings interface
    • move model in the DB package
    • move stats in the UI package
    • move repository in the DB package
    • remove deprecate classes and methods and reduce APK size
    Source code(tar.gz)
    Source code(zip)
    app-release.apk(22.20 MB)
  • 1.1.1(Mar 15, 2021)

    Receipt Manager 1.1.1

    This release features various of bug fixes and improvements.

    Bug fixes

    • fix typos in log message
    • disable gaussian blur if grayscale is disabled

    Enhancements

    • use zeroconf protocol to discover receipt parser server
    • add discovery widget
    • build refresh widget
    • show empty image if no service is not available

    Refactor

    • replace broadcast model
    • add language strings for discovery widget
    Source code(tar.gz)
    Source code(zip)
    app-release.apk(21.18 MB)
  • 1.1.0(Feb 19, 2021)

    ReceiptManager 1.1.0

    This release features various of bug fixes and improvements.

    Enhancements

    • add listview animations
    • improve category icons
    • correct language strings
    • show receipt items if wanted
    • add language strings
    • improve receipt view design by using the image as decoration

    Bug fixes

    • add null check in fromJson method
    • remove unused dependencies and shrink binary size
    • correct validation form
    • ignore items if list is empty
    • return an empty list instead of null
    • initalise constants with default values

    Refactor

    • refactor expenses api
    • implement NetworkClient and NetworkClientHolder singelton
    • remove unused tests
    • use enums to define the banner mode
    • submit options in NetworkClient via NetworkClientHolder
    Source code(tar.gz)
    Source code(zip)
    app-release.apk(21.36 MB)
  • 1.0.9(Feb 15, 2021)

    ReceiptManager 1.0.9

    This release features various of bug fixes and improvements.

    Bug fixes

    • Fixed duplicate alert messages
    • Improve height calculation
    • Commit missing craft logo
    • Trim white spaces in receipt total and receipt name field
    • Center onboard text
    • Don't encode null elements

    Refactor

    • Externalize expenses helper methods
    • Refactor util package

    Improvements

    • Show weekly expenses in history widget
    • Prepare item list
    • User could now add, delete and edit receipt items
    • Implement database migration strategy
    Source code(tar.gz)
    Source code(zip)
    app-release.apk(21.32 MB)
  • 1.0.8(Jan 11, 2021)

    ReceiptManager 1.0.8

    This release features a new settings widget and various of compatibilities.

    Improvements

    • Refactor language strings
    • Improve settings widget
    • Allow to apply gaussian blur and grayscale to image
    • Improve receipt display screen
    Source code(tar.gz)
    Source code(zip)
    app-release.apk(22.54 MB)
  • 1.0.7(Dec 18, 2020)

    ReceiptManager

    Has multiple bug fixes and design improvements.

    Improvements

    • Replace current illustrations with illustration in red accent color
    • Prepare Dashboard which shows all need information

    Bugfixes

    • debug output setting is now stored in shared preferences
    • language setting is stored
    • app load chosen language setting
    Source code(tar.gz)
    Source code(zip)
    app-release.apk(22.53 MB)
  • 1.0.6(Dec 16, 2020)

    ReceiptManager 1.0.6

    The ReceiptManager 1.0.6 features a new minimalist and clean design. It is now even simpler to add, modify and delete receipts.

    Improvements

    • new minimal design
    • banner height is calculated based on the display ration
    • improve language strings
    • various of bug fixes
    Source code(tar.gz)
    Source code(zip)
    app-release.apk(22.53 MB)
  • 1.0.5(Dec 10, 2020)

  • 1.0.4(Dec 1, 2020)

    Summary

    This release does fix various of date issues.

    Changelog

    • The application does now parse the date, even if the date picker is not used
    • The history widget, the home widget and every form does display the date correctly (based on the country code)
    • The network client does now parse the date correctly
    Source code(tar.gz)
    Source code(zip)
    app-release.apk(21.91 MB)
  • 1.0.3(Nov 19, 2020)

    Summary

    This release has various of bug fixes.

    Changelog

    • remove number keyboard input method (because on some devices with default keyboard, there is no dot)
    • re-enable form validation (the new autocomplete form does not support validation)
    • fix layout on special screen sizes (some labels overlap on screen 5"7 )
    • disable stats widget because it causes bugs on slower devices
    • generate random colors on chip widget
    • allow to filter the history widget
    Source code(tar.gz)
    Source code(zip)
    app-release.apk(21.91 MB)
  • 1.0.2(Oct 28, 2020)

  • 1.0.1(Oct 26, 2020)

  • 1.0.0(Oct 25, 2020)

Plist parser - A Plist parser for Flutter supports XML and binary Apple Property list (plist) formats

Plist Parser for Flutter ?? A Flutter Plugin for Plist parser supporting XML and

dirablue ( gaku ) 4 Nov 17, 2022
Esc pos printer - POS (thermal, receipt) printing for Flutter & Dart

esc_pos_printer The library allows to print receipts using an ESC/POS thermal WiFi/Ethernet printer. For Bluetooth printers, use esc_pos_bluetooth lib

Andrey 259 Jan 6, 2023
Dart duration iso parser - Package to parse duration from ISO 8601 string

duration_iso_parser Package for parsing ISO 8601 durations string to the Duratio

Innim 1 Jan 18, 2022
A Dart EPUB parser built from the ground up, and designed to support a variety of use cases and custom

A Dart EPUB parser built from the ground up, and designed to support a variety of use cases and custom implementations such as on-device caching and serving content from a server.

getBoolean 11 Nov 3, 2022
Fan-made, handmade, recursive-descent parser for the Dart programming language.

Very Unofficial Parser Fan-made, handmade, recursive-descent parser for the Dart programming language. Although this parser strives to parse the langu

Joanna May 64 Nov 21, 2022
An intuitive Token Parser that includes grammar definition, tokenization, parsing, syntax error and debugging. Implementation based on Lexical Analysis for Dart.

Token Parser An intuitive Token Parser that includes syntax/grammar definition, tokenization and parsing. Implementation based on Lexical Analysis. Re

JUST A SNIPER ツ 2 Dec 15, 2022
Response Parser makes it easier to parse data and error response from server.

Response Parser makes it easier to parse data and error response from server. Getting started Do you want to write this pretty functions... Future<Eit

Qyre AB 4 Nov 5, 2022
Mysql.dart - MySQL client for Dart written in Dart

Native MySQL client written in Dart for Dart See example directory for examples

null 48 Dec 29, 2022
This is a wallet application written in Flutter & Dart. Codebase could be shared effectively on other OS Platforms

Gwallet A Simple wallet application written in Flutter and Dart for Android and iOs. Getting Started For Android, Specifically. You can run iOS, by st

Gerald Maduabuchi 8 Dec 12, 2022
A build system for Dart written in Dart

These packages provide libraries for generating, compiling and serving Dart code. Getting started with build_runner General FAQ Windows FAQ FAQ for Bu

Dart 676 Dec 24, 2022
Tool made in Dart that allows you to dynamically generate JSON files from data models written in Dart.

Dart JSON Generator Versión v1.1.1 Dart JSON Generator es una herramienta que permite generar archivos JSON a partir de mapas como modelos de datos en

Joinner Medina 7 Nov 23, 2022
Note app flutter sqflite provider - A Note Taking Application written in Flutter

note_app_flutter_sqflite_provider ?? Introduce This is a note taking app made wi

Cool Kid 10 Dec 22, 2022
Android App written with Flutter/Dart to navigate medium.com without limitations.

Medium Unlimited An Android application written with Flutter/Dart to read medium.com without limitations. Features Read medium without reading limits

null 29 Dec 22, 2022
A streaming client for the Komga self-hosted comics/manga/BD server targeting Android/iOS written in Dart/Flutter

Klutter A streaming client for the Komga self-hosted comics/manga/BD server targeting Android/iOS written in Dart/Flutter Background This is a project

Mark Winckle 58 Dec 7, 2022
Simple and fast Entity-Component-System (ECS) library written in Dart.

Fast ECS Simple and fast Entity-Component-System (ECS) library written in Dart. CPU Flame Chart Demonstration of performance for rotation of 1024 enti

Stanislav 8 Nov 16, 2022
a project-m36 websocket client written by flutter/dart

project_m36_websocket_client A Flutter web websocket client for Project-M36. It's also an attempt to bring algebraic datatypes into the Dart land. Pro

null 1 Jan 8, 2022
Fast math TeX renderer for Flutter written in Dart.

CaTeX is a Flutter package that outputs TeX equations (like LaTeX, KaTeX, MathJax, etc.) inline using a widget and Flutter only - no plugins, no web v

simpleclub 56 Nov 14, 2022