Better Markdown than Mistral OCR 4.1, for 35% less
Turn PDFs and scanned pages into clean Markdown that keeps tables and reading order intact, ready for search and LLMs. SIE runs LightOnOCR-3, an open model built for documents, so you pay less per page.
LightOnOCR-3 on SIE
Table rows kept together| Characteristic | Specification | Method of analysis |
|---|---|---|
| Al, as Methomyl | 87.5 - 92.5 % | High Performance Liquid Chromatography |
| pH (1 % in water) | 4.0 - 8.0 | pH-meter |
| Appearance | White to cream powder | Visual |
Mistral OCR 4.1 split this specification table into loose lists
Mistral OCR 4.1
Table rows flattened
CHARACTERISTIC
Al, as Methomyl pH (1 % in water) Appearance
SPECIFICATION
87.5 - 92.5 % 4.0 - 8.0 White to cream powder
METHOD OF ANALYSIS
High Performance Liquid Chromatography pH-meter Visual
Chunks split at these headings lose the table’s row associations.
- arXiv:2604.08538 Study of 14 document parsers on 2,000 business pages: none is consistently strong across all five areas it tests
ParseBench: A Document Parsing Benchmark for AI Agents
“no method is consistently strong across all five dimensions”
- Microsoft Foundry Blog Microsoft: when a model loses table structure, teams bolt on a layout parser
“When the model does not preserve table structure, you add a layout parser.”
Claude Sonnet 5.5 accuracy, 9x cheaper
1,366 page images from the public benchmark
- Checks
- 8,234 text, reading-order, table and math checks
- Prices
- Real-time list prices: SIE effective 2026-10-13, Mistral read 2026-10-10
Send a page image, get Markdown back
from urllib.request import urlopenfrom sie_sdk import SIEClientclient = SIEClient(api_key="API keysk-sie-…")image_bytes = urlopen(imagemethomyl-page.pngbrowse).read()image = {"data": image_bytes, "format": "png"}result = client.extract( "modellightonai/LightOnOCR-3-4B", {"id": "methomyl-page", "images": [image]}, instruction="instructiongrounding", options={"max_new_tokens": 12288, "temperature": 0.1, "top_p": 1},)print(result["entities"][0]["text"])import { unpackMessage } from '@superlinked/sie-sdk';
const imageResponse = await fetch("https://superlinked.com/reference/doc-to-markdown/methomyl-page.png");
if (!imageResponse.ok) throw new Error(`Image returned ${imageResponse.status}`);
const image = new Uint8Array(await imageResponse.arrayBuffer());
const response = await fetch("https://api.superlinked.com/v1/extract/lightonai%2FLightOnOCR-3-4B", {
method: 'POST',
headers: {
Authorization: "Bearer sk-sie-…",
'Content-Type': 'application/json',
Accept: 'application/msgpack',
},
body: JSON.stringify({
items: [{ id: "methomyl-page", images: [{ data: Buffer.from(image).toString('base64'), format: "png" }] }],
params: {"instruction":"grounding","options":{"max_new_tokens":12288,"temperature":0.1,"top_p":1}},
}),
});
if (!response.ok) throw new Error(`SIE returned ${response.status}`);
const result = unpackMessage<{ items: { id: string; entities: { text: string }[] }[] }>(
new Uint8Array(await response.arrayBuffer()),
);
const item = result.items[0];
if (result.items.length !== 1 || item?.id !== "methomyl-page" || !item.entities[0]?.text) {
throw new Error('Invalid OCR response');
}
console.log(item.entities[0].text);curl --fail --silent --show-error 'https://superlinked.com/reference/doc-to-markdown/methomyl-page.png' -o 'methomyl-page.png'
image_bytes=$(base64 < 'methomyl-page.png' | tr -d '\n')
curl https://api.superlinked.com/v1/extract/lightonai%2FLightOnOCR-3-4B \
-H "Authorization: Bearer sk-sie-…" \
-H "Content-Type: application/json" \
-d "{\"items\":[{\"id\":\"methomyl-page\",\"images\":[{\"data\":\"$image_bytes\",\"format\":\"png\"}]}],\"params\":{\"instruction\":\"grounding\",\"options\":{\"max_new_tokens\":12288,\"temperature\":0.1,\"top_p\":1}}}"Build the "Doc to Markdown" 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: lightonai/LightOnOCR-3-4B (SIE primitive: /extract). Keep the model id configurable.
Task
- Input: an uploaded image containing text.
- Behaviour: return the text visible in the image
- Fetch the unmodified PNG from https://superlinked.com/reference/doc-to-markdown/methomyl-page.png. Send one POST https://api.superlinked.com/v1/extract/lightonai%2FLightOnOCR-3-4B with item id "methomyl-page" and images [{data: original PNG bytes, format: "png"}]. Preserve params {"instruction":"grounding","options":{"max_new_tokens":12288,"temperature":0.1,"top_p":1}}; keep this model and profile selected and fail when unavailable instead of substituting another model. In Python use SIEClient.extract; TypeScript uses the native REST body and public unpackMessage decoder shown in Copy. Read the transcription from items[0].entities[0].text (Python single-item result["entities"][0]["text"]), without repairing or calculating source values.
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.METHOMYL 90 SP
| Characteristic | Specification | Method of analysis |
|---|---|---|
| Al, as Methomyl | 87.5 - 92.5 % | High Performance Liquid Chromatography |
| pH (1 % in water) | 4.0 - 8.0 | pH-meter |
| Appearance | White to cream powder | Visual |
Convert a million pages for $2,599
Serverless API
We host the models; you call one API.
- No idle GPUs, pay for what you use
- SOC 2 Type 2, US or EU data residency
- $50 of credit to start, no card required
Self-hosted (Kubernetes)
SIE in your clusters, backed by our engineers.
- Data stays in your own cloud account
- Same models and API as Serverless
- Terraform to your cloud in minutes
Run locally
The open-source server on your own machine.
docker run --gpus all -p 8080:8080 ghcr.io/superlinked/sie-server:latest-cuda12-sglang-vision-extract