Unlimited OCR 2 parses a whole PDF in one call, and one setting decides whether you can trust it

Unlimited OCR 2 read a 59-page guide in 3 min 44 s, 4.2% off its text, with page tiles off. With tiles on: 38.1%.

Same model, same card, same 59 pages. With the authors' default image setting, the run took 6 min 45 s and came back 38.1% off the PDF's own text. With one flag changed, crop_mode=false, it took 3 min 44 s and came back 4.2% off. The model is Unlimited OCR 2, a document parser Baidu released under MIT. It takes a whole PDF in one request instead of one page at a time, so text that crosses a page break can stay connected. For anyone who turns PDFs into data for search or an assistant, that is the part page-by-page tools get wrong. What you can do with it: parse long reports and manuals on a single 16 GB card, as long as you switch the page tiles off.

IRS Publication 15, page 46, the start of a 7-page table, as Unlimited OCR 2 returned it on one RTX 4090 when pages 46 to 54 were sent alone. Left, the default page-tile mode: 156 s, 63,805 tokens, red boxes on eight table rows squeezed into one cell and on one sentence repeated 1,508 times, pages 47, 49 and 52 empty. Right, one view per page (crop_mode=false): 25 s, 9,861 tokens, a green box on rows with four columns as printed, 7 HTML tables, page 46 within 0.7% of the PDF text

Pages 46 to 54 alone, one card. Left, the default tiles. Right, one view per page: six times faster, no repeated sentence.

A parser that reads a document, not a pile of pages

Most PDF pipelines split the file into pages, read each one alone and glue the text back together. Anything that crosses a page break gets cut. A table that spans two pages becomes two tables, and the second has no header.

Unlimited OCR 2 reads several pages together. Showing a model many pages at once is usually expensive, since every page is a picture. Baidu's trick, per the model card, is to keep only a fixed number of image pieces in view however long the document is. By the authors' account, each new word costs about the same on page 3 as on page 300.

The model is small, 6.7 GB on disk. The license allows commercial use. Credit goes to Baidu's team, led by core contributors Shu Wei, Jingjing Wu and Qunyi Xie, who built on their first Unlimited OCR and on DeepSeek-OCR. They also shipped a patched build of SGLang, the open serving framework, with a full recipe. Our part was packaging that server behind an API and testing it on a real document.

What our test found

IRS Publication 15, the US employer's tax guide, is 59 pages, public domain, with paragraphs crossing page breaks on most pages and one table running from page 46 to page 52. We sent the whole PDF in one request on one RTX 4090, a 24 GB gaming card on our cloud, and scored the output against the PDF's own text layer: the share of characters you would have to change, 0% meaning identical.

The setting that matters is how each page is shown to the model. The default cuts every page into zoomed-in tiles on top of one overview picture. crop_mode=false shows only the overview.

59-page PDF, one requestPage tiles (default)One view per page
RTX 4090, whole document6 min 45 s3 min 44 s, 15.8 pages/min
Distance to the PDF's text38.1%4.2%
RTX 2000 Ada 16 GB, real cardnot run on all 59 pagesabout 10 and a half minutes, 4.23%

On running text both modes were good: leave the table pages out and both sat around 2.4% off, two or three characters in every hundred. The gap is the table. In tile mode, page 46 squeezed eight rows into one cell, then wrote one sentence, "Taxable if wages subject to social security tax and Medicare tax", 1,508 times. A looper pedal nobody switched off. Pages 47, 50 and 52 came back empty. Pages 46 to 54 sent alone looped the same way, so this is model behaviour, not a memory accident.

With one view per page, the table came back as HTML in seven pieces, one per page. The difference from a page-by-page parser is the tags: five of the six joins carry a tag that marks the piece as a continuation. Those tags are what a program needs to stitch it back into one.

A small card holds up. A real RTX 2000 Ada, a 16 GB workstation card that draws 70 watts, read the whole guide with one view per page at 5.6 pages a minute, peaking at 13.8 GB. Its quality matched the 4090's.

Who should care

  • Teams that parse long reports, manuals or contracts where tables and paragraphs cross pages. One request per document returns text, positions and cross-page tags under a license that allows commercial use.
  • Anyone with long tables. Set crop_mode=false, then check the numbers on the table pages: five of them were still 20% to 46% off.
  • Anyone who keeps tiles on. Keep the default 10-page windows and count the pages that come back. In tile mode, one window for the whole document ran out of room and stopped mid page 27 without an error.
  • Teams on small cards. 16 GB was enough for a document like ours.

On InferenceKey there is no ready-made support for this model, because it needs Baidu's patched server. We wrote a custom backend, a short Python file that installs and runs it on your GPU machine, and your app calls it the way it calls OpenAI's chat API. It was ready in 61 to 143 seconds with the files cached.

The honest limit, once: this was one English document of 59 clean digital pages, read once per setting, so scans are untested and the hundreds of pages the authors target are their claim, not our measurement.

The full test

The Research post has the per-page scores, the VRAM ladder, the platform rough edges and the SDK example. Read the full Unlimited OCR 2 test.