Most AI tasks no longer need a frontier model Read launch post

Read receipts and handwriting 93% cheaper than Mistral OCR 4.1

GLM‑OCR reads receipt and handwriting photos into text, keeping amounts, dates and names as written. SIE is the open-source inference engine that serves this document model.

GPT‑6 Luna and Mistral OCR 4.1 change and drop receipt amounts

GPT-6 Luna (max reasoning)

Amounts changed in 3 of 5 runs
Photo Faded receipt rows: 1 Nila Bakar/Goreng 27,500; 1 Sop Gurame 87,000; 1 Teh Poci 25,000
Full photo · NAVER Clova CC BY 4.0
Returned text
1 Nila Bakar/Goreng 77.500
1 Sop Durian 37.000
1 Teh Poci 25.000

Mistral OCR 4.1

5 of 7 amounts missing
Photo Receipt: Black Pepper Meatball Pas 79,000; Truffle Cream 77,000; Earl Grey Milk Tea 59,000; subtotal 215,000; service charge 12,900; tax 22,790; total 250,690
Full photo · NAVER Clova CC BY 4.0
Returned text
79,000
1 BLACK PEPPER MEATBALL PAS
1 TRUFFLE CREAM
1 EARL GREY MILK TEA
SUBTTL
Service Charge 6%
TAX 10%
TOTAL
250,690

Not in the reply: 77,000 · 59,000 · 215,000 · 12,900 · 22,790

93% cheaper than Mistral OCR 4.1 for every receipt and handwritten page

Photos read correctly
372 photos ↑
GPT-6.1 Sol (low reasoning)
GPT-6.1 Sol (low reasoning) 78.2%
Claude Sonnet 5.5
Claude Sonnet 5.5 78.0%
Claude Haiku 5.5
Claude Haiku 5.5 72.3%
GLM-OCR on SIE
GLM-OCR on SIE 71.0%
GPT-6 Luna (max reasoning)
GPT-6 Luna (max reasoning) 66.1%
Mistral OCR 4.1
Mistral OCR 4.1 62.1%
Cost per 1,000 photos
USD ↓
GLM-OCR on SIE
$0.25 GLM-OCR on SIE
Claude Haiku 5.5
$0.31 Claude Haiku 5.5
GPT-6 Luna (max reasoning)
$2.38 GPT-6 Luna (max reasoning)
Mistral OCR 4.1
Mistral OCR 4.1 $4.00
Claude Sonnet 5.5
Claude Sonnet 5.5 $6.40
GPT-6.1 Sol (low reasoning)
GPT-6.1 Sol (low reasoning) $6.63
Evaluation
Tested
Photo372: 200 receipt photos and 172 handwritten pages
Scored
Every line and every amount, date, name and number as written
Prices
Recorded API usage; Serverless and provider list prices

Send a photo, get its text back

from pathlib import Path
from sie_sdk import SIEClient
​
client = SIEClient(api_key="API keysk-sie-…")
​
image = {"data": Path(imagereceipt.jpgbrowse).read_bytes(), "format": "jpeg"}
result = client.extract(
"modelzai-org/GLM-OCR",
{"images": [image]},
)
print(result["entities"][0]["text"])
import { readFile } from 'node:fs/promises';
import { SIEClient } from '@superlinked/sie-sdk';

const client = new SIEClient(undefined, { apiKey: 'sk-sie-…' });

const image = await readFile("receipt.jpg");
const result = await client.extract(
  'zai-org/GLM-OCR',
  { images: [image] },
  { labels: [] },
);
console.log(result.entities[0].text);
images_bytes=$(base64 < 'receipt.jpg' | tr -d '\n')
curl https://api.superlinked.com/v1/extract/zai-org%2FGLM-OCR \
  -H "Authorization: Bearer sk-sie-…" \
  -H "Content-Type: application/json" \
  -d "{\"items\":[{\"images\":[{\"data\":\"$images_bytes\",\"format\":\"jpeg\"}]}]}"
Build the "OCR" capability into my app using the Superlinked Inference Engine (SIE).

Context
- SIE is an OpenAI-style inference API. Python SDK: `from sie_sdk import SIEClient`; TypeScript: `@superlinked/sie-sdk`.
- Base URL: https://api.superlinked.com (or my regional endpoint). Auth: Bearer key from env `SIE_API_KEY` (never hard-code it).
- Model: zai-org/GLM-OCR (SIE primitive: /extract). Keep the model id configurable.

