How Rivul AI reads scanned research papers
Scans now go to a dedicated PDF reader that reads every page up to 50, instead of the first three.

In this article
Rivul AI extracts text from every PDF you add. That text is what makes a paper searchable in your library and what AI features quote when they answer. Most PDFs carry a text layer, and Rivul AI reads it directly. A scan has no text layer: each page is an image, so the words have to be recovered with optical character recognition (OCR).
Until now, scans were the weak case. This article describes what changed, how we measured it, where your file goes, and what the change does not fix.
1. What changed
Before. OCR ran inside the application's serverless function, using Tesseract compiled to WebAssembly. It read only the first 3 pages of a scan and skipped scans larger than 2 MB, because larger scans ran the function out of memory. A 20-page scanned article therefore arrived with three pages of text, or with none.
Now. Scans go to Rivul AI's own PDF reader on Rivul AI's own server. It reads scans up to 10 MB and 50 pages. Text PDFs are still read directly.
The reader is built on open-source software:
- LiteParse, a PDF parsing library by LlamaIndex with a Rust core, under the Apache 2.0 license.
- PDFium, which LiteParse uses to open and render PDF pages, under a BSD 3-Clause license.
- Tesseract, the OCR engine, under the Apache 2.0 license, with its official "fast" English model, also Apache 2.0.
No AI provider or language model is involved in OCR, and no API key is used. Tesseract recognizes the text with its own open-source model, which runs on Rivul AI's server.
2. The benchmark
We ran both paths on the same laptop, on the same synthetic test PDFs, with the same Tesseract fast English model. The PDFs were made of generated words, so the correct text was known in advance. The scan rows time every page on both paths; in the application, the previous path stopped after page 3.
| Test PDF | Previous in-app path | New reader |
|---|---|---|
| Text PDF, 30 pages | 264 ms | 52 ms |
| Text PDF, 50 pages | 86 ms | 56 ms |
| Scan, 2 pages | 4.6 s | 0.76 s |
| Scan, 8 pages (all pages) | 18.9 s | 1.0 s |
| Scan, 50 pages (all pages) | 106.8 s | 6.1 s |
Word accuracy was 99.8–100% for both paths, which is expected when the model is the same and the pages are clean. The difference is speed and completeness, not accuracy. On the 50-page scan, reading every page took 106.8 seconds on the previous path and 6.1 seconds on the new reader. For text PDFs, both paths finished well under a second.
3. On rivul.ai
On Rivul AI's production server, a 50-page, 9 MB synthetic scan took 7.7 seconds to read. End to end on rivul.ai, a 10-page, 7.4 MB synthetic scan took 7.4 seconds from upload to saved, searchable text, and a word from its last page was found by library search. Under the previous path, that file exceeded the 2 MB limit and would not have been read at all.
4. Where the PDF goes
A scan now leaves the application to be read, so the boundary matters:
- The reader runs in a locked container with no internet access. It reads the PDF in memory and does not store or log document content.
- Requests to the reader are signed and expire.
- Only the recovered text returns to your library. It is stored privately in your account, included in your export, and deleted with the paper or the account.
- No AI provider receives the PDF for OCR. AI features later use your own API key, and only when you run them.
- The server is rented from Hetzner in Germany. The privacy page names it among the companies that receive data.
5. What the stored text enables
Once a scan has text, it works like any other paper in your library:
- An automatic title, instead of a file name.
- DOI and arXiv lookup for citation metadata.
- Full-text library search, including the pages after page 3.
- Grounded AI answers with your own API key.
- Quoting passages with citations.
Papers added before September 24, 2026 that show Needs OCR in the library: click Re-extract once on each of them to read it with the new reader.
6. Limits
These measurements use clean synthetic scans. Real scans are harder: faint print, skewed pages, photographed pages, dense tables and handwriting are slower to read and less accurate. The benchmark shows that the reader is faster and reads the whole document. It does not show that OCR text from a real scan is correct.
Treat recovered text as a way to find a passage, not as a verified transcription. Before you cite a number, a unit or a quotation from a scanned paper, check it against the original page. Verify OCR text before citing a scanned research paper walks through that check and a correction log.
Rivul AI is free. Sign in with Google to search 300M+ works, keep 5 PDFs (up to 10 MB each) beside your draft, and export to Word, LaTeX, BibTeX or Markdown. AI features use your own Google Gemini, OpenAI, Anthropic, xAI, Mistral or Meta API key.