Como executar OCR para aprendizado de idiomas inteiramente no navegador?
YuzuLingo · 1 de nov. de 2026
Você pode executar OCR para aprendizado de idiomas inteiramente no navegador carregando um modelo compacto ONNX e executando-o com WebAssembly ou WebGPU. Os frames permanecem no dispositivo, de modo que o reconhecimento não depende de uma chave de API em nuvem ou de uma viagem a um servidor.
Por que o OCR no navegador é importante para a imersão
Legendas queimadas são pixels, não texto. Um aprendiz assistindo a animes, dramas chineses ou transmissões ao vivo precisa que esses pixels sejam convertidos em caracteres antes que um dicionário possa procurar uma palavra. Fazer isso na aba significa que a mesma sessão que reproduz o vídeo também pode reconhecer a linha.
Modelos ONNX na página
Pacotes modernos de OCR são enviados como gráficos ONNX dimensionados para navegadores. A extensão ou página carrega os pesos uma vez e, em seguida, alimenta regiões de legendas cortadas através do gráfico. Modelos pequenos no estilo PaddleOCR são uma escolha comum para hardsubs CJK porque equilibram precisão com tamanho de download.
WebAssembly versus WebGPU
WebAssembly funciona em qualquer lugar que o Chromium e o Firefox possam hospedar uma extensão. WebGPU acelera a inferência quando a GPU e o navegador o suportam. Uma pilha sólida escolhe WebGPU quando disponível e recua para WASM, de modo que o reconhecimento ainda funcione em máquinas mais antigas.
Isolar trabalhos pesados para que a interface permaneça responsiva
Carregar modelos de vários megabytes no thread principal do script de conteúdo congela cliques e rolagem. Executar o reconhecimento dentro de um iframe ou worker isolado mantém a decodificação e a inferência fora do caminho de interação da página. O script host apenas envia cortes e recebe strings.
Pré-aquecer para que a primeira linha não seja uma surpresa de atraso
A primeira inferência paga pelo download do modelo e pela inicialização do gráfico. O pré-aquecimento quando o aprendiz abre uma zona interativa inicia esse trabalho cedo e mostra um estado de carregamento claro em vez de um congelamento silencioso de cinco segundos. Após o aquecimento, linhas posteriores reutilizam o tempo de execução carregado.