filetity

RECEIPT PHOTOS -> CSV · Local tool

Receipt Scanner

Read merchant, date, total and tax off photos of receipts into one CSV, every field a guess you can check.

Last updated

How do I scan receipts into a spreadsheet without uploading them?

filetity's receipt scanner reads photos of receipts with an OCR engine that runs inside your browser, then pulls out the merchant, the date, the total and the tax and writes one CSV row per receipt. Nothing is uploaded and there is no account. Every extracted value is shown as a guess, in an editable box, with the rule that chose it written underneath and the full recognised text beside it, so a misread digit can be caught before it reaches your accounts. A field the rules cannot find is left empty rather than set to zero. Drop several photos together for one CSV covering all of them.

  1. 01 / Your device

    the file stays here

  2. 02 / Browser memory

    the work runs locally

  3. 03 / Back to you

    saved on this device

When you would use this

Situations, not settings.

An expense claim due on Friday and a wallet full of paper
Photograph the lot, drop the photos in together, and get one CSV with a row per receipt. Fix the guesses the page flags before you send it, not after finance does.
A VAT return that needs the tax figure, not the total
Fuel and hardware receipts print a VAT line most tools ignore. It comes out as its own column, and a receipt that prints none leaves the cell blank instead of claiming zero.
Splitting a trip's costs with people who want to see the receipts
Each row carries the file name, so the CSV points back to the photo behind every number. The recognised text stays on the page for anyone who wants to check a line.

How it works / no cloud

A conversion engine, not an upload form.

The same OCR engine as the image to text tool reads each photo on your device, about 9 MB downloaded once. A set of rules then looks through the lines it read: the total is the last line that says total, amount due or balance due, never the biggest number on the page, because on a real till roll the biggest number is usually the cash handed over or the subtotal before a discount. Tax comes from a line saying VAT, tax or GST, and two GST lines are added together. The date is read in the common printed forms and left exactly as printed when 03/04 could be two different days. Every field is shown next to the rule that chose it and next to the full text the engine read, and a field the rules could not find is left blank with the reason, not set to zero.

  • Offline ready
  • Installable app
  • No file limit queue

Straight answers

No accordion. Nothing hidden.

Is it free?
Yes, with no watermark and no page limit.
Does it need an account?
No. There is no account system.
Is my file processed on my device?
Yes. The file is read by your browser and never uploaded. There is no server to send it to.
What formats are supported?
PNG, JPG or WebP photos of receipts in, several at once. One CSV row per receipt out, with the text the engine read shown beside every row.
What are the limits?
Printed receipts in Latin alphabets, with the total labelled in English, German, French, Spanish or Italian. Handwritten receipts and other scripts come back with blank fields and the reason. The total is a guess from the words on the receipt and can be wrong when a till labels it unusually, so it is presented for checking and never as a fact. A receipt printed in one currency and paid in another is read as printed.
Does it work on mobile?
Yes, on any modern mobile browser. Large files are limited by the memory the phone gives the browser.
Does it work offline?
Yes, after the first use. The OCR engine downloads once and your browser keeps it, so later visits work with no network connection.
Will it get the total right?
Usually, and the page is built for the times it does not. The rule is to take the last line that says total, amount due or balance due, which handles a subtotal before a discount, the cash you handed over and a savings line, all of which are bigger than the total on a normal till roll. It goes wrong when OCR misreads a digit, when a receipt labels its total with a word the rules do not know, or when a card slip and a check are in one photo with a tip added on the slip. That is why the total is an editable box with its reason underneath and the full text beside it, and why a receipt with no line saying total gets an empty box rather than a guess.
Why is a field blank instead of a number?
Because nothing on the receipt matched the rule for that field, and a blank is the honest answer. A zero would look like a real amount in a spreadsheet and get summed. Tax is blank on most supermarket and card slips, which print no tax line at all. A date is blank when it is not in one of the printed forms the rules read, and a currency is blank when the receipt prints no sign or code, which is most UK till rolls. Type the value in from the text on the right and it goes into the CSV as you wrote it.
Can I do a whole envelope of receipts at once?
Yes. Drop every photo in together and each one becomes a row in the same CSV, with the file name in the first column so a row can be traced back to its picture. Each receipt is read in turn and the page says which one it is on. The engine takes a few seconds per photo on a laptop and longer on a phone, and the time is spent reading, not uploading, since nothing leaves the device.
What goes into the CSV?
Six columns: file, merchant, date, total, tax and currency, one row per receipt, in the order the photos were dropped. Amounts are written as plain numbers so a spreadsheet sums them. Dates are written as year, month, day when the receipt printed them without ambiguity and exactly as printed otherwise. A merchant name that starts with an equals sign or a plus is written with a leading apostrophe so a spreadsheet shows it as text instead of running it as a formula.

Keep working locally

7 available · more coming