Pular para o conteúdo

Unlimited OCR 2 chegou!

Ver no idioma original →

Autoria: 1littlecoder · 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: Unlimited OCR 2 is here! · Canal: 1littlecoder · 11:52 · Assistir no YouTube

Tópicos: Inferência e otimização de modelos, Modelos multimodais

O vídeo apresenta o Baidu Unlimited OCR 2 e explica como o SRSWA permite processar documentos longos sem manter todo o contexto na KV cache. O apresentador compara a abordagem a métodos tradicionais de OCR e descreve técnicas de seleção de páginas e tokens relevantes. Em seguida, mostra como executar o modelo em uma instância da RunPod com Transformers e como processar PDFs com várias páginas. Por fim, verifica os resultados extraídos de tabelas e equações e comenta o custo da execução.

  • O Baidu Unlimited OCR 2 usa SRSWA, sigla de sparse reference sliding window attention.
  • O SRSWA seleciona referências relevantes por meio de page gate e token sieve, em vez de consultar todas as páginas anteriores.
  • A memória de referência é descrita como um conjunto de 512 tokens, organizado em 16 blocos de 32, além de uma janela de 128 tokens da saída recente.
  • O modelo foi avaliado no Marathon Doc Bench e, segundo o vídeo, obteve pontuação 77.
  • O apresentador executa o modelo em uma GPU 4090 na RunPod por menos de US$ 1 por hora.
  • O exemplo usa Transformers para testar o modelo; o vídeo recomenda SGLang para servir o modelo em produção.
  • Para processar PDFs, o exemplo usa PyMuPDF para converter o documento em páginas.
  • A inferência de várias páginas envia todas as páginas do documento em uma solicitação, preservando o contexto entre elas.
  • O apresentador confere a extração de tabelas e equações no resultado em Markdown.
Início Capítulo Resumo
00:00 O que é o Unlimited OCR 2 O apresentador introduz o modelo e explica o problema de preservar o contexto entre páginas de um documento.
03:03 Como funciona o SRSWA O vídeo descreve a seleção de referências com page gate e token sieve e apresenta a redução da memória de contexto.
05:41 Configuração e execução do modelo O apresentador mostra a execução em uma instância da RunPod e o uso de Transformers, SGLang e PyMuPDF.
08:47 Conferência dos resultados O vídeo verifica a extração de tabelas e equações e encerra com a finalização da instância.

Vou mostrar primeiro o que é o Unlimited OCR 2 e como você pode usá-lo. — 00:30

Em vez de olhar para cada página anterior, o modelo seleciona apenas os trechos mais relevantes. — 03:34

Para um caso de uso real em produção, você pode usar SGLang como plataforma de serving. — 06:43

Conseguimos executar o Unlimited OCR 2 da Baidu por menos de US$ 1. — 11:22

  • Baidu (empresa): Empresa responsável pelo modelo de OCR apresentado no vídeo.
  • Baidu OCR 2 (modelo): Modelo de OCR apresentado como uma versão nova do Unlimited OCR da Baidu.
  • SRSWA (conceito): Mecanismo de atenção chamado sparse reference sliding window attention, que seleciona referências relevantes para reduzir a memória necessária.
  • RSWA (conceito): Abordagem chamada reference sliding window attention, associada à primeira versão do Unlimited OCR.
  • KV cache (conceito): Memória de contexto usada pelo modelo, cujo crescimento é um dos problemas abordados pelo SRSWA.
  • Marathon Doc Bench (ferramenta): Benchmark citado no vídeo para avaliar o processamento de documentos longos.
  • RunPod (empresa): Plataforma usada pelo apresentador para executar o modelo em uma instância com GPU.
  • Transformers (ferramenta): Biblioteca usada no exemplo para carregar e executar o modelo.
  • SGLang (ferramenta): Plataforma de serving recomendada no vídeo para disponibilizar o modelo em produção.
  • PyMuPDF (ferramenta): Biblioteca usada no exemplo para trabalhar com PDFs e convertê-los em páginas.

