space ocr
Field extraction API with built-in verification

Extract fields. Know what to review.

Schema-shaped JSON — source coordinates on every value, and a review list when something doesn't check out.

No templates. No training. No silent wrong numbers.

The console is your playground — drop a file, see the exact response the API returns.
actual POST /ocr/fields response shape
store_nameSupermarket ABC✓ verified
date2025-04-10✓ verified
items[0].price$1.99⚠ text_mismatch
total$4.94✓ verified
invoice_no⚠ missing
2 of 7 fields flagged for review

The whole integration is one POST

Name your fields in the request; typed JSON comes back with coordinates and flags on every value. This exact call runs as-is.

request
1
2
3
4
5
6
7
8
9
10
11
12
curl -X POST https://api.space-ocr.com/ocr/fields \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "image": "https://example.com/receipt.jpg",
    "imageType": "url",
    "fields": [
      { "name": "store_name" },
      { "name": "date" },
      { "name": "total", "required": true }
    ]
  }'
response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
  "status": "success",
  "data": {
    "values": {
      "store_name": "Supermarket ABC",
      "date": "2025-04-10",
      "total": "$4.94"
    },
    "cells": {
      "total": {
        "box": { "xmin": 380, "ymin": 720,
                 "xmax": 530, "ymax": 742 },
        "quad": [ /* 4 corners */ ],
        "verified": true,
        "review": null
      }
      // …store_name, date — same shape
    },
    "review": {
      "unit": "field", "declared": 3,
      "returned": 3, "boxed": 3, "verified": 3,
      "flagged": [], "by_reason": {}
    },
    "image": { "width": 1654, "height": 2339 }
  }
}

Any field you name

No training, no processor setup, no document-type registration.

Same answer next run

Same pages, three runs — 16 of 463 values moved.

Wrong values raise their hand

Every value carries coordinates and a flag — review the flags, not every field.

$0.05 per scan · failed scans are never charged · 100 pages free every month, no card required

The model never decides where a value is.

The five steps the pipeline runs on every call.

  1. 01

    Read the page with OCR

    OCR finds every character and where it sits — the only step that produces coordinates.

  2. 02

    The model extracts the values

    It reads the image and that text together, and pulls out the fields you asked for or the document's own structure. It never invents coordinates.

  3. 03

    Anchor every value

    Each value the model returns is anchored to the exact spot on the page where OCR read it.

  4. 04

    Cross-check the two

    Where they disagree, that spot is cropped and read once more — whatever still fails comes back flagged, with the reason attached.

  5. 05

    Return values with evidence

    Each value comes back with the bbox and vertices it was read from.

Measured side by side, on the same photos

Same images, same field schema, same grading script, three runs per engine. The raw responses and the grading code are public.

Side-by-side comparison of the same document: space ocr returns one coordinate box per value, the other engine returns one block for the whole table
The numbers below came from these exact photos — click one to swap the large view.
91.1% vs 70.0%Field accuracy over 463 fields — space ocr vs the OCR engine we measured against.
16 vs 100Values that changed when the same pages were run three times.
138 vs 1Coordinate boxes on the price sheet above — one per value, or one block for the whole table.

8 cases over 7 documents · 463 fields · 3 runs each · August 2026 — measured against Mistral Document AI.

Any document into data you can check

One API call turns a photo into data.

ImageImage
Item
Unit price
Shimaro-Yaka Toast (6 slices)
¥98
Toyama Preference Koshihikari Rice (5kg)
¥1,980
Calpis Soft Drink (800 g)
¥698
  • 01

    Silent mismatches get surfaced

    Every value is cross-checked against Vision OCR — uncertain ones return needs_review.

  • 02

    Coordinates as evidence

    Each value carries vertices pointing into the source image.

  • 03

    Structured JSON in one call

    Define fields once, get schema-shaped JSON back.

  • 04

    Ready the moment you sign up

    No SDK, just curl. 100 free pages monthly.

  • 05

    Async + signed webhooks

    /jobs polling · HMAC webhooks · OpenAPI 3.1.

  • 06

    No database to stand up

    Create a folder and a sheet, rows pile up, and /view pulls them back with filters.

Verification you can see and touch

The same checked values the API returns, in a screen built to read them: point at a value and the photo answers.

  • 01
    Drop the photos in

    No setup, no code. Drag a stack of photos into the browser and the rows fill themselves.

  • 02
    Point at a value, the photo answers

    Hover a cell and the exact region of the original lights up — and it works the other way too, from the photo back to the value.

  • 03
    Doubt is visible, not hidden

    Values that failed the cross-check stand out in colour instead of sitting quietly wrong, so you only review what deserves it.

  • 04
    Fix it where you found it

    Correct a value with the original right beside it. No second window, no hunting for the page it came from.

  • 05
    Take it with you

    Export a sheet as CSV that opens cleanly in Excel, or a doc bundle as .md / .txt.

Three formats, and a place to keep them

Pick a format when you upload. What it reads stacks up in a folder, and you can query and search it from there.

POST /ocr/fields

Structured fields

Name the fields you want and get them typed, with line items unfolded. Rows stack into a sheet you can query and export as CSV.

POST /ocr/markdown

Markdown

Headings, paragraphs, lists and tables keep their structure — ready to drop into a doc site, a wiki, or an LLM context window.

POST /ocr/text

Plain text

The raw reading, paragraph by paragraph. The plainest way to index, search or diff a scan.

POST /create

Folders

Results stay in a folder you named. Folders nest, and sheets, document bundles and memos all live in them.

GET /view

Query

Pull the stacked rows back with filters. where · sort · select and pagination run on the server.

GET /space

Search

Walk the tree, or type once and everything matches: folder and file names, memo bodies, and the cell values read off the page.

Let an agent file it and fetch it

Connect one MCP server. Hand it photos and it creates the folders and sheets they call for, stacking each photo as a row, then pulls back only the rows you ask about later. The results stay there, so there is no database to stand up.

MCP endpointhttps://mcp.space-ocr.com/mcp
  • space_createCreate folders and sheets
  • space_uploadUpload photos as rows
  • space_viewQuery with filters
  • space_deleteDelete, after confirming

Anywhere that speaks MCP

ClaudeChatGPTPerplexityVS CodeCursor

Frequently asked questions

Services running on space ocr

CONNECTiON