

◂▸
We generated 30 realistic but fictional UK documents (invoices, delivery notes and inspection forms with handwritten entries), each as a flat scan, a phone photo or a rough photo. Then we ran two small open document models locally and checked every field, and every number they wrote that isn't on the page.
What we measured
| Measure | TeleOCR (1.4B) | SmolDocling (256M) | Note |
|---|---|---|---|
| Fields read correctly | 69.5% | 90.4% | 426 fields on 30 pages |
| Handwritten fields | 90.6% | 93.5% | TeleOCR reaches 94.7% on the pages where it didn't loop |
| Numbers not on the page, per page | 16.8 | 0.17 | |
| Pages where output ran away | 6 of 30 | 2 of 30 | Repeated lines, or layout coordinates instead of text |
| Median time per page | 17.0 s | 48.4 s | |
| Peak GPU memory | 3.2 GB | 0.9 GB |
What happens next
- PaddleOCR-VL-1.6 once PyTorch is upgraded, and a loop guard (length cap, repetition check, retry) for TeleOCR.
- Real, redacted paperwork from a partner, with their permission.
- Field extraction into a spreadsheet, with a confidence flag on anything a person should check.

The book behind the lab
Get the book today: learn Gaussian splatting and apply it to real projects.
People keep asking how we build what you see here. The book walks students, educators and practitioners from a drone clip to a measured 3D in the browser, with hands-on labs and the code.
Launch price until 3 December.
Teaching a course (Level 5, Level 6 and up)? Email junaid.malik@simamdigital.com about a class discount.
Next experiment
Flat video turned into 3D live, on one graphics card →
Want this for your data?