00:00 Um dos modelos de OCR mais populares, o Unlimited OCR da Baidu, ganhou uma versão mais nova. A versão mais nova se chama Baidu OCR 2, e esse modelo vem com algo chamado SRSWA, sigla de sparse reference sliding window attention. E, como vocês podem ver na minha tela agora, estamos usando esse modelo de OCR com este PDF. Este PDF tem aproximadamente 13 páginas. Então, estamos usando esse modelo de OCR neste PDF para

00:30 obter todo o texto possível. Neste vídeo, vou mostrar primeiro o que é o Unlimited OCR 2 e como você pode usá-lo. Estou usando-o em uma instância do RunPod, bem barata, por menos de US$ 1 por hora. Este é o Baidu Unlimited OCR 2. Aqui, vocês podem ver que eles dizem estar inaugurando a era do OCR 3.0 e da análise de documentos de horizonte longo a ilimitado. Isso é viabilizado por uma nova técnica que desenvolveram, chamada SRSWA.

01:01 Antes de tentarmos entender o que o Unlimited OCR 2 faz, vamos entender como o OCR funciona tradicionalmente. A abordagem clássica é muito simples. Você divide o documento em várias páginas, lê cada página separadamente e, por fim, tenta juntar os resultados. Funciona muito bem se houver apenas uma página isolada. Então, se cada página for lida individualmente e não precisar de contexto entre as páginas, funciona muito bem. Mas imagine que haja um parágrafo ali

01:32 que esteja dividido entre duas páginas. Aí isso se torna um problema muito difícil de resolver. E é exatamente aí que a atenção ajuda. Esses modelos escrevem a saída um token por vez. E, antes de escrever cada token, o modelo consulta tudo o que tem no contexto de cada imagem. Então, se tivermos três imagens, ele vai consultar as três imagens e cada palavra que já escreveu. Ou seja, a entrada e a saída. E

02:02 essa consulta ao contexto anterior é tecnicamente chamada de atenção. Para evitar refazer o trabalho, o modelo mantém uma memória de todo o contexto anterior. Isso se chama KV cache. E, como vocês sabem, à medida que o número de páginas aumenta, ele consulta mais páginas. Ele escreve mais tokens. Isso significa que o KV cache cresce. Essa foi a primeira solução que a Baidu implementou no primeiro modelo, o Unlimited OCR 1. Então, quando você copia um livro, o que faz? Não relê tudo o que já

02:33 escreveu. Você olha para o original, dá uma olhada nas últimas palavras que escreveu e, então, escreve a próxima palavra. E tudo o que é mais antigo simplesmente desaparece. Assim, você mantém o KV cache no mínimo. Isso deu origem ao RSWA, reference sliding window attention. E foi isso que impulsionou o primeiro modelo Unlimited OCR. Agora, o modelo Unlimited OCR 2 vem com uma nova solução, a SRSWA: sparse reference sliding window

03:03 attention. E a palavra nova aqui é “sparse”, ou esparsa. É muito importante entendermos isso. Agora, voltando à mesma analogia da pessoa que estava copiando o livro: vocês sabem que ela não olha para todas as 300 páginas de uma vez. Se o documento tiver 300 páginas, ela olha para a página que está copiando naquele momento ou talvez para uma página anterior. Então, a escrita equivale aos tokens, e o número de páginas que ela consulta corresponde à consulta ao contexto anterior, isto é, à atenção que está ocorrendo. A sparse reference sliding window attention faz a mesma

03:34 coisa. Para cada novo token que o LLM — neste caso, o modelo de linguagem grande, ou seja, o modelo de OCR — escreve, em vez de consultar todas as páginas anteriores, o modelo seleciona com muito cuidado apenas os trechos mais relevantes. A Baidu faz isso em duas etapas. Uma se chama page gate e a segunda se chama token sieve. Vocês podem ler o artigo; vou deixar o link na descrição do YouTube para que entendam os detalhes. Por causa disso, o resultado é um conjunto pequeno e fixo de referências de trabalho, com apenas 512 tokens que ele

04:06 precisa manter em determinado momento, selecionados em 16 blocos de 32. Então, 16 vezes 32 dá 512 tokens. A janela de 128 tokens sobre a saída recente do próprio modelo continua igual a antes. Então, ele terá uma janela de 128 tokens sobre sua saída recente. E a memória das partes do documento que não são mais necessárias é liberada. Isso significa que ele limpa constantemente o KV cache e consulta pouquíssimos itens, selecionados pelo page gate e pelo token sieve.

