Agentic OCR that turns paper into spreadsheets
A PDF, a photograph, a bad scan. Every table and the detail around it, into a working Excel file — with the totals checked by running the arithmetic.
- OCR the page and find its tables
- Import each into a named sheet
- Check every total
Worked it out · checked four column totals
const d = sheets['Revenue'].col('D');
log(round(d.reduce((a, b) => a + b)));Three of the four quarterly totals reconcile. Revenue!D7 prints 23,750 where the column adds up to 24,750 — I kept the page's figure and flagged it.
Ask Rowbot for a change…
| Row | Region | Q1 | Q2 | Q3 | Q4 |
|---|---|---|---|---|---|
| 2 | North America | 12,430 | 13,905 | 8,200 | 16,880 |
| 3 | EMEA | 8,120 | 8,640 | 6,300 | 10,050 |
| 4 | APAC | 5,600 | 6,215 | 4,400 | 7,995 |
| 5 | LATAM | 2,310 | 2,480 | 2,200 | 2,910 |
| 6 | UK & Ireland | 4,870 | 5,120 | 3,650 | 6,240 |
| 7 | Total | 33,330 | 36,360 | 23,750 | 44,075 |
The page printed 23,750, but D2:D6 adds up to 24,750. Kept the page's figure and flagged it.
Meridian Group — Global Sales Ledger
Fiscal year 2025. All revenue in USD, thousands.
Table 1. Revenue by Region
| Region | Q1 | Q2 | Q3 | Q4 |
|---|---|---|---|---|
| North America | 12,430 | 13,905 | 8,200 | 16,880 |
| EMEA | 8,120 | 8,640 | 6,300 | 10,050 |
| APAC | 5,600 | 6,215 | 4,400 | 7,995 |
| LATAM | 2,310 | 2,480 | 2,200 | 2,910 |
| UK & Ireland | 4,870 | 5,120 | 3,650 | 6,240 |
| Total | 33,330 | 36,360 | 23,750 | 44,075 |
Made for bad scans
A photograph, a fax, a page that has been through the copier twice. Merged headers and spans survive, right-to-left tables stay the right way round, and every cell carries how sure the reader was.
Checks the sums by running them
It writes the arithmetic as code and executes it, so a total that does not reconcile is caught by a computer rather than guessed at — and you can read the code it ran.
Every figure traceable
Click a number and the page it came from opens beneath the sheet with that figure marked. Nothing in the workbook is further than one click from the paper.