PurpleOCR
The OCR engine behind Keepsake, licensed for your own software. It reads ordinary consumer scans — phone photos, shadowed pages, crooked statements — and tells you how much to trust what it read.
What it does
🎚️Adaptive, not brute force
The fast path runs first and escalates only when a read is genuinely poor — judged by confidence mass, because a page a shadow wiped out still reports ~95% mean confidence on the few words it managed to find.
🧠Optional deep ensemble
PP-OCRv4 (ONNX) beside Tesseract 5, keeping whichever read is more confident. Models download on first use and are checksum-verified — nothing multi-megabyte ships in the package.
📐Structure, not just text
Word geometry, tables reconstructed to TSV/CSV, hOCR and JSON export, barcodes and QR codes, and an ICAO 9303 MRZ reader with the 7-3-1 check digits actually enforced.
Ten lines to a result
<PackageReference Include="PurpleOCR" Version="3.0.0" />
var engine = new PurpleOCR.OcrEngine();
var result = engine.ExtractFromFile(@"C:\scans\statement.pdf");
Console.WriteLine(result.Text);
Console.WriteLine($"{result.MeanConfidence:F1}% mean confidence, {result.Words.Count} words");
foreach (var table in engine.ExtractTables(@"C:\scans\statement.pdf"))
Console.WriteLine(table.ToCsv());
.NET 7 or later, Windows x64. The package is 137 KB; native dependencies come from their own packages, and OCR models are fetched and verified on first use.
Licensing
Perpetual for the version you buy, with a year of updates. Evaluation is free for 30 days, including your CI.
Single developer
£199
One named developer, unlimited products, unlimited end users.
Team
£699
Up to five named developers. The usual choice for a product team.
Site
£1,999
One legal entity, unlimited developers and products.
Paid by bank transfer. Full refund within 30 days if it does not do what the documentation says. Prefer to just write? hello@securekeepsake.com.
Honest limits
- Windows x64 only. It depends on GDI+, PDFium and the Windows OpenCV runtime.
- Skew is a tie. On rotated pages PurpleOCR and raw Tesseract score about the same (12.4% vs 12.3% CER). That row is published alongside the ones we win.
- The ensemble costs time. Running both engines is slower than running one; it is off by default and worth it mainly for difficult scans.
- OCR is statistical. It makes mistakes. Validate before you rely on it — which is exactly why every result carries confidence figures.
Questions
Is there a free tier?
There is a 30-day evaluation, which covers development and CI. Shipping — in a product, on a server, or as part of a service — needs a paid licence. There is no free production tier, because the honest alternative to a paid licence is an abandoned side project, not a generous one.
How do I pay for a PurpleOCR licence?
By invoice and bank transfer. Write to hello@securekeepsake.com with the licence you want and your billing details; you get an invoice, and the licence on payment. No card processor is involved.
Is it open source?
No. The source is not published and the package is commercially licensed. It builds on open-source components — Tesseract, OpenCV, ONNX Runtime, PDFium, ZXing — whose licences are listed in the package and unaffected by this one.
Why Windows only?
It depends on GDI+, PDFium and the Windows OpenCV runtime. A cross-platform build is possible but is not something to claim before it has been tested, so it is not offered.
What accuracy should I expect?
On a synthetic ground-truth set across six degradations, 0.6% character error rate against raw Tesseract 5's 19.3%, and 97.7% field accuracy against 77.4%. The optional deep ensemble reaches 0.1% and 99.3% but costs latency. The full table, including the rows we do not win and the run-to-run variance, is on the OCR feature page.
What happens when a new version ships?
A licence is perpetual for the version bought and includes a year of updates. Nothing stops working when the year ends — you simply stay on the last version your licence covers.
Last verified — by dotnet run --project PurpleOCR/PurpleOCR.Benchmark. Every claim on this site is listed, with its evidence, in the claim ledger.