BLOG · PRODUCT UPDATES

By Vik Paruchuri 7 mins

Lite vs Azure, AWS and Google: 2x faster, 10x cheaper, as accurate

Datalab Lite returns text, tables, headings, reading order and layout boxes for $0.50 per 1,000 pages: 2x faster than Azure on long documents, 10x cheaper, and nearly as accurate. 20x to 30x cheaper than Google Document AI and AWS Textract.

If you parse documents for search or RAG, you parse every page you index. The layout APIs from Azure, Google and AWS charge $5 to $15 per 1,000 pages for that, so a 10-million-page archive costs $50,000 to $150,000 to parse once.

Datalab’s lite mode costs $0.50 per 1,000 pages. That 10-million-page archive costs $5,000. Each page comes back with its text, tables, headings, lists and reading order, and a layout box for every block.

Compared with Azure’s layout API, lite is:

  • 2x faster on long documents. A 50-page PDF takes 4.9 seconds, against 12.0 seconds for Azure.
  • 10x cheaper, and 20x to 30x cheaper than Google Document AI and AWS Textract.
  • Nearly as accurate: 78.2 overall, against 80.8 for Azure. Lite scores higher than Textract (71.9) and Google (65.1).

The free plan includes up to 40,000 lite pages a month on a work email. You don’t need a card.

Bar chart of OmniParseBench overall scores without math, with list price per 1,000 pages: Datalab lite 78.2 at $0.50, Azure Content Understanding layout 80.8 at $5.00, AWS Textract 71.9 at $15.00, Google Document AI Layout Parser 65.1 at $10.00. A 50-page PDF takes 4.9 seconds with lite and 12.0 seconds with Azure.
fig. 1 - OmniParseBench overall score on documents without math, with list price per 1,000 pages.

What you get back

Lite labels each block on the page: headings, paragraphs, lists, tables, headers and footers. Each block has a layout box, and the blocks come back in reading order. Tables keep their rows and columns. One request can return markdown, JSON and chunks for retrieval.

This is lite’s output on a page from a Berkshire Hathaway annual report:

A Berkshire Hathaway consolidated statement of earnings processed by lite mode, with heading, table, text and footer boxes drawn on the page, next to the markdown output with the headings and the first rows of the table.
fig. 2 - Lite API output on a financial statement: a box and label for every block, and the table as a table.

With the boxes, you can link an answer to the spot on the page it came from. Because the table keeps its structure, a RAG pipeline can retrieve a row together with its column headers.

The same request works on a scanned Korean letter:

A scanned Korean letter processed by lite mode, with block boxes and labels on the page, next to the Korean markdown output.
fig. 3 - Lite API output on a scanned Korean letter.

Price

Lite is $0.50 per 1,000 pages, with no tiers and no minimums. The cloud layout APIs list at $5 to $15:

Bar chart of list price per 1,000 pages: Datalab lite $0.50, Azure Content Understanding layout $5.00, Google Document AI Layout Parser $10.00, AWS Textract Tables + Layout $15.00.
fig. 4 - List price per 1,000 pages for structured output, US regions, October 26, 2026.
ServicePer 1,000 pagesPer million pages
Datalab lite$0.50$500
Azure Content Understanding, layout$5.00$5,000
Google Document AI, Layout Parser$10.00$10,000
AWS Textract, AnalyzeDocument (Tables + Layout)$15.00$15,000

At $500 per million pages, you can parse a whole archive. When you change your chunking or your schema, you can parse it again.

Sources: Datalab pricing, Azure retail prices (East US, Content Understanding async Standard content extraction), Google Document AI pricing and AWS Textract pricing (us-east-1, first million pages a month). List prices, before free tiers, commitments and taxes. The text-only OCR APIs from each cloud cost less, but return no tables or layout.

Accuracy

We ran lite and the three cloud APIs on OmniParseBench, our document parsing benchmark. To keep the comparison fair, we left out every math test for every system. That leaves 12,972 tests on 2,502 pages.

