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.
GLM-OCR on SIE
Every amount as printed
1 Nila Bakar/Goreng 27,500 1 Sop Gurame 87,000 1 Teh Poci 25,000
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
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
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
- arXiv:2605.22413 Study of 10,656 receipts: AI models change line-item prices to make the total add up
From Recognition to Reasoning: Benchmarking and Enhancing MLLMs on Real-World Receipt Document Understanding
“To force the sum of detail items to match the std_total, models occasionally alter the price of a line item”
- arXiv:2608.18586 CIKM 2026 Study of 13 AI models on handwriting: they may correct, complete or invent text instead of copying it
OmniHandwritingOCR: A Diagnostic Benchmark for Evaluating Multimodal LLMs in Handwritten OCR Scenarios
“models may correct, complete, or fabricate content rather than transcribe what is visually present”
93% cheaper than Mistral OCR 4.1 for every receipt and handwritten page
- 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 Pathfrom sie_sdk import SIEClientclient = 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.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
Serverless API
We host the models; you call one API.
- No idle GPUs, pay for what you use
- Fits your stack: SDK, API, CLI, MCP
- Self-host the same open-source engine
- SOC 2 Type 2, US or EU data residency
- Create an account to try Serverless
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
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