Image OCR that returns structured fields, not a wall of text
Run OCR on JPEG, PNG, and other images with space-ocr: built-in templates, line items, CSV/JSON export, and every value returned with its box and a match score.
Most image OCR hands you a wall of plain text and stops there. You snap a receipt, run it, and get back a blob of lines you still have to read, split, and retype into the right columns. The structure that was obvious to your eye on the page is gone.
space-ocr reads an image into structured fields instead — store name here, date there, total over there, line items as rows. And it returns every value with the exact spot on the image it was read from: a box you can see, plus a score for how well it matched the pixels. So you don't have to trust the extraction; you can look at the photo and check it.
See a real extraction you can check
This is one image — a photo of two receipts — read into fields. Hover any value below and the box on the image is exactly where it was read. Every number, box, and match score here comes straight from a real parsed result, not a mockup.

Each value with a box carries a verified on-page location — bbox + 4-point vertices + match_ratio — on a 0–1000 normalized grid (0,0 top-left → 1000,1000 bottom-right), the same shape the live API returns. Hover a field to trace it back to the pixels it came from.
How image OCR works in space-ocr
Send an image to /ocr/fields as a URL or as plain base64 — JPEG, PNG, GIF, BMP, TIFF, and WebP are all read directly. EXIF orientation is applied when the image loads, so the boxes you get back match the photo as displayed, even from a phone held at an angle.
You don't have to write a schema for common documents. Pass a built-in templateId like receipt or invoice, or define your own fields — including an array field whose children describe one line-item row. (PDFs go through the web app, which renders each page to an image first; the API itself reads images.)
curl -s https://api.space-ocr.com/ocr/fields \
-H "Authorization: Bearer $SPACE_OCR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"image": "https://example.com/receipt-photo.jpg",
"imageType": "url",
"templateId": "receipt"
}'How to OCR an image
- Send your imagePost a JPEG, PNG, GIF, BMP, TIFF, or WebP to /ocr/fields as a URL or plain base64, or drop it into the app. EXIF rotation is applied on load.
- Pick a template or fieldsPass a built-in templateId like 'receipt' or 'invoice', or supply your own fields — including an array field with children for line-item tables.
- Read the structured resultEach value returns with its bbox, vertices, match_ratio, and bbox_source, plus a field_bboxes map locating every field on the image.
- Verify anythingClick a value to highlight the exact region it was read from; a match_ratio below 0.85 flags a value worth a closer look. Edits are stored beside the original OCR value.
- Export or queryDownload CSV (UTF-8 BOM, line items unfolded) or query a stored sheet with GET /view using where, sort, and select — no re-OCR, no extra charge.
Simple, predictable pricing
Pay $0.05 per image (¥10 / ₩100), with a free tier of 100 scans a month and no credit card. Flat plans add monthly scans, more sheets, and storage.
What image formats can space-ocr OCR?
Does image OCR give me structured fields or just text?
Can I OCR a photo taken on my phone?
Does image OCR keep the location of each value?
How do I send the image to the API?
How much does image OCR cost?
Turn your own images into checkable data
Free tier — 100 scans a month, no credit card. Every value comes back with its on-image location.