Image-to-Text (OCR)
LightOnOCR-3 API for scans, tables and charts
No credit card · Free credits valid for 30 days · Then top up and pay as you go, no subscription
LightOnOCR-3-4B
Image-to-Text (OCR)
Markdown returned by the API
# INVOICE No. 2026/11/0457
## Seller:
Nordwind Tools GmbH
Hafenstraße 12, 20457 Hamburg
VAT ID: DE 298 114 551
Issue date: 2026-11-02
## Buyer:
Kowalski & Syn sp. z o.o.
ul. Żółkiewskiego 7/3, 31-539 Kraków
NIP: 676-25-81-904
Due date: 2026-11-30
<table>
<thead>
<tr>
<th>#</th>
<th>Item</th>
<th>Qty</th>
<th>Unit price (EUR)</th>
<th>VAT</th>
<th>Net (EUR)</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Torque wrench TW-40, 1/2"</td>
<td>12</td>
<td>84.50</td>
<td>0%</td>
<td>1,014.00</td>
</tr>
<tr>
<td>2</td>
<td>Socket set S-94 (94 pcs)</td>
<td>5</td>
<td>129.00</td>
<td>0%</td>
<td>645.00</td>
</tr>
<tr>
<td>3</td>
<td>Shipping DHL Freight</td>
<td>1</td>
<td>48.90</td>
<td>0%</td>
<td>48.90</td>
</tr>
</tbody>
</table>
Total net: **1,707.90 EUR**
Reverse charge, Art. 196 Directive 2006/112/EC
What goes in, what comes back
Output
# Quarterly API requests (millions)

Source: internal dashboard, 2026.
## Data Table
<table>
<thead>
<tr>
<th>Quarter</th>
<th>API Requests (millions)</th>
</tr>
</thead>
<tbody>
<tr>
<td>Q1</td>
<td>8.0</td>
</tr>
<tr>
<td>Q2</td>
<td>14.0</td>
</tr>
<tr>
<td>Q3</td>
<td>20.5</td>
</tr>
<tr>
<td>Q4</td>
<td>27.5</td>
</tr>
</tbody>
</table>
Output
## 2.1 Loss function
We minimise the cross-entropy over the vocabulary $V$ :
$$
L(\theta) = -\Sigma_{t=1}^{T} \log p_{\theta}(y_t \mid y_{<t}, x)
$$
where $x$ is the image and $T$ the length of the target sequence.
Output
# Instrukcja obsługi / Bedienungsanleitung / 取扱説明書
Przed pierwszym użyciem naładuj akumulator do pełna. Nie zostawiaj ładowarki podłączonej dłużej niż 12 godzin.
Vor dem ersten Gebrauch den Akku vollständig aufladen. Das Ladegerät nicht länger als 12 Stunden angeschlossen lassen.
初めてご使用になる前に、バッテリーを完全に充電してください。充電器を12時間以上接続したままにしないでください。
Antes del primer uso, cargue la batería por completo. No deje el cargador conectado más de 12 horas.
LightOnOCR-3 API pricing
| Image | Price | Images for $5 |
|---|---|---|
| A4 page at 2048 px (1448 × 2048) | $0.025 | ≈ 196 |
| A4 page at 1024 px (724 × 1024) | $0.0067 | ≈ 746 |
| Square image, 1024 × 1024 | $0.0093 | ≈ 538 |
| Screenshot, 1920 × 1080 | $0.018 | ≈ 279 |
LightOnOCR-3-4B or Nanonets-OCR-s
| LightOnOCR-3-4B | Nanonets-OCR-s | |
|---|---|---|
| Model ID | LightOnOcr_3_4B_Q8 |
Nanonets_Ocr_S_F16 |
| Built on | Qwen3.5 vision-language architecture, 4B | Fine-tuned from Qwen2.5-VL-3B-Instruct |
| Price | $0.0093 at 1024 × 1024 | $0.0093 at 1024 × 1024 |
| Bar chart (test above) | Table with all four values | Source line only |
| Invoice photo (hero image) | Every field in page order, Polish diacritics intact | No invoice number, "Żółkiewskiego" read as "Zólkiewskiego", totals before the table |
LightOnOCR-3 API example
- Endpoint
- Model ID
- Input
- Output
- Price quote
curl -X POST 'https://api.deapi.ai/api/v2/images/ocr' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Accept: application/json' \
-F 'model=LightOnOcr_3_4B_Q8' \
-F 'return_result_in_response=true' \
-F '[email protected]'
import time, requests
API = "https://api.deapi.ai/api/v2"
HEADERS = {"Authorization": "Bearer YOUR_API_KEY", "Accept": "application/json"}
with open("invoice.jpg", "rb") as f:
job = requests.post(f"{API}/images/ocr", headers=HEADERS,
data={"model": "LightOnOcr_3_4B_Q8", "return_result_in_response": "true"},
files={"image": f}).json()["data"]
while True:
status = requests.get(f"{API}/jobs/{job['request_id']}", headers=HEADERS).json()["data"]
if status["status"] in ("done", "error"):
break
time.sleep(2)
print(status.get("result")) # the Markdown
What is LightOnOCR-3?
-
Create a free account
-
Copy your API key
-
Send an image
LightOnOCR-3 API FAQ
Read your first 196 pages with $5 of free credits
Sign up with e-mail or Google. No credit card, no subscription.