Task
- Input: an uploaded image containing text.
- Behaviour: return the text visible in the image
- Call the selected SIE primitive once per request and map the response into your domain type.

Deliverables
- A typed client wrapper, an application-level function for this task, error handling for timeouts/empty input, and unit tests with a stubbed client.
- Wire it into my existing stack (ask me which framework if unclear) and add a short usage example.
Output
2 Ayam Bakar 55,000
2 Nasi Putih 20,000
1 Nila Bakar/Goreng 27,500
1 Sop Gurame 87,000
1 Teh Poci 25,000

SUBTOTAL 214,500
Service 12,870
Pajak Restoran 22,737

TOTAL 250,107

Read a million photos for $250

Self-hosted (Kubernetes)

Your data stays in your cloud, backed by our engineers.

  • Terraform modules for your cloud
  • Apache-2.0, same engine as Serverless
  • GPU workers scale to zero between jobs
  • Separate worker pools for each tenant
Agent prompt Deploy SIE to our AWS account with the superlinked/sie/aws Terraform module. Docs: superlinked.com/docs/deployment.Deploy SIE to our Google Cloud project with the superlinked/sie/google Terraform module. Docs: superlinked.com/docs/deployment.Deploy SIE to our Azure subscription with the superlinked/sie/azure Terraform module. Docs: superlinked.com/docs/deployment.Deploy SIE to our Alibaba Cloud account with the superlinked/sie/alicloud Terraform module. Docs: superlinked.com/docs/deployment.

Run locally

The open-source server on your own machine.

  • NVIDIA GPU
  • One container, no cluster
  • Process your data fully offline
  • Same SDK and model IDs as Serverless
docker run --gpus all -p 8080:8080 ghcr.io/superlinked/sie-server:latest-cuda12-sglang-vision-extract

Switch to SIE in 5 minutes

import base64
from mistralai.client import Mistral

image = base64.b64encode(open("receipt.jpg", "rb").read()).decode()
client = Mistral(api_key="…")
result = client.ocr.process(
    model="mistral-ocr-4-1",
    document={"type": "image_url", "image_url": f"data:image/jpeg;base64,{image}"},
)
print(result.pages[0].markdown)
import base64
from openai import OpenAI

image = base64.b64encode(open("receipt.jpg", "rb").read()).decode()
reply = OpenAI().responses.create(
    model="gpt-6-luna",
    input=[{"role": "user", "content": [
        {"type": "input_text", "text": "Transcribe all readable text in the image."},
        {"type": "input_image", "image_url": f"data:image/jpeg;base64,{image}"},
    ]}],
)
print(reply.output_text)
import base64
import anthropic

image = base64.b64encode(open("receipt.jpg", "rb").read()).decode()
reply = anthropic.Anthropic().messages.create(
    model="claude-haiku-5-5",
    max_tokens=4096,
    messages=[{"role": "user", "content": [
        {"type": "text", "text": "Transcribe all readable text in the image."},
        {"type": "image", "source": {
            "type": "base64", "media_type": "image/jpeg", "data": image,
        }},
    ]}],
)
print(reply.content[0].text)
SIE
from sie_sdk import SIEClient

client = SIEClient(api_key="sk-sie-…")
image = {"data": open("receipt.jpg", "rb").read(), "format": "jpeg"}
result = client.extract("zai-org/GLM-OCR", {"images": [image]})
print(result["entities"][0]["text"])
from sie_sdk import SIEClient

client = SIEClient(api_key="sk-sie-…")
image = {"data": open("receipt.jpg", "rb").read(), "format": "jpeg"}
result = client.extract("zai-org/GLM-OCR", {"images": [image]})
print(result["entities"][0]["text"])
from sie_sdk import SIEClient

client = SIEClient(api_key="sk-sie-…")
image = {"data": open("receipt.jpg", "rb").read(), "format": "jpeg"}
result = client.extract("zai-org/GLM-OCR", {"images": [image]})
print(result["entities"][0]["text"])

Contact us

Tell us about your use case and we'll get back to you shortly.

Apply for an inference grant

Free capacity on our hosted cluster for selected projects. Tell us what you run and we reply by email.