What the JSON file contains
The file describes a document made of pages, one for each image you added, in the order you put them. Every page carries the same basics, and extra detail depends on the mode it was read in:
- Every page: its title (taken from the file name), the mode it was read in, and its text.
- Table pages: the rows of the table, each a list of cells, matching the grid you see in the editor.
- Receipt and invoice pages: a list of fields, each with a key, a readable label and a value, plus a list of line items.
- Code pages: the programming language label, such as Python or SQL, when one was recognized.
The export uses the result as you left it in the editor, so corrections you make before downloading end up in the file.
A trimmed example from a receipt
Here’s what a page read in Receipt mode looks like, shortened to a few fields and items:
{
"title": "lunch-receipt",
"createdAt": "2026-10-03T12:30:00.000Z",
"pages": [
{
"title": "lunch-receipt",
"mode": "receipt",
"text": "Corner Cafe\n2 Flat white 3.50 7.00\n...",
"receipt": {
"kind": "receipt",
"currency": "USD",
"fields": [
{ "key": "merchant", "label": "Business", "value": "Corner Cafe" },
{ "key": "date", "label": "Date", "value": "03/14/2026" },
{ "key": "tax", "label": "Tax", "value": "1.12" },
{ "key": "total", "label": "Total", "value": "15.12" }
],
"items": [
{ "description": "Flat white", "qty": "2", "unitPrice": "3.50", "amount": "7.00" },
{ "description": "Chicken wrap", "qty": "1", "unitPrice": "7.00", "amount": "7.00" }
]
}
}
]
}
The quickest way to see the complete structure is to read the sample receipt on this page and download it as JSON.
Where image to JSON is useful
- Expense pipelines. Read a batch of receipts, review them, export one JSON file, and let your own script move dates and totals into a ledger or spreadsheet. The receipt OCR page has tips for getting clean receipt photos.
- Data entry. When values from printed forms, price lists or invoices have to go into another system, named fields are easier to map than a block of text.
- Test data. Developers building a feature that handles receipts, tables or scanned text can use real OCR output, including its realistic mistakes, as fixtures for parsers and validation code.
- Archiving with structure. Keeping the mode and fields alongside the text makes old scans easier to process again later.
If what you need is rows and columns in a spreadsheet, image to Excel gets you there with fewer steps.
Handling the values in your code
Values are kept as the text that was read, exactly as printed, rather than converted into numbers or dates. A date might be 03/14/2026 or 14.03.2026, and an amount might be 1,250.00 or 1.250,00, depending on where the receipt came from. Parse them with the formats you expect, and flag anything that doesn’t fit for a person to check.
Don’t assume every field is present either. A receipt without a tip line has no tip, and a faded receipt may be missing a date. Using the key rather than the position in the list keeps your code working when fields are absent.
It’s also worth checking totals in code: line item amounts should add up to the subtotal, and subtotal plus tax, minus any discount, should match the total. A mismatch is a good sign that something was misread.
Processed in your browser, with no API
Reading happens in your browser, on your own device, using the open-source Tesseract engine. Images aren’t uploaded, and the JSON file is created on your device as well.
That also means there’s no API to call and no server endpoint to send images to. Image to JSON is a manual step: you add images, check the results and download the file. It fits jobs where a person reviews the data anyway, and it isn’t a way to process images automatically in the background. If you’re curious about what happens between the image and the text, how OCR works explains it.