Indra OCR | Read a 568-Page Book in 77 Seconds (No GPU)
Read the Portuguese translation →
Author: Prompt Engineer 48 · Watch on YouTube
Video authored by the channel shown, not by IANIA; all rights belong to the creator. Transcript and summary generated automatically; the original-language content is preserved.
Original language: English
Original video: Indra OCR | Read a 568-Page Book in 77 Seconds (No GPU) · Channel: Prompt Engineer 48 · 09:27 · Watch on YouTube
Topics: AI evaluation and benchmarks, Local and open-source models, Multimodal models, RAG, search and information retrieval
Summary
Section titled “Summary”The video tests Indra OCR by extracting text from a scanned 1909 edition of Darwin’s The Origin of Species on a laptop CPU, without using its GPU. After installation, the 568-page book took about 77 seconds to process and produced a Markdown file with chapter headings that could be split up for a chat. The OCR made errors, especially on faded, old print, and its line confidence scores did not reliably flag them. The presenter concludes it is useful for fast, local processing of clean scans, but less suitable for handwriting or difficult scans where accuracy is critical.
Key points
Section titled “Key points”- The scanned book contains 568 pages and roughly 208,000 words—about 314,000 tokens by the presenter’s estimate, too much for a 200,000-token context window.
- Indra OCR is a small model of about 1 million parameters and 18 MB, runs through ONNX Runtime, and does not require PyTorch or a GPU.
- The OCR-only run took 77.0, 77.2, and 79.5 seconds in three clean tests, or about 7.5 pages per second on the presenter’s laptop.
- The PDF’s existing text layer was ignored so the test would measure Indra OCR rather than the Internet Archive’s OCR.
- The output was a roughly 1.2 MB Markdown file with chapter headings, making it possible to split the book for use in a chat.
- Errors included misread words and headings, often associated with small capitals and faded ink in the old scan.
- Five of six examined error lines had confidence scores above 0.93; the highest was 0.98, showing that high confidence did not guarantee correctness.
- The presenter used a chapter excerpt to ask a question about Darwin’s account of natural selection and verified a quoted sentence against the OCR output.
- The video advises against using the tool for handwriting, and notes that several languages on scans are supported only through an existing text layer.
- The presenter notes that the model weights have license restrictions, including a prohibition on competing with Data Lab’s API.
Chapters
Section titled “Chapters”| Start | Chapter | Summary |
|---|---|---|
| 00:01 | The scanned-book problem and Indra OCR | The presenter explains why a scanned book needs OCR, describes the failed initial PDF test, and introduces Indra OCR’s capabilities, benchmarks, and limitations. |
| 03:07 | Downloading the book and installing the tool | The video downloads the 1909 Darwin scan, outlines the laptop setup, installs Indra OCR, and explains its command-line options and first-run model download. |
| 04:42 | Processing speed and OCR errors | The presenter reports the processing times, inspects the Markdown output and examples of recognition errors, and discusses why confidence scores missed those errors. |
| 06:49 | Viewing the OCR and asking a question | The video demonstrates the OCR viewer, splits the book by chapter, and uses Chapter 4 to answer and verify a question about natural selection. |
| 08:22 | Verdict and use cases | The presenter summarizes the speed and output, cautions against using the tool for difficult scans or unsupported handwriting, and notes language and license restrictions. |
Quotes
Section titled “Quotes”568 pages, 77 seconds. — 00:01
That is why it does not need a graphics card. — 01:33
So, about 77 seconds for 568 pages. — 05:16
So, the confidence score does not catch these mistakes. — 06:49
The mistakes on a 1909 scan are real, and the model card said to expect them. — 08:22
Concepts and entities
Section titled “Concepts and entities”Indra OCR, Data Lab, ONNX Runtime, PaddleOCR, PP-Structure V3, Tesseract 5, Internet Archive, Claude, The Origin of Species, UV
Full transcript (original language)
Section titled “Full transcript (original language)”00:01 568 pages, 77 seconds. That is how long this laptop took to read Darwin’s Origin of Species from a scanned copy, and the graphics card did none of it. All right. In this video, I’ll install this OCR from scratch, run it on the whole book, show you the mistakes it made, and then ask a question about the book. Let’s go ahead and do it. I’m prompt engineer, and everything you see here runs on my own laptop. So, here’s the problem. I have a scanned book, and I want to ask it questions. A scan is only pictures of pages, so a chat window has no text to
00:31 read until something turns those pictures into text. And size matters. The text of this book is about 208,000 words. By my rough estimate, that is around 314,000 tokens, and that is more than a 200,000 token window can hold. So, you cannot drop the whole book in and start chatting. Now, I did not start with Darwin. I started with a 253-page PDF on my disk that I thought was Think and Grow Rich. I ran it through this OCR, and it finished in about half a minute. Then, I opened the first page. It is not Think and Grow Rich. It is
01:02 Grow Rich with Peace of Mind. And every page already had a hidden text layer, so the OCR was not even needed. Mind you, I can force the tool to ignore that layer, and I did, but that is not a fair test of a scan. So, I switched to a proper old scan, the 1909 edition of Darwin from the Internet Archive. This is the model page, Data Lab {dash} tool {slash} Indra {dash} OCR. The headline claim is up to 49 pages per second on a CPU. If you scroll to the chart, you can see that number is from a 32-core server. The model is about 1
01:33 million parameters, around 18 megabytes, running on ONNX runtime with no PyTorch. That is why it does not need a graphics card. The license has two parts. The code is Apache 2.0. The weights are under a modified Open Rail M license, free for research, personal use, and startups under $20 million in funding or revenue, but you cannot use it to compete with Data Lab’s own API. Now, two limits the car states itself, handwriting is not supported and old, faded, or low-resolution scans read
02:04 poorly, about 20% on their old scan tests. Darwin in 1909 is exactly an old scan, so hold on to that number. Now, the benchmark table, there are two rows for Indra. Automode uses the PDF’s text layer when it can and scores 62.1, OCR only, which is what I’ll run, scores 57.5 and takes about 303 milliseconds a page. PaddleOCR’s big pipeline, PP-Structure V3, scores 58.4 and it reads plain text better, 55.6 against Indra’s 33.5 in OCR
02:35 only mode, but it takes about 41,000 milliseconds a page. That is roughly 180 times slower. Tesseract 5 scores 19.3 on text. So, the trade is clear, less accurate on plain text than the heavy one, but fast enough to run on a laptop without waiting. The book is on the Internet Archive. This is The Origin of Species, the Collier edition from 1909, so it is public domain. In the download options on the right, there is a PDF link. I’ll do it from the terminal so you can copy it. The command is UV run
03:07 with Internet Archive IA download, the identifier, and a glob so it only takes PDFs. You can see it pulled two files, one about 24 megabytes and a grayscale copy of about 20. I’m using the first one. One thing to note, the archive’s PDF has a hidden text layer on 552 of its 568 pages made by the archive’s own OCR. So, I will tell Indra to ignore it, otherwise I would be testing their OCR, not this one. Here is what I’m running on, a Ryzen 7 7840HS, 16 threads, 15 GB of memory. There is an
03:39 RTX 4060 with 8 gigs in this laptop, but this tool will not use it. Step one, a clean Python environment, UV then Python 3.12. Step two, UV pip install indra-ocr. It installed 23 packages in under 3 seconds here, but only because UV had them cached. So, yours will depend on your connection. The list is small. ONNX runtime, OpenCV headless, PyPDFium, NumPy, no torch, no CUDA. The version is 0.3.2.
04:10 If you do not use UV, plain pip install works the same way. Now, let’s look at the help. The flags I care about mode, which is auto OCR, or text format, which is markdown text or JSON out, where the files go, cores, and timings, which prints the time for every page. The models are not inside the package. On the first run, it fetches eight files from Hugging Face and caches them. That first run with one page took about 8 seconds, and after that it works offline. Here is the command. Indra OCR the PDF {dash} {dash} mode OCR {dash} {dash}
04:42 timings and {dash} {dash} out to a folder. Enter. In the meantime, look at the monitor on the right. All 16 threads sit near 100% and the GPU memory stays at 390 megabytes the whole run, which is just my desktop. Nothing from this tool is loaded on the graphics card. This run prints every page and records the CPU, so it is a little slower than a clean run. And it’s done. On camera, it took 89 seconds because of the logging. I also ran it clean three times and got 77.0, 77.2, and 79.5 seconds. So, about
05:16 77 seconds for 568 pages. That is about 7 and 1/2 pages per second. Now, I want to be honest about this number. The model card says about 27 pages per second at 16 cores. I got about 7 and 1/2. I haven’t dug into why their test is on a server with one worker per core. Mine is a laptop with other apps open, so treat my number as the real one for this machine. The result is one markdown file, about 1.2 megabytes with 208,000 words in it. The
05:47 253-page book earlier took about half a minute, so the pace is about the same. Let’s open the file. At the top, you can see the title as a heading. The contents became an HTML table with the chapter names and page numbers in their own cells, and the chapters have double hash headings, which is exactly what I need to split this book later. Now, the mistakes because I promised in the contents, difficulties of the theory came out as difficulties. Hybridism came out as hybridism with a letter missing. Organic beings came out as organic beings. Inside the text, it’s smaller
06:19 things. In the Aristotle footnote, the word but came out as hut. Together came out as t o g c t h e r with a c instead of an e. And one chapter heading came out as habit and of t o e s with random capitals. Look at the scan next to each one. Most of these are the small capitals and the faded ink of 1909, the kind of shapes where an e and a c look the same. Here is the part that surprised me. The tool gives each line a confidence score. Five of these six lines scored above 0.93.
06:49 The highest 0.98 was on the line with the c in together. So, the confidence score does not catch these mistakes. So, yes, the old scan hurts, and the model card said it would, but the body text is readable, the sentences hold together, and for asking questions about a book, this is good enough. If you want to see what it is doing, there is a viewer run in your OCR-viewer and open localhost port 8765. Drop in a PDF. I’m using a six-page sample from Darwin. Each page shows the lines it found, the layout blocks with their labels. And
07:21 with this switch, the reading order drawn over the page, you can see it straightened the page by a third of a degree. On the right, you have the rendered text, the markdown, the lines with confidences, and the JSON. This six-page run took about 440 milliseconds a page, which is slower than the command line, because it is drawing every box, and you can spot the mistakes here, too. Appreciate nature’s n A C for C. Now back to the problem from the start. The full file is about 314,000 tokens by my estimate, too big for one chat, but the OCR gave me
07:52 chapter headings, so a short script can split it. It found 15 chapters. Chapter 4, Natural Selection, is about 20,000 words. I’m using Cloud from the command line for this. I pipe in Chapter 4 and ask, “Using only this chapter text, what does Darwin say natural selection preserves and what does he compare it to?” It answered in about 19 seconds. It says natural selection preserves favorable individual differences and destroys the injurious ones, and it quotes the sentence. I searched the OCR file for
08:22 that exact sentence, and it is there word for word. It also says Darwin compares it mainly to man’s selection, the way breeders pick animals and plants, and that nature’s version acts on every part of the creature over whole geological periods. So here’s the verdict with numbers. 568 pages and about 77 seconds on a laptop CPU, 18 megabytes of model, no PyTorch, and a markdown file with headings that I could split and feed to a chat. The mistakes on a 1909 scan are real, and
08:55 the model card said to expect them. Use it if you have lots of clean scans or PDFs and you want fast, local, free text. Skip it for handwriting, which the card says is not supported. Skip it for Arabic, Hebrew, Thai, Japanese kana, and Korean on scans, which only work through a text layer. And if you need every word right from very old scans, the author points to their hosted model. Also, check the license. The weights are free for personal use, but not for competing with their API. If you’re looking for cheap and reliable GPUs, I
09:27 use RunPod, and the link is in the description. So in this video, we have seen how we can install intraOCR, run it on a 568-page scan, and use the result in a chat. Go ahead and try it on your own book and tell me which one in the comments. I’ll see you in another one.