sheetscope_
Invoice data extraction

Turn a stack of supplier invoices into one table you can query

Upload your invoice PDFs and scans, define the fields you need, and every vendor’s layout comes back as the same columns, ready to review, query, or hand to accounting.

sources 3 documents
PDF northwind-2041.pdf

Northwind Supply Co.

INV-2041$1,240.00
PDF acme-logistics-jul.pdf 4 pages

Acme Logistics LLC

INV-2042$3,980.50
PNG meridian-print.png scanned

Meridian Print

INV-2044$1,015.00
[1] SQL
invoice_line_item
Run
1
SELECT vendor_name, sum(line_total) AS spend FROM "invoice_line_item" GROUP BY 1 ORDER BY 2 DESC;
4 rows · 5 cols · 212 ms
↓ export
#invoice_numberinvoice_datevendor_nameline_descriptionline_total
1INV-20412026-06-03Northwind Supply Co.Corrugated mailers, 12x9640.00
2INV-20412026-06-03Northwind Supply Co.Pallet freight600.00
3INV-20422026-06-08Acme Logistics LLCLTL haul, Reno → Sparks3980.50
4INV-20442026-06-12Meridian PrintTrade show banners (4)1015.00
PDF IN, ROW OUT

One invoice in, the columns you asked for out

Your vendors don’t agree on a layout. A ruled line grid, a paragraph and a phone photo all come back as the same fields, because the schema is yours rather than theirs.

PDF invoice_0342.pdf

Acme Supply

INV-0342$4,182.17
extract
invoice_numbervendor_nameinvoice_datepurchase_ordertotal
INV-0342Acme Supply2026-08-04PO-99124182.17

Different layouts. Same schema.

One vendor

a ruled line grid

Invoice #
INV-0341
Date
2026-06-03
Total
1,240.00

Another vendor

prose, no table at all

Invoice INV-0342 was issued on 8 June 2026. The amount now due is $3,980.50, payable net 30.

A third vendor

a photo of a paper invoice

I N V O I C E

INV-0343

12/06/2026

TOTAL 1,015.00

WHAT CHANGES

Three things you stop doing by hand

Process vendor invoices

Turn everything that arrived this month into one consistent dataset, whatever shape it arrived in.

See what you spend, by vendor

Group by vendor, filter by date, sum the line totals. The question you could not ask when it was a folder of PDFs.

Hand a clean file to accounting

Export the columns you defined as CSV or Excel, with no re-keying between the invoice and the system that pays it.

THE FIELDS ARE YOURS

You decide what a row is

The first group is the invoice schema the app starts you with, verbatim. The second is what this page’s examples add on top, and you define those yourself, in the same editor.

invoice_line_item: the starter schema in the app, verbatim

  • invoice_number string
  • invoice_date string
  • vendor_name string
  • line_description string
  • quantity number
  • unit_price number
  • line_total number
  • currency string

not in the schema: you define these yourself

  • purchase_order string
  • subtotal number
  • tax number
  • total number

the same invoices, one row each

The mock at the top of this page is one row per line. Drop the line fields from your schema and the same invoices come back as one row each: who billed you, when, against which PO. The field list is what decides.

invoice_numbervendor_nameinvoice_datepurchase_order
INV-2041Northwind Supply Co.2026-06-03PO-88214
INV-2042Acme Logistics LLC2026-06-08
INV-2044Meridian Print2026-06-12PO-88231
WHAT WE GET ASKED

Scans, odd layouts, missing POs

The parts of invoice processing that are actually hard.

My invoices are scans, not text PDFs.
Scans and phone photos are read before extraction, so a photographed invoice lands in the same columns as a born-digital one.
Every vendor’s invoice looks different.
The schema is what you define, not what the vendor prints. A ruled line grid and a paragraph both come back as invoice_number, vendor_name, line_total.
Invoices run to several pages.
A document is extracted whole, not page by page. Lines continued on page three land as rows under the same invoice_number.
Some invoices have no PO number.
A missing field comes back empty rather than guessed. Leave it out of required, and WHERE purchase_order IS NULL is your chase list.
Someone has to check these before we pay them.
Every row is traceable to the document it came from, and the whole result exports to CSV or Excel.

Other documents in the same pile

Stop copying invoice data by hand

Upload a few invoices and define the fields you need.