Live demo
Drop a document. See what the reading decides.
This page runs the library itself, the same code that npm install truecopy installs. Your file is read in this tab. It is never uploaded, and no server receives it.
It reads a PDF, or a table pasted out of one and saved as .csv, .tsv or .txt. Both go through the same steps. The file becomes a document, the document is cut into columns, and the cut reports what it could not vouch for.
Nothing is uploaded. Open your network tab and check.
Drop a PDF, CSV or pasted table here
or
This page has read a sample statement. Choose a file at the top of the page to read your own.
truecopy - sample-statement.pdf
pdf, 1 page(s), 6 row(s)
page 1 - cut at 100, 290
3 column(s), 6 row(s)
col kind filled role
0 - 83% -
1 - 100% -
2 - 100% -
1 02/05/2026 | CARTE AMAZON EU SARL | 12,40
2 03/05/2026 | VIR SEPA LOYER MAI | 750,00
3 05/05/2026 | CARTE SNCF CONNECT | 68,00
4 09/05/2026 | PRLV EDF | 91,32
5 12/05/2026 | CARTE LE BOULANGER | 7,90
6 | TOTAL DES DEBITS | 929,62What it cannot vouch for
- Nothing looked wrong from the shape of this page, which is not the same as "this reading is right".
The same thing, in your code
import { readTable } from 'truecopy';
const { rows, warnings } =
await readTable(file, { workerSrc });What you are looking at
The panel headed by the file name is the output of explainDocument. It shows where the reading cut the page into columns, what share of rows each column actually fills, and the rows themselves.
The card "What it cannot vouch for" lists what the reading could not vouch for. That list is what makes this library different from an extractor. An empty list is not a promise that the reading is right. It means nothing looked wrong from the shape of the page.
kind and role come back empty on purpose. This demo names no kinds, no thresholds and no roles, so it knows nothing at all about your document. That is also why no row is marked. A total can only be recognised once the table's own shape has been described. The tutorial is where you say what a date and an amount are, and the reading starts checking itself.