ai newsMo., 19. Okt.
Eilmeldung.NET 11 Release Candidate 2: Go-Live License and Updates Across Libraries, F#, MAUI, and WinForms

LocalReceipts AI: Private Receipt-to-CSV Automation for Indian Freelancers

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle . What I Built LocalReceipts AI turns receipt images and PDF invoices into an editable expense register, with all receipt processing on the user's laptop. It is designed for freelancers and small business owners

dev.toMontag 08:48 · 19.10.3 Min. Lesezeit
Bild: dev.to

Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle Submission 💸

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle.

LocalReceipts AI turns receipt images and PDF invoices into an editable expense register, with all receipt processing on the user's laptop.

It is designed for freelancers and small business owners in India who need to hand their Chartered Accountant something more useful than a folder of photographs.

The workflow is deliberately small: upload bills, extract their details with a local vision model, correct the results, and download an accounting CSV. There is also a JSON backup containing the edited records and original extraction for comparison.

GSTIN stays a text identifier, separate from the numeric tax amount. Missing amounts stay blank: an unreadable tax figure should never silently become zero.

Who would pay for it? The customer hypothesis is an independent consultant, freelancer or small business that spends time retyping receipts but does not want to upload client or financial documents to a cloud service. A potential paid offering would be assisted installation, model configuration and support for their receipt workflow. That is a business hypothesis, not validated demand: I do not yet have a paying customer or external user study.

This is a local desktop utility. There is currently no public hosted app or video demo. The repository contains a runnable synthetic demonstration and setup instructions so readers can reproduce the workflow without providing private receipts.

Run the synthetic receipt demo · Installation and app walkthrough

After installing Python dependencies and downloading a vision model, configure Ollama in local-only mode and run the app. On Windows:

# In the Ollama terminal, after exiting any existing Ollama instance: $ env: OLLAMA_NO_CLOUD = "1" $ env: OLLAMA_HOST = "127.0.0.1:11434" ollama serve # In another terminal, from the cloned repository:. \.venv\Scripts\python.exe -m streamlit run app.py Enter fullscreen mode Exit fullscreen mode Select an installed vision model, upload a receipt, inspect the preview, extract it, edit the table and download the CSV. The app's default model name is llama3.2-vision; custom installed models are supported.

For a repeatable test, the demo script generates a fictional software-store receipt and sends it to local Ollama:

. \.venv\Scripts\python.exe scripts\smoke_local_model.py --model qwen3.5:4b Enter fullscreen mode Exit fullscreen mode In the live local test, qwen3.5:4b returned:

The script checks the expected tax and total. This is one synthetic test, not a claim of general receipt accuracy. The smaller installed moondream model returned valid JSON but incorrect amounts on this example. That failure is documented too: structured output does not make an answer financially correct.

A modular, offline Streamlit desktop utility for Indian freelancers and small businesses. PNG/JPEG bills and multi-page PDF invoices become an editable INR expense register, with CSV and JSON downloads.

Requires Python 3.10+ and a recent local Ollama installation. Model memory requirements vary substantially; choose one that fits your machine. The default llama3.2-vision can be slow without sufficient GPU memory. minicpm-v and llava are alternatives.

python - m venv.venv.\.venv\Scripts\ python.exe - m pip install - r requirements.txt ollama pull llama3. 2 - vision Enter fullscreen mode Exit fullscreen mode Set Ollama to local-only mode before processing private documents. Quit the Ollama tray application first, then start its server in a dedicated terminal:

$ env: OLLAMA_NO_CLOUD = " 1 " $ env: OLLAMA_HOST = " 127.0.0.1:11434 " ollama serve Enter fullscreen mode Exit fullscreen mode Keep that terminal open. If Ollama reports the port is…

Quelle: dev.to (dev.to). Original öffnen