This page's code did not start.

Opening index.html directly from a folder blocks JavaScript modules, so nothing will happen when you choose receipt or invoice photos. Serve the folder over http instead:

powershell -ExecutionPolicy Bypass -File serve.ps1

Then open http://localhost:8080/.

Receipt & Invoice Extractor — photos to a report you review

Read the photos, check the fields and crops, then email compressed images with each amount and the totals.

Language: English
View source
Your photos are read on this device. Online rates are optional. You choose what to email or share.

The photographs are decoded and read on this device. The OCR engine and English language data come with the page, and no photograph or extracted field is uploaded for OCR. Manual exchange rates, copying the report and downloads are local too. Only pressing Get historical rate contacts Frankfurter with the two currency codes and the chosen date. That service sees the request and your IP address, but receives no image, amount, OCR text, filename or email address. Email and sharing are your next step: pressing those buttons hands the report, or the files you choose to share, to an app on your device. You choose the recipient, review what goes with it, and send it yourself.

Live check: checking…

Offline: checking…

Open DevTools and watch Network while reading a photograph. The page may load its own OCR assets, but no request carries your picture, filename, merchant or amount. Once the page is cached, repeat with the network disconnected with manual rates. Press Get historical rate to see a request to api.frankfurter.dev containing only currency codes and the chosen date. Sending an email later uses your email app's connection.

1 Add receipt or invoice pictures

One document per picture. Add up to 20 JPEG, PNG, WebP or AVIF images, 20 MB each. English text is read on this device, using an OCR engine included with the page. AVIF pictures use your browser’s decoder.

Keep the whole document in view, upright and in good light. For HEIC pictures, use HEIC to JPG first. PDFs and handwritten receipts are not supported.

2 Check each document

Check the crop and make sure the attachment is readable. OCR can misread digits or pick the wrong total: compare each suggestion with the picture, correct the fields, choose the final email currency and review its exchange rate, then tick “I checked this document”. Each picture counts as one document; adding it twice counts it twice.

OCR, cropping and manual conversion stay on this device. Historical rate lookup is optional and starts only when you press “Get historical rate”. It sends the two currency codes and receipt date to Frankfurter, which also sees your IP address. Your pictures, merchants, amounts and receipt numbers stay on this device.

Custom final currency code The default is the most common document currency; ties use the first one encountered. A currency you choose manually stays selected.

Choose one final currency for the email grand total. Every document uses this choice; changing it here or on a document updates the whole batch and clears rates and confirmations.

Your pictures and editable details will appear here.

3 Totals and email

Totals include checked documents only. Original amounts remain grouped by currency; a bare $ does not tell us which dollar you mean. Each checked document also contributes its converted amount to one grand total in your final email currency. Converted amounts are rounded individually to two decimal places.

Every email export includes the cropped, compressed JPEG copies. “Email with images” opens your device’s share sheet when it supports files; choose your email app and enter the recipient there. Otherwise it downloads an email file containing the report and attached images. Open that .eml file in a compatible email app to compose, forward or resend it; draft support varies by app. The recipient above is used in the email file. You review and send the email yourself.

The ZIP contains the prepared JPEG images and CSV for attaching manually. Pictures are resized to at most 1,600 pixels on the longest edge, with a target of 350 KB each; actual size is shown below each preview. Check small print before sending. Originals stay unchanged, and processing stays on this device.

Documents0
Checked0
Need review0
Grand total in final email currency—

Checked documents only.

View as Markdown

How to extract receipt and invoice details from photos

  1. Choose clear photos. Add up to 20 JPEG, PNG, WebP or AVIF pictures, each at most 20 MB. Use one receipt or invoice per picture. English printed text is the supported OCR language. Photograph the whole document in even light, with the text upright and sharp.
  2. Read, crop and compare. Run OCR, then inspect each photo beside its suggested fields and raw text. Rotate a sideways image and read it again if needed. Adjust the crop so all document edges and text remain inside it, then reread that crop. Correct the merchant, date, reference, currency and total. A merchant or reference can stay blank when it cannot be read reliably. In particular, distinguish the final total from a subtotal, discount, cash tendered, change, tax amount or remaining balance.
  3. Confirm each document.Check the fields, crop and conversion. Choose the currency printed on the document, then one final email currency shared by every document. Enter each exchange rate manually, or choose Online and press Get historical rate after checking the receipt date. The direction is shown as one unit of the document currency in the final currency. Same-currency documents use a rate of one. Only confirmed converted amounts enter the grand total. Remove duplicate photos before counting a receipt twice.
  4. Take the report into your app. Check the prepared JPEG previews and sizes. Use Email with images to choose your email app where supported, or download the email file with the report and JPEG attachments. Review and send the message yourself. If your app cannot open the email file, download and extract the ZIP, then attach its images and CSV in a new message.