04:37 Dessa forma, o que a Baidu fez foi tentar limitar o número de documentos, ou de páginas, que o modelo precisa consultar, e também garantir que o KV cache seja liberado de tal forma que, ao produzir novos tokens, a memória não fique cheia. Assim, o computador não fica cada vez mais sobrecarregado. Por causa dessas mudanças que fizeram, este modelo, segundo um benchmark chamado Marathon Doc Bench, no qual foi testado, consegue lidar com documentos de centenas de

05:08 páginas. O Unlimited OCR 2 da Baidu obteve 77 pontos. O próximo melhor modelo, que é um modelo de linguagem grande com visão, o Kimi K3, obteve 33,7; e o modelo flagship Gemini 3.8 Flash da G, o modelo Flash flagship, obteve 28,6. Então, isso não só vai ajudar você a analisar todas as páginas de uma só vez, como também permite fazer a mesma coisa com a maior precisão. E essa é a ideia central do motivo pelo qual isso

05:41 é muito importante. Essa inovação traz um modelo de OCR de última geração. A máquina em que estou executando o modelo agora está no RunPod; não é patrocínio nem nada disso. No momento, ele está rodando em uma 4090, que é uma GPU voltada para consumidores, e isso vai me custar menos de US$ 1 por hora. Então, mesmo que eu rode isso continuamente por US$ 1, o custo de computação vai ser inferior a US$ 1. Primeiro, inicie um ambiente e faça deploy de um novo pod. Ao fazer deploy de um novo pod, certifique-se de que ele esteja com CUDA e

06:11 tudo mais; depois, escolha uma máquina 4090 ou qualquer máquina que você tenha, com pelo menos 24 GB de memória gráfica. Depois disso, você pode abrir seu notebook Jupyter. Instale as bibliotecas necessárias. Queremos garantir que todas as bibliotecas sejam exatamente as que a Baidu forneceu. A Baidu deixou bem claro que se deve usar transformers, como estou mostrando. Se você só quer fazer um teste, para usar uma ou duas vezes, tudo bem. Mas, se quiser usar isso para servir um produto — por exemplo, criar um produto com base nisso ou manter esse endpoint sempre em execução em um ambiente serverless —, use SGLang.

06:43 No momento, estamos usando transformers. Como vocês podem ver, estamos usando transformers, mas, se quiserem usar isso em um caso de produção de verdade, para disponibilizar o modelo, podem usar SGLang como plataforma de serving. Aqui, estou usando Hugging Face transformers. Depois que instalarmos a biblioteca necessária, vou importar torch, auto model e auto tokenizer. Vou chamar o modelo; neste caso, definir o modelo Baidu Unlimited OCR. O nome vem literalmente daqui. Depois de preparar isso, definimos o tokenizer, definimos o modelo e, como

07:15 podem ver, ao importar o modelo, estamos movendo-o para CUDA, a GPU. E isso leva poucos segundos. Depois, se quiser habilitar o uso de PDF, você precisa deste pequeno trecho. Pensei que, como vamos usar um PDF, era melhor adicioná-lo. Estamos usando uma biblioteca chamada PyMuPDF e, depois disso, uma pequena função utilitária. Feito isso, enviamos o PDF, fazemos upload dele para o ambiente atual. Se o PDF já estiver na pasta de trabalho, ótimo. Então, convertemos todos esses PDFs em

07:46 as páginas e enviamos essas páginas. Segundo a Baidu, há duas maneiras de fazer inferência. Uma é o que chamamos de inferência múltipla, que é o que estamos fazendo. A segunda é o que eles chamam de inferência model.infer, que é uma inferência de página única. Em uma inferência de página única, em uma inferência de várias páginas, todas as páginas de um documento são enviadas em uma única solicitação. Assim, o contexto permanece como no problema que descrevemos no início: por exemplo, quando um parágrafo é dividido entre várias páginas, isso será tratado neste caso. Mas, se você tiver apenas uma página,

