Indra OCR | Leia um livro de 568 páginas em 77 segundos (sem GPU)
Autoria: Prompt Engineer 48 · Assistir no YouTube
Vídeo de autoria do canal indicado, não da IANIA; todos os direitos pertencem ao criador. Transcrição, resumo e tradução gerados automaticamente; o conteúdo no idioma original é preservado na versão em idioma original.
Idioma original: inglês
Vídeo original: Indra OCR | Read a 568-Page Book in 77 Seconds (No GPU) · Canal: Prompt Engineer 48 · 09:27 · Assistir no YouTube
Tópicos: Avaliação e benchmarks de IA, Modelos locais e open source, Modelos multimodais, RAG, busca e recuperação de informação
O vídeo demonstra a instalação e o uso do Indra OCR para converter uma digitalização de 568 páginas de A origem das espécies em texto, em um laptop sem usar a GPU. A execução levou cerca de 77 segundos e gerou um arquivo Markdown com aproximadamente 208 mil palavras, embora o OCR tenha cometido erros em trechos da digitalização antiga. O apresentador mostra como dividir o texto por capítulos e consulta o capítulo sobre seleção natural usando Claude na linha de comando. A ferramenta é apresentada como uma opção rápida para digitalizações legíveis, mas não é indicada para manuscritos nem para alguns idiomas quando não há uma camada de texto no PDF.
Pontos-chave
Seção intitulada “Pontos-chave”- O Indra OCR processou as 568 páginas em cerca de 77 segundos no CPU de um laptop, sem usar a GPU.
- O modelo tem cerca de 1 milhão de parâmetros, ocupa aproximadamente 18 MB e usa ONNX Runtime, sem PyTorch.
- O PDF de A origem das espécies já tinha uma camada de texto em 552 páginas; o teste a ignorou para avaliar o OCR de fato.
- A execução gerou um arquivo Markdown de cerca de 1,2 MB e 208 mil palavras, com títulos de capítulos úteis para dividir o conteúdo.
- A digitalização antiga gerou erros de reconhecimento, e as pontuações de confiança não sinalizaram necessariamente as linhas com erros.
- O apresentador dividiu o texto em capítulos e usou Claude para responder a uma pergunta sobre o capítulo 4, conferindo a resposta no arquivo OCR.
- O modelo não oferece suporte a manuscritos; árabe, hebraico, tailandês, kana japonês e coreano em digitalizações só funcionam por meio de uma camada de texto.
- A licença do código é Apache 2.0, mas os pesos têm restrições, inclusive a proibição de usá-los para competir com a API da Data Lab.
Capítulos
Seção intitulada “Capítulos”| Início | Capítulo | Resumo |
|---|---|---|
| 00:01 | O desafio de converter um livro digitalizado em texto | O apresentador explica por que um livro digitalizado precisa de OCR e por que o tamanho do texto impede inseri-lo inteiro em uma conversa. |
| 02:04 | Benchmark, download e instalação do Indra OCR | O vídeo compara ferramentas de OCR, baixa o PDF de Darwin e instala o Indra OCR para executá-lo no CPU. |
| 04:10 | Execução no laptop e análise dos erros | O apresentador mede o tempo de processamento, examina o arquivo Markdown e mostra erros que as pontuações de confiança não identificaram. |
| 06:49 | Visualizador, divisão por capítulos e consulta ao texto | O vídeo demonstra o visualizador, divide o livro em capítulos e usa Claude para responder a uma pergunta sobre seleção natural. |
| 08:22 | Conclusão, limitações e licença | O apresentador resume a velocidade e as limitações do OCR, recomenda verificar a licença dos pesos e encerra o vídeo. |
Citações
Seção intitulada “Citações”568 páginas, 77 segundos. Foi quanto este laptop levou para ler A origem das espécies a partir de uma cópia digitalizada, sem que a placa de vídeo fizesse nada. — 00:01
As 16 threads ficam perto de 100%, e a memória da GPU permanece em 390 megabytes durante toda a execução. — 04:42
A pontuação de confiança não detecta esses erros. — 06:49
568 páginas e cerca de 77 segundos no CPU de um laptop. — 08:22
Conceitos e entidades
Seção intitulada “Conceitos e entidades”- Indra OCR (ferramenta): Ferramenta de OCR apresentada no vídeo para converter páginas digitalizadas em texto, com execução local em CPU.
- Data Lab (empresa): Empresa associada ao Indra OCR e à API que a licença dos pesos proíbe usar como concorrente.
- ONNX Runtime (ferramenta): Runtime usado para executar o modelo do Indra OCR sem PyTorch.
- PaddleOCR (ferramenta): Ferramenta de OCR comparada ao Indra OCR por precisão e velocidade.
- PP-Structure V3 (modelo): Pipeline do PaddleOCR citado no benchmark como mais lento, mas melhor em texto simples do que o Indra OCR.
- Tesseract 5 (ferramenta): Ferramenta de OCR incluída na comparação de desempenho apresentada no vídeo.
- Internet Archive (empresa): Arquivo digital de onde o apresentador baixou a edição de 1909 de A origem das espécies.
- Claude (modelo): Modelo usado na linha de comando para responder a uma pergunta com base no texto do capítulo sobre seleção natural.
- The Origin of Species (conceito): Livro de Charles Darwin usado como exemplo para testar o OCR e consultar o conteúdo reconhecido.
- UV (ferramenta): Ferramenta usada no vídeo para criar o ambiente Python, instalar dependências e baixar o PDF.
Tradução completa (pt-BR)
Seção intitulada “Tradução completa (pt-BR)”00:01 568 páginas, 77 segundos. Foi esse o tempo que este laptop levou para ler A origem das espécies, de Darwin, a partir de uma cópia digitalizada, e a placa de vídeo não fez nada disso. Certo. Neste vídeo, vou instalar esse OCR do zero, executá-lo no livro inteiro, mostrar os erros que ele cometeu e, depois, fazer uma pergunta sobre o livro. Vamos lá. Sou engenheiro de prompts, e tudo o que você vê aqui roda no meu próprio laptop. Então, eis o problema. Tenho um livro digitalizado e quero fazer perguntas sobre ele. Uma digitalização é apenas um conjunto de imagens das páginas, então uma janela de chat não tem texto para
00:31 ler até que algo transforme essas imagens em texto. E o tamanho importa. O texto deste livro tem cerca de 208.000 palavras. Pela minha estimativa aproximada, isso dá cerca de 314.000 tokens, mais do que uma context window de 200.000 tokens consegue comportar. Então, não dá para colocar o livro inteiro e começar a conversar. Bom, não comecei com Darwin. Comecei com um PDF de 253 páginas no meu disco que achei que fosse Think and Grow Rich. Passei o arquivo por este OCR, e ele terminou em cerca de meio minuto. Depois, abri a primeira página. Não é Think and Grow Rich. É
01:02 Grow Rich with Peace of Mind. E todas as páginas já tinham uma camada de texto oculta, então o OCR nem era necessário. Só para constar, posso forçar a ferramenta a ignorar essa camada, e foi o que fiz, mas isso não é um teste justo de uma digitalização. Então, troquei por uma digitalização antiga de verdade: a edição de 1909 de Darwin, do Internet Archive. Esta é a página do modelo, Data Lab — ferramenta — Indra-OCR. A principal alegação é de até 49 páginas por segundo em uma CPU. Se você rolar até o gráfico, verá que esse número vem de um servidor com 32 núcleos. O modelo tem cerca de 1
01:33 milhão de parâmetros, ocupa cerca de 18 megabytes e roda no ONNX Runtime, sem PyTorch. Por isso, não precisa de placa de vídeo. A licença tem duas partes. O código é Apache 2.0. Os pesos estão sob uma licença Open Rail M modificada, gratuita para pesquisa, uso pessoal e startups com menos de 20 milhões de dólares em financiamento ou receita, mas você não pode usá-los para competir com a própria API da Data Lab. Agora, há dois limites que o model card declara: escrita à mão não é compatível, e digitalizações antigas, desbotadas ou de baixa resolução são lidas
02:04 com dificuldade — cerca de 20% nos testes com digitalizações antigas. A edição de Darwin de 1909 é exatamente uma digitalização antiga, então lembre-se desse número. Agora, a tabela de benchmark: há duas linhas para o Indra. O modo Automático usa a camada de texto do PDF quando pode e tem pontuação de 62,1. Apenas OCR, que é o modo que vou executar, tem pontuação de 57,5 e leva cerca de 303 milissegundos por página. O pipeline grande do PaddleOCR, PP-Structure V3, tem pontuação de 58,4 e lê melhor o texto corrido: 55,6, contra 33,5 do Indra no modo
02:35 de apenas OCR, mas leva cerca de 41.000 milissegundos por página. Isso é aproximadamente 180 vezes mais lento. O Tesseract 5 tem pontuação de 19,3 em texto. Então, a troca é clara: é menos preciso em texto corrido do que o modelo pesado, mas rápido o suficiente para rodar em um laptop sem precisar ficar esperando. O livro está no Internet Archive. Este é The Origin of Species, a edição da Collier de 1909, portanto está em domínio público. Nas opções de download à direita, há um link para o PDF. Vou fazer isso pelo terminal para que você possa copiar o comando. O comando é UV run
03:07 com Internet Archive IA download, o identificador e um glob para baixar apenas PDFs. Você pode ver que ele baixou dois arquivos: um com cerca de 24 megabytes e uma cópia em escala de cinza com cerca de 20. Vou usar o primeiro. Um detalhe importante: o PDF do arquivo tem uma camada de texto oculta em 552 das 568 páginas, criada pelo próprio OCR do arquivo. Então, vou mandar o Indra ignorá-la; caso contrário, estaria testando o OCR deles, não este. Eis o equipamento em que estou rodando: um Ryzen 7 7840HS, 16 threads e 15 GB de memória. Há uma
03:39 RTX 4060 com 8 GB neste laptop, mas esta ferramenta não vai usá-la. Passo um: um ambiente Python limpo, UV e depois Python 3.12. Passo dois: UV pip install indra-ocr. Aqui, foram instalados 23 pacotes em menos de 3 segundos, mas só porque o UV já os tinha no cache. Então, no seu caso, vai depender da conexão. A lista é pequena: ONNX Runtime, OpenCV headless, PyPDFium, NumPy, sem torch, sem CUDA. A versão é 0.3.2.
04:10 Se você não usa UV, o pip install normal funciona da mesma forma. Agora, vamos ver a ajuda. As opções que me interessam são mode, que pode ser OCR automático; format, que pode ser texto markdown ou JSON; onde os arquivos serão salvos; cores; e timings, que imprime o tempo de cada página. Os modelos não vêm dentro do pacote. Na primeira execução, ele baixa oito arquivos do Hugging Face e os armazena no cache. Essa primeira execução, com uma página, levou cerca de 8 segundos; depois disso, funciona offline. Aqui está o comando: Indra OCR, o PDF, — — mode OCR, — —
04:42 timings e — — out, seguido de uma pasta. Enter. Enquanto isso, olhe o monitor à direita. Todas as 16 threads ficam perto de 100%, e a memória da GPU permanece em 390 megabytes durante toda a execução, o que é apenas o meu desktop. Nada desta ferramenta é carregado na placa de vídeo. Esta execução imprime cada página e registra o uso da CPU, então é um pouco mais lenta do que uma execução normal. E terminou. Na gravação, levou 89 segundos por causa dos registros. Também executei sem esses registros três vezes e obtive 77,0, 77,2 e 79,5 segundos. Então, cerca de
05:16 77 segundos para 568 páginas. Isso dá cerca de 7 páginas e meia por segundo. Agora, quero ser honesto sobre esse número. O model card diz cerca de 27 páginas por segundo com 16 núcleos. Eu consegui cerca de 7 páginas e meia. Não investiguei a fundo por que o teste deles usa um worker por núcleo em um servidor. O meu é um laptop com outros aplicativos abertos, então considere o meu número como o resultado real para esta máquina. O resultado é um único arquivo markdown, com cerca de 1,2 megabytes e 208.000 palavras. O
05:47 livro de 253 páginas de antes levou cerca de meio minuto, então o ritmo é mais ou menos o mesmo. Vamos abrir o arquivo. No topo, você pode ver o título como cabeçalho. O sumário virou uma tabela HTML, com os nomes dos capítulos e os números das páginas em suas próprias células, e os capítulos têm cabeçalhos com duas cerquilhas, exatamente o que preciso para dividir este livro mais tarde. Agora, os erros, porque prometi mostrá-los. No sumário, “difficulties of the theory” virou “difficulties”. “Hybridism” saiu como “hybridism”, com uma letra faltando. “Organic beings” saiu como “organic beings”. Dentro do texto, são coisas menores.
06:19 Na nota de rodapé sobre Aristóteles, a palavra “but” saiu como “hut”. “Together” saiu como “t o g c t h e r”, com um c em vez de um e. E um cabeçalho de capítulo saiu como “habit and of t o e s”, com maiúsculas aleatórias. Veja a digitalização ao lado de cada exemplo. A maioria desses erros vem das versaletes e da tinta desbotada de 1909, formas em que um e e um c parecem iguais. Eis o que me surpreendeu. A ferramenta atribui uma pontuação de confiança a cada linha. Cinco dessas seis linhas tiveram pontuação acima de 0,93.
06:49 A mais alta, 0,98, foi na linha com o c em “together”. Então, a pontuação de confiança não detecta esses erros. Portanto, sim, a digitalização antiga prejudica o resultado, como dizia o model card, mas o texto principal é legível, as frases fazem sentido e, para fazer perguntas sobre um livro, isso é bom o suficiente. Se quiser ver o que ela está fazendo, execute o visualizador com your OCR-viewer e abra localhost na porta 8765. Carregue um PDF. Estou usando uma amostra de seis páginas de Darwin. Cada página mostra as linhas que a ferramenta encontrou e os blocos do layout com seus rótulos. E
07:21 com esta opção, que desenha a ordem de leitura sobre a página, você pode ver que ela corrigiu a inclinação da página em um terço de grau. À direita, há o texto renderizado, o markdown, as linhas com as pontuações de confiança e o JSON. Esta execução de seis páginas levou cerca de 440 milissegundos por página, mais do que pela linha de comando, porque está desenhando cada caixa, e você também consegue identificar os erros aqui. “Appreciate nature’s n A C for C.” Agora, de volta ao problema do começo. Pela minha estimativa, o arquivo completo tem cerca de 314.000 tokens, grande demais para uma única conversa, mas o OCR me deu
07:52 títulos dos capítulos, então um script curto pode separá-los. Ele encontrou 15 capítulos. O capítulo 4, Seleção Natural, tem cerca de 20.000 palavras. Estou usando o Claude pela linha de comando. Insiro o capítulo 4 e pergunto: “Usando apenas o texto deste capítulo, o que Darwin diz que a seleção natural preserva e com o que ele a compara?” A resposta veio em cerca de 19 segundos. Ele diz que a seleção natural preserva as diferenças individuais favoráveis e destrói as prejudiciais, e cita a frase. Pesquisei no arquivo de OCR por
08:22 essa frase exata, e ela está lá, palavra por palavra. Ele também diz que Darwin a compara principalmente à seleção feita pelo homem, ao modo como criadores escolhem animais e plantas, e que a versão da natureza age sobre todas as partes da criatura ao longo de períodos geológicos inteiros. Então, aqui está o veredito em números: 568 páginas em cerca de 77 segundos, usando a CPU de um laptop; um modelo de 18 megabytes, sem PyTorch, e um arquivo Markdown com títulos que eu pude dividir e usar em um chat. Os erros em uma digitalização de 1909 são reais, e
08:55 o cartão do modelo dizia que era de se esperar. Use-o se você tiver muitas digitalizações ou PDFs nítidos e quiser texto rápido, local e gratuito. Não o use para escrita à mão, que, segundo o cartão, não é compatível. Não o use para árabe, hebraico, tailandês, kana japonês e coreano em digitalizações; esses idiomas só funcionam por meio de uma camada de texto. E, se você precisa acertar todas as palavras em digitalizações muito antigas, o autor indica o modelo hospedado. Além disso, confira a licença. Os pesos são gratuitos para uso pessoal, mas não para competir com a API deles. Se você está procurando GPUs baratas e confiáveis, eu
09:27 uso o RunPod, e o link está na descrição. Então, neste vídeo, vimos como instalar o Indra OCR, executá-lo em uma digitalização de 568 páginas e usar o resultado em um chat. Vá em frente, teste-o no seu próprio livro e me diga nos comentários qual livro escolheu. Vejo você em outro vídeo.
Transcrição original
[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.