Documents in. Structured data out.
Document OCR and structured data extraction on a local LLM. Invoices go in, validated JSON comes out, and no data leaves your network.
GSTIN 29ABCDE1234F1Z5
Inv INV-0418 · 12 Sep 2026
{"vendor_name": "Northwind Logistics","invoice_no": "INV-0418","invoice_date": "2026-09-12","total": 8500.00,"charge_type": "Exempted",}
- 1.5–3.5s
- Per page, vision OCR on a single GPU
- ≥98%
- Field accuracy on vendor invoices with feedback rules on
- 0
- Source files changed or deleted
- 0
- Cloud LLM credits, tokens or API calls needed
Your documents never meet a big-tech LLM.
OCR and extraction both run on models installed on your own hardware. You don't need an OpenAI, Google or Anthropic account, and the cost per page doesn't climb as volumes grow.
Zero per-page or per-token fees
No API keys to top up and no usage bill at month end. Process ten invoices or ten million on the same server.
Nothing leaves your network
Invoices, GSTINs, bank details and vendor data stay inside your firewall. It works on air-gapped servers too.
Open models, swapped freely
Qwen, Llama and similar models through vLLM, Ollama or LM Studio. Change the model without changing the pipeline.
No rate limits, no outages elsewhere
Throughput depends on your GPU, not on a provider’s quota, pricing change or downtime.
Four ways in. One queue.
Documents arrive where they already land today. DocKnot picks them up, checks each file has finished writing, and skips anything it has already processed.
SMB / CIFS file servers
Authenticated sessions with Active Directory. Recursive scans at any folder depth, every 10 seconds by default.
Watched directories
Register a folder from the file explorer and it is monitored from then on. Output lands in a matching folder tree.
IMAP and Microsoft Graph
Polls several mailboxes, filters by subject, saves invoice attachments and marks each email so nothing is ingested twice.
Web upload and REST
Drop files in the dashboard or post them from another system with a scoped API key.
From a scanned page to a record your ERP can post.
Each document moves through the same six stages. The dashboard shows which stage it is in, its place in the queue and how long is left.
- 01
Ingest
Waits until each file stops changing, then hashes it with SHA-256. Unchanged files are skipped; edited files re-queue on their own.
- 02
Orient
Checks every page at 0°, 90°, 180° and 270°, and falls back to multi-angle scoring when confidence is low.
- 03
Read
Vision OCR returns markdown and rebuilds tables, including merged cells, as proper HTML tables.
- 04
Correct
Your learned regex rules fix known OCR slips before the text reaches the LLM.
- 05
Extract
A local LLM on your server maps the text to a strict JSON schema. It only does arithmetic when the operands are printed on the page.
- 06
Deliver
JSON is saved to the database and to an output folder that mirrors the source tree, and is available over the API.
Invoices, receipts and bills of lading, down to the line item.
The standard schema covers the fields Indian GST invoices need. Exempt supplies are read correctly: when a page shows NIL tax or cites an exemption notification, the line is marked non-taxable, whatever the column header says.
- Vendor
- vendor_name, vendor_address, vendor_gstin, vendor_pan, vendor_state, is_registered
- Client
- client_name, client_gstin
- Invoice
- invoice_no, invoice_type, invoice_date, due_date, place_of_supply
- Totals
- currency, sub_total, tax_total, total, charge_type, tds_rate, tds_amount
- Line items
- description, qty, unit_price, amount, hsn, tax_rate, t_nt, cgst, sgst, igst
{
"vendor_name": "Northwind Logistics Pvt Ltd",
"vendor_gstin": "29ABCDE1234F1Z5",
"invoice_no": "INV-0418",
"invoice_date": "2026-09-12",
"place_of_supply": "Karnataka",
"currency": "INR",
"sub_total": 8500.00,
"tax_total": 0.00,
"total": 8500.00,
"charge_type": "Exempted",
"line_items": [{ "description": "Freight charges", "hsn": "9967", "amount": 8500.00, "t_nt": "NT" }]
}Fix it once. It stays fixed.
When someone corrects an extraction in the review screen, DocKnot keeps the before and after, and turns the fix into a rule for every document that follows.
Known OCR slips, fixed before extraction.
Systematic misreads, such as the letter O read as zero in a PAN, become fast regex rules that run on the OCR text.
Judgement calls, taught with examples.
Semantic fixes, such as keeping remarks in the narration, become instructions and verified examples added to the LLM prompt on later runs.
Admins stay in charge of what it learns.
A side-by-side diff of the original and corrected JSON, with one click to generate a rule. Turn rules on or off, reorder, edit or delete them.
Keeps going through restarts, dropped shares and bad scans.
Live position and time left
A first-in, first-out queue with a rolling-average ETA for every document and the whole batch.
Nothing lost on restart
After a power cut or container restart, interrupted and queued documents resume from the database.
Three attempts before a flag
Failed documents retry automatically, then show as failed with the reason, ready for a manual retry.
Dropped shares, handled
If an SMB connection drops, DocKnot logs it and carries on at the next scan.
Throughput at a glance
Pages per minute, latency per page, queue depth and failure rate, with the source page next to its JSON.
Your originals stay put
Source files are never modified or deleted. Output is written to a separate, mirrored folder tree.
Three roles. Scoped keys. Every path checked.
- Admin
- Users, API keys, watched folders, system settings and rule approvals.
- Operator
- Start and stop monitors, retry, upload, browse file servers and submit corrections.
- Viewer / external client
- Read-only access to extracted JSON, batch status and previews.
- TLS 1.3
- JWT and X-API-Key
- Scopes: batch, fileserver, feedback
- Path traversal blocked
- Secrets in environment, never in logs
On your own server, on your terms.
Run it next to your file servers. Use a GPU for speed or a CPU when that is what you have, and keep the LLM on the same box. No token bills, no rate limits, no data leaving the building.
- Hardware
- GPU: 8+ cores, 32 GB RAM, NVIDIA 16 GB+ VRAM · CPU: 8 cores, 16 GB RAM
- Operating system
- Ubuntu 22.04, Debian 12, RHEL 9, Windows Server 2022
- Database
- PostgreSQL for production, SQLite for pilots
- LLM
- Local by default: open models such as Qwen and Llama through vLLM, Ollama or LM Studio. A hosted provider is optional, never required
- Extend
- Add S3, Azure Blob or SFTP sources through the same connector interface
DocKnot, answered.
Less typing. More closing the books.
Send us a folder of your own invoices. We'll run them through DocKnot on a local LLM and show you the JSON, without a single cloud API call.