08:17 você terá apenas um JPEG; então, não precisa fazer isso e pode economizar ainda mais memória. Nesse caso, basta… Uma única página é codificada usando divisão dinâmica em blocos, que eles chamam de modo Gundam. Então, é algo que você precisa ter em mente. No momento, escrevi o código para inferências de várias páginas porque estamos lidando com PDFs. Vamos enviar o tokenizer, as páginas, o caminho de saída onde o resultado deve ser salvo e, então, o resultado; também estamos exibindo o token. Então, você pode ver aqui, desculpe, o texto que capturamos. Todo

08:47 o texto que capturamos está aqui. Vou abrir a saída. E temos o arquivo de várias páginas. Certo, este é o PDF de entrada, e você pode ver o resultado aqui. Temos o arquivo Markdown bruto. Então, tudo o que obtivemos deste PDF está disponível aqui. Esse era o arquivo bruto. Aqui está o arquivo analisado. E podemos escolher um dos elementos. Por exemplo, podemos ver como a tabela está aparecendo aqui. Esta está na página 10. E qual é o nome desta tabela? Ela se chama

09:18 COSCHL scene. Então, vou voltar ao meu resultado e procurar por ela. E temos a tabela aqui. Então, você pode ver que o que estamos vendo aqui é… Desculpe, o que estamos vendo aqui é este benchmark, COSCHL scene, e a precisão é 77.8717; podemos conferir. Então, primeiro, isso é convertido em uma tabela em HTML ou em uma tabela Markdown, e o valor exato está lá: Nsynth, que é 72.2900.

09:49 E, nossa, continuo escolhendo o número errado. 72. Este é… Então, vamos escolher mais um e conferir. Neste caso, vamos descer um pouco mais. Vou para a página 11 e, neste caso, vou procurar por voice moss. Volto aqui e procuro por voice moss. Temos voice moss em vários lugares. Certo, aqui temos voice moss, na tabela, com o valor 0.81347. Então, ponto… Nossa. 0.81347. Como você pode ver aqui, ele

10:20 conseguiu capturar a tabela muito bem, e ela contém todo o texto. Vamos ver como ele lidou com a equação. Também estou tentando controlar o tempo, porque é uma demonstração ao vivo. Então, vamos ver. Isso está na página 6: entropia cruzada categórica de escolha. Vamos ver onde está… Certo, temos a equação aqui. Temos uma equação que explica… Esta é a equação. Certo, então esta é a equação. Vamos ver como ela ficou.

10:51 Se ela estiver exatamente como ficou: p i k p i k. Perfeito. k pertence a c de i, k minúsculo, e… Certo, ficou muito bom. Recomendo fortemente que você experimente. Acho que isso nos leva ao fim do vídeo. Tudo o que você precisa fazer agora é fechar o bloco de notas. Neste caso, o notebook. Neste caso, vou baixá-lo e deixá-lo pronto para compartilhar com você no GitHub e desligar o RunPod. Vamos lá e

11:22 fazer a mesma coisa aqui. Então, pare o pod. Pare o pod. Confira se todos os dados foram removidos e se não há outro pod em execução. Encerre o pod. Encerre o pod. Depois que você encerra o pod, tudo desaparece. E, por menos de US$ 1, conseguimos executar com sucesso o Unlimited OCR 2 da Baidu com atenção de janela deslizante esparsa de referência, S R S W A. Espero que este vídeo tenha ajudado você a entender uma tecnologia de OCR muito nova, recém-saída do forno.

11:52 Até o próximo vídeo. Bons prompts.

Transcrição original

[00:00] One of the most popular OCR model, the Baidu’s unlimited OCR has got a newer version. The newer version is called Baidu OCR 2 and this model comes with something that is called SRSWA which stands for sparse reference sliding window attention. And as you can see on my screen right now, we are actually using that OCR model with this PDF. This is approximately 13 pages PDF. So, we are using this OCR model on this PDF to

[00:30] get every text that is possible. So, I’m going to show you in this video first of all what is unlimited OCR 2 and how you can use it. I’m using it on a RunPod instance, very cheap, less than $1 per hour. This is Baidu unlimited OCR 2. So, you can see here they are saying that they are pioneering the era of OCR 3.0 and uh from long to unlimited horizon parsing. And this is being enabled by a new technique that they have figured out which is called SRSWA.

