{"id":16974702,"url":"https://github.com/nulldev/spendenr-ai-d","last_synced_at":"2025-07-18T19:07:20.957Z","repository":{"id":124308581,"uuid":"473060568","full_name":"NullDev/Spendenr-AI-d","owner":"NullDev","description":"💸 AI powered Spendenraid evaluation. ","archived":false,"fork":false,"pushed_at":"2025-03-27T23:18:51.000Z","size":79647,"stargazers_count":16,"open_issues_count":0,"forks_count":3,"subscribers_count":3,"default_branch":"ocr-only","last_synced_at":"2025-07-11T15:22:41.818Z","etag":null,"topics":["classification","evaluation","nodejs","nulldev","ocr","pr0gramm","python"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NullDev.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,"zenodo":null}},"created_at":"2022-03-23T06:19:36.000Z","updated_at":"2025-04-13T01:51:45.000Z","dependencies_parsed_at":"2024-05-01T11:08:04.272Z","dependency_job_id":"fdce6624-7dbe-411f-b644-ac225a13d57e","html_url":"https://github.com/NullDev/Spendenr-AI-d","commit_stats":null,"previous_names":["nulldev/spendenr-ai-d"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/NullDev/Spendenr-AI-d","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NullDev%2FSpendenr-AI-d","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NullDev%2FSpendenr-AI-d/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NullDev%2FSpendenr-AI-d/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NullDev%2FSpendenr-AI-d/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NullDev","download_url":"https://codeload.github.com/NullDev/Spendenr-AI-d/tar.gz/refs/heads/ocr-only","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NullDev%2FSpendenr-AI-d/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265816096,"owners_count":23833082,"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":["classification","evaluation","nodejs","nulldev","ocr","pr0gramm","python"],"created_at":"2024-10-14T01:07:40.226Z","updated_at":"2025-07-18T19:07:20.950Z","avatar_url":"https://github.com/NullDev.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Spendenr-AI-d\n\n\u003cp align=\"center\"\u003e\u003cimg height=\"450\" width=\"auto\" src=\"https://i.ibb.co/JpBCvDX/photo-2022-03-25-20-27-44.jpg\" /\u003e\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003cb\u003eAI powered Spendenraid evaluation. \u003cbr\u003e\u003csub\u003e- With :heart: by TheShad0w\u003c/sub\u003e\u003c/b\u003e\u003c/p\u003e\n\u003chr\u003e\n\n## :question: What does it do?\n\nThis AI helps with the evaluations of donations during the pr0gramm \"Spendenraid\". It classifies pictures to see what organisation the donation was for, as well as the amount of money donated.\n\n\u003chr\u003e\n\n## :information_source: Update\n\nNew version is OCR only.\n\nOld ReadMe Below ⬇️ (or [go to master branch](https://github.com/NullDev/Spendenr-AI-d/tree/master))\n\n\u003chr\u003e\n\n## :information_source: Info\n\nThe AI operates multithreaded and asynchronous. It receives a \"batch\" of image ID's which are processed one after the other in a \"queue\" (image download, organisation classification, donation amount evaluation, image deletion, sending the result to the server). One worker thread is opened per batch. Batches can arrive in parallel, i.e. if one batch is currently being processed, another one can arrive at the same time. These are then processed independently of each other. It is recommended to deploy the whole project with [PM2](https://pm2.io/) in [Cluster Mode](https://pm2.keymetrics.io/docs/usage/cluster-mode/) with about 5 instances, so that another OSI-layer 7 horizontal scaling takes place. A ready-made configuration file is [available in the repository]((https://github.com/NullDev/Spendenr-AI-d/blob/master/pm2-service.config.json)).\n\nTo learn how the AI was trained, please refer [to the explanation in the classification script](https://github.com/NullDev/Spendenr-AI-d/blob/master/model/tag.py#L18-L27).\n\n\u003chr\u003e\n\n## :wrench: Setup\n\n0. Open up your favourite terminal (and navigate somewhere you want to download the repository to). \u003cbr\u003e\u003cbr\u003e\n1. Make sure you have NodeJS installed. Test by  entering \u003cbr\u003e\n$ `node -v` \u003cbr\u003e\nIf this returns a version number, NodeJS is installed. **If not**, get NodeJS \u003ca href=\"https://nodejs.org/en/download/package-manager/\"\u003ehere\u003c/a\u003e. \u003cbr\u003e\u003cbr\u003e\n2. Clone the repository and navigate to it. If you have Git installed, type \u003cbr\u003e\n$ `git clone https://github.com/NullDev/Spendenr-AI-d.git \u0026\u0026 cd Spendenr-AI-d` \u003cbr\u003e\nIf not, download it \u003ca href=\"https://github.com/NullDev/Spendenr-AI-d/archive/master.zip\"\u003ehere\u003c/a\u003e and extract the ZIP file.\u003cbr\u003e\nThen navigate to the folder.\u003cbr\u003e\u003cbr\u003e\n3. Install all dependencies by typing \u003cbr\u003e\n$ `npm install`\u003cbr\u003e\u003cbr\u003e\n4. Copy [config.template.json](https://github.com/NullDev/Spendenr-AI-d/blob/master/config.template.json) and paste it as `config.js` \u003cbr\u003e\u003cbr\u003e\n5. Configure it in your favourite editor by editing `config.json`\u003cbr\u003e\u003cbr\u003e\n6. Start it by running \u003cbr\u003e\n$ `npm start` \u003cbr\u003e\nor lint and start it by using \u003cbr\u003e\n$ `npm run dev` \u003cbr\u003e\u003cbr\u003e\n\n**Attention**: Additionally required modules besides NPM Dependencies: \n- Docker ([Install instructions](https://docs.docker.com/engine/install/debian/#install-using-the-repository))\n- Tesseract (`sudo apt install tesseract-ocr tesseract-ocr tesseract-ocr-deu`)\n- Python 3.8.10 ([Install instructions](https://stackoverflow.com/a/62831268/7575111) (replace 3.8.2 with 3.8.10 !))\n- Tensorflow 2.4.0 (`pip install tensorflow==2.4.0`)\n\n\u003chr\u003e\n\n## :heart: Acknowledgements\n\n- [RundesBalli](https://github.com/RundesBalli) for his [Spendenraid System](https://github.com/RundesBalli/pr0gramm-Spendenraid)\n- [Chiaki](https://pr0gramm.com/user/Chiaki) for [help with refactoring the classification python script](https://github.com/NullDev/Spendenr-AI-d/blob/master/model/tag.py)\n\n\u003chr\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnulldev%2Fspendenr-ai-d","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnulldev%2Fspendenr-ai-d","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnulldev%2Fspendenr-ai-d/lists"}