The test set

A number on a product page is worth nothing if nobody can check it. This is everything needed to check the ones on the Tablecut page.

What it is measured against

Twenty public documents, none of them ours: US tax forms and tax tables, four research papers, a commercial invoice template, and bank statements published by the banks and public bodies themselves — among them a Société Générale relevé de compte specimen in French, the Banco de Portugal official example, and real Brazilian statements published by the Paraná state treasury. One of them is a scan with no text in it, on purpose: the right answer there is to refuse it, not to invent rows.

The last measurement

measureresult
rows with the columns separated90.3% of 916 rows
cells still holding two numbers1.8% of 4 542 cells
cells with letters broken apart0.7%
scanned documentrefused, which is correct

Per document, in full: medicao.json. The bad numbers are in there too.

Repeat it

sh buscar.sh ./pdfs            # downloads the twenty documents
npm install playwright
node banco.js ./pdfs path/to/app.html run1

It opens the real tool in a real browser, drops each PDF in, and measures what comes out. celulas.js does the other check: it runs two versions side by side and compares every cell of text, in reading order, so a change meant to alter the layout cannot quietly lose content.

The files

Some of those addresses will die with time. One that fails does not invalidate the others; it invalidates comparing against older measurements, and that should be said out loud.