ParserPrice / 1,000 pagesOverallTextTablesLayout
Datalab lite$0.5078.269.574.290.7
Azure Content Understanding, layout$5.0080.868.081.792.8
AWS Textract, Tables + Layout$15.0071.957.675.882.2
Google Document AI, Layout Parser v1.0$10.0065.170.043.981.2

Lite scores less than 3 points below Azure overall, at a tenth of the price. On text, lite scores higher than Azure and Textract, and 0.5 points below Google. On tables, lite scores 74.2: 30 points above Google’s Layout Parser and 1.6 below Textract. Azure scores higher on tables and layout.

Multilingual documents

Most of the benchmark is English, so the average can hide a parser that fails on other scripts. OmniParseBench has 897 text tests in non-Latin scripts:

Bar chart of OmniParseBench text scores on 897 tests in non-Latin scripts: Datalab lite 76.3, Google Document AI Layout Parser 71.9, Azure Content Understanding layout 33.9, AWS Textract 2.5.
fig. 5 - Text tests in non-Latin scripts, 897 tests on 297 pages, without math.

Textract passes 2.5% of these tests, and Azure passes 33.9%. Lite passes 88% or more of the tests in Armenian, Ethiopic, Hebrew, Kannada, Lao and Telugu:

Share of OmniParseBench tests passed per script for lite, Azure, Textract and Google: Armenian 100, 0, 0, 48; Ethiopic 100, 0, 0, 95; Kannada 98, 0, 0, 98; Lao 88, 0, 0, 69; Telugu 91, 0, 0, 91; Hebrew 90, 40, 0, 60.
fig. 6 - Share of text and table tests passed, for six scripts. Every script is in the appendix.

If your documents come in many languages, you can send all of them to the same API.

Speed

We sent five PDFs, cut to each length, to lite and to Azure Layout. We ran four requests at a time and timed each request end to end:

Bar chart of median time per request by document length, lite vs Azure Content Understanding layout: 1 page 2.1 s vs 3.0 s, 10 pages 3.4 s vs 4.8 s, 50 pages 4.9 s vs 12.0 s.
fig. 7 - Median time per request, end to end, over 5 born-digital PDFs per length.
Document lengthLiteAzure layout
1 page2.1 s3.0 s
5 pages2.8 s4.3 s
10 pages3.4 s4.8 s
25 pages3.7 s7.5 s
50 pages4.9 s12.0 s

Lite is faster at every length. At 50 pages, it takes 4.9 seconds against Azure’s 12.0, so you can parse a long upload while the user waits.

What to build with it

Backfills are the first use. A million pages costs $500, so you can parse an archive and parse it again when your pipeline changes.

Search and RAG come next. Headings and tables give you better chunks, and the boxes let you cite the page.

Lite also fits inside a product. A 10-page document comes back in 3.4 seconds, so you can parse each upload before you route or extract from it.

Some documents need a stronger mode. Lite can lose the structure of tables with merged cells. It reads handwriting and degraded scans less accurately, and it doesn’t extract images. For these documents, use our fast, balanced or accurate modes.

Get started

Create an account, get an API key, and set mode to lite:

import os
import time
import requests

headers = {"X-Api-Key": os.environ["DATALAB_API_KEY"]}

with open("document.pdf", "rb") as document:
    response = requests.post(
        "https://www.datalab.to/api/v1/convert",
        headers=headers,
        files={"file": ("document.pdf", document, "application/pdf")},
        data={"mode": "lite", "output_format": "markdown,json,chunks"},
        timeout=60,
    )
response.raise_for_status()
submission = response.json()
if not submission.get("success", False):
    raise RuntimeError(submission.get("error", submission))

for _ in range(300):
    response = requests.get(
        submission["request_check_url"], headers=headers, timeout=60
    )
    response.raise_for_status()
    result = response.json()
    if result.get("status") in {"error", "failed"}:
        raise RuntimeError(result.get("error", result))
    if result.get("status") == "complete":
        if not result.get("success", False):
            raise RuntimeError(result.get("error", result))
        if result.get("result_url"):
            download = requests.get(result["result_url"], timeout=60)
            download.raise_for_status()
            result = download.json()
        print(result["markdown"])
        break
    time.sleep(2)