The longer version

Extract receipt and invoice details from photos How to check receipt OCR and crops, choose one email currency and manual or historical rates, then email compressed images with each converted value, the document count and a grand total.

Questions

Will it read every receipt or invoice correctly?

No. OCR can mistake a digit or miss faint printing, tiny text or a stylized business logo. The parser avoids discount and tendered-total labels, but it cannot use a label OCR did not read. Merchant and reference fields can stay blank when there is no reliable candidate. Compare every suggestion with the photo and confirm each document yourself before exporting it. This tool does not extract line items or prove that an invoice's arithmetic is correct.

Can one picture contain several receipts?

Use one receipt or invoice per picture. The tool treats each image as one document and does not split a receipt collection or template sheet. Add a separate picture or crop for each document, with its identifying details and final amount visible. Otherwise text from different receipts can be mixed into one suggestion.

How are dates and currency symbols interpreted?

The document date stays as printed. For an online exchange rate, check it and choose the date in the separate conversion-date field; a date such as 24/09/2018 is not automatically converted there. A pound sign suggests GBP. A dollar sign alone leaves the currency for you to choose, because it can mean USD, CAD, AUD or another dollar currency. Check every suggested code against the document.

Which files and languages can it read?

JPEG, PNG, WebP and AVIF photographs, up to 20 in a batch and 20 MB per file. The included OCR model reads English printed text. Other scripts, handwriting, PDFs and HEIC files are not supported inputs here. For an iPhone HEIC photo, first make a JPEG with the device's photo app or the HEIC converter on this site.

What do the count and totals mean?

Each photo counts as one document. Every document shows its original amount and its converted value in the same final email currency. The grand total adds the checked converted values, each rounded to two decimal places, and the report also keeps the original currency totals. Email and attachment downloads require every document to be checked. Duplicate photos count twice unless you remove one.

Does the email button send anything automatically?

No. Where supported, it offers the report and compressed JPEG copies through the device's share sheet; choose your email app there. Otherwise it downloads an email file containing the report and attachments. Review the recipient, contents and attachments, then send it yourself. The page cannot tell whether your email app accepted them or whether you eventually sent the message.

Are the cropped images attached to the email file?

Yes. The downloaded .eml file contains the report and every prepared JPEG as an attachment. Compatible apps open it as a draft; others may open it as a message that needs Forward or Resend. Your original photos are unchanged and are not attached. The ZIP download contains the same JPEGs and CSV if you need to attach them manually. No browser can guarantee that every email app will accept a draft file or a share-sheet handoff.

How is the default email currency chosen?

Each document with a valid currency code has one vote. The most common code becomes the final email currency; ties use the first occurrence in the current document order. Missing or incomplete codes are ignored. Reading, correcting or removing documents updates the default. Choosing a final currency manually keeps your choice. Use default currency restores the automatic choice. A changed final currency clears previous exchange rates and confirmations.

Can I choose a currency that is not in the list?

Yes. Choose Custom and enter a three-letter code for the document or final email currency. Changing the final currency updates every document and clears their prior rates and checks. Online coverage depends on the currency pair and date. If no historical rate is available, enter a rate manually; no latest rate is substituted.

Are my photos uploaded for OCR?

No. Tesseract reads them inside your browser using the English data that ships with the page. Copying and downloading are local actions. Choosing email or device sharing intentionally passes the selected information to another app, which handles any later delivery.

Why can a very detailed photo still give a poor result?

Glare, blur, folds and a distant page can hide letters even in a large image. OCR enlarges small crops by up to three times and adds a narrow white border, keeping the working copy within 2400 pixels on its longest side. This can help the engine read small lettering, but cannot restore detail missing from the photo. Fill the frame with one document, keep the print sharp and evenly lit, and rotate a sideways page before reading it again. The original and email attachment are not enlarged for OCR.

Does it work offline?

Reading, editing, cropping, manual conversion, counting, JPEG preparation and downloads work after the page and OCR assets have been cached. Online historical-rate lookup needs a connection; a rate already fetched remains available in the open tab. Opening a draft can work offline, but delivering email normally requires your app's connection.

How do historical rates use the receipt date?

Check the receipt's printed date and enter it in the conversion date field. Ambiguous dates are not guessed. Choose Online and press Get historical rate. The result names its actual observation date, which may be earlier than the requested date when no rate was published. Compare it before confirming. You can instead enter a separate manual rate for every document. The email records the rate, source and date used for each converted value.