[01:01] Before we try to understand what unlimited OCR 2 is doing, let us try to understand how traditionally OCR works. So, the classical approach is very simple. You chop the document into multiple pages and you read each of the pages on its own and then you finally try to glue the results back together. It works pretty well if there is only one page in isolation. So, if each page is an individual read, it doesn’t have to have context across the pages, then it works extremely fine. But, imagine like there are like one paragraph there

[01:32] is one paragraph which is like split across two pages and then this becomes a really hard problem to solve. And that is exactly why attention comes to help. So, now the model like these models, they write their output one token at a time. And before writing each token, the model looks back over everything that it has in context for every image. So, we have got like three images, then it is going to look at three images and every word that it has written. So, the input and output. And

[02:02] this look back is technically called as attention. To avoid redoing the work, the model keeps a memory of all the past context. And this is called KV cache. And now, as you know that the number of pages as it grows, it is going to look back more pages. It is going to write more tokens. And that means the KV cache is going to grow. And that is the first fix that Baidu did with the first model, which is unlimited OCR 1. So, when you copy a book, what do you do? You don’t reread everything that you have already

[02:33] written. So, you look at the original and glance at the last few words that you wrote and then write the next word. And everything older just fades. So, this way you are actually keeping the KV cache minimum. And that became what as RSWA, reference sliding window attention. And this was powering the first unlimited OCR model. Now, the unlimited OCR 2 model comes with a newer fix, which is SRSWA. That is sparse reference sliding window

[03:03] attention. And the new word here is sparse. That is very important for us to understand. Now, if we go back to the same analogy where a person was copying the book, now you know that they don’t look at all the 300 pages once. If you have got 300 pages document, they look at the page that they are trying to copy right now or maybe one page before. So, the writing is equivalent of tokens and the number of pages that they are looking is the look back, the attention that is happening. So, sparse reference sliding window attention does the same

[03:34] thing. For each new token that the LLM, the large language model in this case, the OCR model is writing, instead of looking back every single page that was before, the model very meticulously picks out only the most relevant pieces. And Baidu does this with two steps. One is called page gate and the second one is called token sieve. And you can go read the paper. I’ll link it in the YouTube description for you to understand the details. So, the because of this, the result is a small fixed set of working references, which has got only 512 tokens that it

[04:06] has to keep at a given point, chosen in 16 blocks of 32. So, 16 by 32 512 tokens. So, 128 token window over its current own recent output stays just like before. So, it’s going to have like 128 token window over its recent output. And the memory for the parts of the document that is no longer needed are released. That means it constantly flashes out the KV cache, and it looks at very few items that are selected by page gate and token sieve.

[04:37] This way, now what Baidu has done is it has tried to fix the number of documents, number of pages it has to look back, and it has also made sure that you’re releasing KV cache in such a way that when you produce new tokens, you’re not filling in the memory. So, this way the computer is not increasing. Because of this, because of this changes that they have done, this model is according to a benchmark called Marathon Doc Bench, where they’ve tested this model. This model can handle hundreds of

[05:08] pages long, and Baidu’s unlimited OCR 2 has scored 77. And the next best model, which has a vision model language model large language model but with a vision, is Kimi K3 has scored 33.7, and G Gemini’s flagship Gemini 3.8 flash the flagship flash model has scored 28.6. So, not only that this is going to help you look through all the pages in one single pass, but it can also help you do the same thing with highest accuracy. And that is the whole gist of why this

[05:41] is very important. And this innovation brings state-of-the-art OCR model. And the machine in which currently I’m running is I’m currently running it on runpod no sponsor or anything. So this is currently running on a 4090 which is kind of a consumer based GPU and this is going to charge me less than $1 less than $1 per hour. So even if I run this continuously for $1 the compute is going to cost me less than $1. First spin up an environment deploy a new pod. When you deploy a new pod make sure that you are deploying it with CUDA and

[06:11] everything and then get a 4090 machine or any machine that you have got like minimum 24 GB RAM the graphics memory. Once you have that you can open your Jupiter notebook. Install the required libraries. We are trying to make sure that we have all the libraries exactly like Baidu has given. Baidu has very clearly said that use transformers like I’m showing. If you are trying to just test bed like you want to do like once or twice. But if you want to do like a surf like if you want to like create a product on top of it or keep this endpoint always running on serverless then use SG lang.