else:
    raise TimeoutError("Conversion did not complete during polling")

The free plan includes $20 of usage a month on a work email, or $10 on a personal email, with no card. On lite alone, that’s 40,000 or 20,000 pages a month. Other modes use the same allowance, which resets each month. See pricing.

If you have a large backfill, tell us about it.

Method

We used OmniParseBench dataset snapshot 961c0f89a2da701f5ce53afbd5e80aa469b0369a and scorer 1.0.0rc1+49f0c983509e. The snapshot has 16,288 tests on 2,937 pages. We left out the 3,316 tests tagged math for every system, and kept the other tests on those pages. That leaves 12,972 tests on 2,502 pages: 5,228 text, 5,382 table and 2,362 layout tests. The overall score is the mean of the text, table and layout scores, which is the benchmark’s headline number.

Lite is the production API with mode=lite, run on October 25, 2026. Azure is Content Understanding prebuilt-layout. Its results were saved on September 30 and October 6, 2026, and we rescored them with the same scorer. Textract is AnalyzeDocument with TABLES and LAYOUT in us-east-1. We converted 17 image files that Textract doesn’t accept to PNG, without loss. The 15 pages that Textract rejected count as failures. Google is the generally available Layout Parser, pretrained-layout-parser-v1.0-2024-06-03, in us, with images wrapped as PDFs without loss.

The non-Latin group holds the present, order and repeat tests with an ISO 15924 script tag other than Latn. Each test counts once.

For speed, we used the first 1, 5, 10, 25 and 50 pages of five public arXiv PDFs. We ran four requests at a time from one client, and polled every 0.5 seconds. Azure ran on October 22, 2026, and lite on October 25, 2026. All 25 requests per system succeeded.

We build OmniParseBench. These scores apply to this benchmark and these versions.

Download the full results without math, with every tag and source suite.

Appendix: full results

All scores are the share of tests passed, without math. The category, script and language tables use text and table tests. Tags overlap, and many groups are small, so one test can move a score several points.

