QVAC
Beginner

Invoice OCR

35 min · Desktop

Local invoice data entry, no cloud

Read a whole folder of invoices - PDFs, scans, photos - and fill in an accounting table on-device, free and offline.

quick-start.sh
git clone https://github.com/tetherto/qvac-examples
cd qvac-examples/qvac-invoice-manager-demo
npm install
npm start

QVAC Invoice Manager is an illustrative example that reads a folder of invoices and fills in an accounting table, entirely on-device and for free. Point it at a hierarchy like 2026/<supplier>/ and it works through PDFs, scans, and photos with the right reader for each, flags fields it is unsure about, checks that net + tax equals total, and exports a CSV with European semicolon formatting - without uploading a single document anywhere.

Prerequisites

  • Node.js 22.17 or later

  • 8 GB RAM minimum for one model, 16 GB+ recommended

  • ~2.5 GB disk for the text model, ~1.6 GB for the vision model

  • Apple Silicon (Metal) or a Vulkan GPU preferred - CPU works, just slower

  • A folder of supplier invoices to test with (or use the samples in demo/)

Before downloading any models, run the QVAC diagnostic tool to confirm your RAM, disk space, and GPU support are sufficient.

doctor.sh
npx -y @qvac/cli doctor

Clone qvac-examples and install the invoice-manager-demo package. This pulls in the QVAC SDK and the local text/vision models it needs.

setup.sh
git clone https://github.com/tetherto/qvac-examples
cd qvac-examples/qvac-invoice-manager-demo
npm install

Final result

  • Folder of invoices scanned, with a text or vision reader applied per file

  • Custom accounting columns populated with extracted values

  • Low-confidence fields flagged, net + tax vs. total validated automatically

  • Table exported to CSV with European semicolon formatting

  • Nothing uploaded - every document stayed on the machine it started on

QVAC Invoice Manager is an illustrative example, not a product - it is not an accounting, bookkeeping, or tax tool, and a local model will misread some documents. Fork it from github.com/tetherto/qvac-examples and swap in your own columns, readers, or export format.

Build this

Build this with the QVAC SDK

Everything here runs on-device. Grab the SDK and ship your own version.

npm install @qvac/sdk