[06:43] So currently we are using transformers. So as you can see here we are using transformers but if you wanted to for like real production use case where you want to serve this then you can use SG lang as a serving platform. And here I’m using hugging face transformers. Once we install the required library I’m going to import torch and I’m going to import auto model and auto tokenizer. I’m going to call the model in this case like define the model Baidu unlimited OCR. It is literally coming from here and after we have that in place then define the tokenizer define the model and as you

[07:15] can see here as we are importing the model we are moving it to CUDA the GPU. And takes like very few seconds. Once we do that if you want PDF to be enabled then you need this very short thing. I I just thought like we are going to use PDF so I’ve added it. We are using a library called PyMuPDF and after that the small utility function and once you do that we send the PDF we upload the PDF into our current environment wherever if you have got the PDF already in your working folder, good and fine. Then we convert all those PDFs into

[07:46] pages and we send those pages. There are two ways to do inference according to Baidu. So, one is what we call as infer multi, which is what we are doing. The second one is what they call as infer model.infer, which is a single page inference. In a single page inference, in a multi-page inference, all the pages of a document are passed in one request. So, the context stays like the problem that we described at the start, like where a paragraph is cut into multiple pages, that will be handled in this case. But if you have only one page,

[08:17] you’ve got only one JPEG, then you don’t have to do it, you can save further memory. So, in that case, you just have to A single page is encoded with dynamic tiling, which they call as like Gundam mode. So, that is something that you need to keep in mind. Right now, I’ve written the code for multiple page inferences because we are dealing with PDFs. So, we are going to do send the tokenizer, the pages, the output path where the result has to be saved, and then the result, and we are printing the token as well. So, you can see here, sorry, the text that we captured. All

[08:47] the text that we captured is here. I’m going to go to the output. And we have multi. Okay, this is the input PDF, and you can see the result here. So, we have the raw markdown file. So, everything that we have gotten from this PDF is available here. That was the raw file. Here it is like a parsed file. And we can go pick one of the elements. Like for example, we can go see how the table is looking here. This is in page number 10. And what is this table called? This is called

[09:18] COSCHL scene. So, I’m going to go back here to my result and then search for it. And we have the table here. So, you can see what we are seeing here is Sorry, what we are seeing here is this benchmark, COSCHL scene, and the accuracy is 77.8717, and we can cross verify it. So, the it is converted into a table first of all in HTML or markdown table and the exact value is there Nsynth which is 72.2900.

[09:49] And oh my goodness, I keep on going for the wrong one. 72. This is So, let’s pick one more and then cross check. So, in this case, let’s go further down. I’m going to go to page number 11 and in this case I’m going to look for voice moss. Come back here, look for voice moss. We have voice moss in multiple places. Okay, so here we have voice moss which is in the table 0.81347. So, point my goodness. 0.81347. So, as you can see here, it

[10:20] managed to capture the table pretty well and it has all the text and let’s see how it has done the equation. So, I’m I’m also figuring out the time like it’s a live demo. So, let’s see um so, this is in page number six choice categorical cross entropy. So, let’s see where do we have Okay, we have the equation here. We have equation that explains This is the equation. Okay, so this is the equation. So, let’s see how it looks.

[10:51] If it looks exactly like how it has been p i k p i k Perfect. Um k belongs to c of i uh lower case k and uh Okay, it looks pretty good. Um I would strongly encourage you to try it out. I think that takes us to the end of the video. All you have to do is now close the notepad. In this case, notebook. In this case, I’m going to download it and uh keep it ready so that I can share it with you on GitHub and um shut down the run pod. Uh let us go and

[11:22] do the same thing here. So, stop the pod. Stop the pod. Make sure all the data is gone like no other pod is running. Terminate the pod. Terminate the pod. After you terminate the bot, everything is gone. And uh less than $1, we successfully managed to run unlimited OCR 2 from Baidu with a sparse reference sliding window attention, S R S W A. And um I hope this video was helpful to you in understanding a very new OCR fresh off the oven.

[11:52] See you in the video. Happy prompting.