Document categories
CategoryTestsLiteAzureTextractGoogle
table615575.181.575.847.4
multi_column256168.975.266.761.2
form101262.582.071.374.0
handwriting83328.136.033.032.5
rotated76160.778.866.237.8
list74979.777.661.383.4
tiny74677.387.770.881.6
degraded45936.654.550.156.4
heading36972.462.647.752.3
header_footer22660.673.562.468.6
footnote10170.380.266.379.2
figure6879.458.875.060.3
caption6674.275.860.665.2
code119.181.854.59.1
Scripts (ISO 15924)
ScriptTestsLiteAzureTextractGoogle
Arab1369.261.50.076.9
Armn60100.00.00.048.3
Beng4082.50.00.097.5
Cans80.00.00.00.0
Cher1100.00.00.0100.0
Copt1952.60.00.00.0
Cyrl7474.366.213.559.5
Deva2378.387.00.087.0
Ethi43100.00.00.095.3
Geor14100.00.00.0100.0
Grek10356.358.323.345.6
Gujr1566.70.00.080.0
Guru3171.00.00.074.2
Hang2487.595.80.087.5
Hani13665.474.30.065.4
Hebr3090.040.00.060.0
Hira1952.621.10.084.2
Hmng40.00.00.00.0
Kali1145.50.00.00.0
Kana666.70.00.0100.0
Khmr3467.60.00.094.1
Knda4897.90.00.097.9
Laoo5288.50.00.069.2
Latn940270.277.770.554.1
Lisu1100.00.00.00.0
Mlym4067.50.00.095.0
Mtei933.30.00.00.0
Mymr450.00.00.050.0
Olck450.00.00.00.0
Orya20.00.00.0100.0
Syrc520.00.00.060.0
Taml2584.084.00.080.0
Telu3390.90.00.090.9
Thai3997.4100.00.087.2
Languages (ISO 639-3)
LanguageTestsLiteAzureTextractGoogle
aai2100.0100.0100.0100.0
aak1050.00.00.00.0
aau1100.0100.0100.0100.0
aaz1752.95.95.95.9
afr120.08.325.033.3
amh19100.00.00.094.7
ara450.00.00.050.0
arb1163.672.70.072.7
arc1100.00.00.00.0
asm757.10.00.085.7
bel7100.0100.028.642.9
ben3387.90.00.0100.0
bho785.7100.00.0100.0
bzi13100.0100.00.069.2
ces3100.0100.0100.0100.0
chr1100.00.00.0100.0
cmn10969.782.60.066.1
cop1952.60.00.00.0
dan3100.066.733.3100.0
deu2588.084.068.068.0
ell1225.0100.00.0100.0
eng843471.079.073.353.2
fin450.075.075.025.0
fra20833.761.534.147.1
fro30.00.00.00.0
grc1850.00.00.0100.0
gsw70.00.00.00.0
guj1566.70.00.080.0
hau2387.034.830.430.4
hbo1693.80.00.050.0
heb5100.080.00.080.0
hin30.0100.00.033.3
hrv10.00.00.00.0
hun5100.0100.040.0100.0
hye40100.00.00.022.5
hyw20100.00.00.0100.0
ike80.00.00.00.0
ind2962.182.879.382.8
isl18100.0100.072.2100.0
ita1080.080.090.090.0
jpn2055.025.00.085.0
kan4897.90.00.097.9
kat14100.00.00.0100.0
khm3467.60.00.094.1
kor2487.595.80.087.5
kyu728.60.00.00.0
lao5288.50.00.069.2
lat1100.0100.0100.0100.0
lim2100.0100.0100.0100.0
lis1100.00.00.00.0
lit7100.0100.00.0100.0
mal4067.50.00.095.0
mar12100.083.30.0100.0
mlt580.020.00.080.0
mni933.30.00.00.0
msa4100.00.00.0100.0
mya450.00.00.050.0
nld560.060.060.060.0
nob1100.0100.0100.00.0
npi10.00.00.00.0
ory20.00.00.0100.0
pan3171.00.00.074.2
pnt666.7100.00.0100.0
pol2382.687.069.678.3
por1369.292.361.569.2
ron2665.426.97.715.4
rus5367.962.313.260.4
sat450.00.00.00.0
spa7266.784.775.070.8
swe1100.0100.0100.0100.0
syc520.00.00.060.0
tam2584.084.00.080.0
tel3390.90.00.090.9
tha2696.2100.00.096.2
tir24100.00.00.095.8
tur560.0100.080.060.0
ukr1485.764.37.164.3
vie2680.896.20.076.9
ydd1080.080.00.060.0
yor1450.00.00.00.0
Test types and source suites
Test typeTestsLiteAzureTextractGoogle
layout_kind236290.792.882.281.2
present400470.668.359.071.4
order118966.267.152.765.3
repeat3560.062.965.774.3
table_cell538274.281.775.843.9
Source suiteTestsLiteAzureTextractGoogle
docparsing_images29777.888.973.777.1
forms_documentcloud4783.087.285.168.1
forms_federal12769.392.190.681.9
forms_filled10786.088.881.380.4
frbench_handwriting8410.760.729.828.6
handwriting_samples32418.822.811.119.4
large_format5766.784.273.771.9
multiling_finepdfs67684.349.028.371.4
multilingual9243.567.435.966.3
olmo_arxiv_math41198.899.596.892.7
olmo_long_tiny_text23781.994.977.289.5
olmo_multi_column35283.087.280.475.6
olmo_old_scans39528.636.232.234.2
olmo_old_scans_math11100.090.990.990.9
olmo_table_tests71078.081.487.262.1
parsebench_docs29388.186.785.080.9
realdoc_pages44578.087.476.283.1
realdoc_pdfs25672.786.775.875.4
rotation_skew37580.591.586.978.9
synth_copies188074.769.456.170.4
tables_derived542477.483.577.448.2
tiny_plans37290.694.471.292.2
START

Get started in minutes.

Free tier. No credit card. SOC 2 Type II.