truecopy1.0.0

Live demo

Drop a document. See what the reading decides.

This page runs the library itself — the same code npm install truecopy gives you. Your file is read in this tab and never uploaded: there is no server on the other end of it.

A PDF, or a table pasted out of one — a .csv, a .tsv, a.txt. Both take the same road: the file becomes a document, the document gets cut into columns, and the cut reports what it could not vouch for.

Drop a PDF, CSV or pasted table here

or

Nothing is uploaded. Open your network tab and check — that is the point of a local-first reader.

A sample statement, read by this page. Drop a file above to read your own.

6 rows, nothing to flag
sample-statement.pdf
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,62

What 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 });

Quickstart ·explainDocument

What you are looking at

The block above is explainDocument: where the reading cut the page into columns, what share of rows each column actually fills, and the rows themselves.

Underneath is the part that makes this library different from an extractor: what the reading could not vouch for. An empty list there 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 is only recognisable 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.