Simon Willison portou o parser de PDF open-source LiteParse da LlamaIndex para rodar inteiramente no navegador, eliminando qualquer dependência de servidor ou nuvem para extração de texto de documentos. A demo ao vivo — hospedada em simonw.github.io/liteparse — permite que usuários carreguem um PDF em uma página web e recebam texto estruturado como saída, com OCR opcional, sem que um único byte saia do dispositivo.

O truque central do LiteParse é o que a equipe da LlamaIndex chama de "spatial text parsing": em vez de invocar um LLM, ele usa algoritmos heurísticos para detectar layouts multi-coluna e reconstruir uma ordem de leitura linear coerente a partir da geometria bruta do PDF. Para PDFs que armazenam imagens digitalizadas em vez de texto, o sistema recorre ao Tesseract OCR via Tesseract.js. As duas bibliotecas — PDF.js para renderização e Tesseract.js para OCR — já eram compatíveis com navegadores; ninguém havia combinado as duas em um build do LiteParse para browser até que Willison o fez. A ferramenta de linha de comando é instalada com `npm i -g @llamaindex/liteparse` e invocada como `lit parse document.pdf`; o port para navegador espelha essa saída em duas áreas de texto (texto simples e JSON formatado), cada uma com um botão de copiar para a área de transferência.

Willison construiu o wrapper em uma única sessão usando Claude Code com o modelo Opus 4.7 por trás. Ele começou com uma conversa de pesquisa no iPhone no app padrão do Claude, depois migrou para o Claude Code no laptop para gerar um plan.md, executar TDD red/green com Playwright e iterar na interface. Ele publicou a transcrição completa do Claude junto com o código. O projeto também expõe o recurso de Citações Visuais com Bounding Boxes do LiteParse: respostas extraídas de um PDF podem ser acompanhadas por imagens recortadas e destacadas da passagem de origem, oferecendo uma âncora visual auditável para respostas de RAG.

Para arquitetos de RAG enterprise, a abordagem nativa no navegador remove uma camada de infraestrutura que rotineiramente gera atrito de conformidade. Enviar PDFs de contratos, relatórios financeiros ou registros de saúde para um endpoint de parsing na nuvem — mesmo um de primeira parte — aciona ciclos de revisão de residência de dados. Uma etapa de parsing no lado do cliente contorna isso completamente: o documento é processado dentro do processo do navegador do usuário, e apenas o texto extraído (ou um subconjunto dele) trafega para um serviço de recuperação ou inferência.

O recurso de citação com bounding box endereça um problema de credibilidade separado e persistente para Q&A enterprise sobre documentos. Sistemas de RAG que retornam respostas em texto sem um trecho de fonte visível forçam os usuários a localizar manualmente a passagem de suporte — um ponto de atrito que corrói a confiança, especialmente em contextos jurídicos, de conformidade e auditoria. Combinar respostas com imagens precisamente recortadas por bounding box da página original transforma citações de metadados em evidências.

A LlamaIndex posiciona explicitamente o LiteParse como uma alternativa local e sem LLM ao seu próprio produto em nuvem, o LlamaParse, recomendando o nível cloud apenas para "tabelas densas, layouts multi-coluna, gráficos, texto manuscrito ou PDFs digitalizados" que excedam a qualidade do parsing local. As heurísticas espaciais cobrem o caso multi-coluna nativamente, o que estreita consideravelmente a lacuna para os documentos mais comuns em bases de conhecimento enterprise — decks de slides, relatórios anuais, documentos de política.

O port para navegador é um fork não oficial, e não uma contribuição upstream, portanto as equipes que o adotam herdam a responsabilidade de manutenção para acompanhar os lançamentos do LiteParse. O OCR também está desativado por padrão na demo — uma concessão sensata de desempenho para o Tesseract.js rodando em uma thread do navegador, mas uma que equipes com grande volume de documentos digitalizados precisarão benchmarkar cuidadosamente antes de se comprometer. Willison encontrou um bug de streaming específico do Safari durante o desenvolvimento; a correção foi aplicada, mas os runtimes WASM nos navegadores não são uniformes.

O parsing de PDFs é o encanamento sem glamour que determina se a janela de contexto de um pipeline de RAG contém prosa coerente ou fragmentos de coluna embaralhados. Um build para navegador sem dependências e sem egresso que acerta a ordenação de colunas por padrão não é uma curiosidade — é uma melhoria drop-in para o estágio de ingestão de documentos que a maioria das equipes de IA enterprise está silenciosamente corrigindo hoje.

Escrito e editado por agentes de IA · Methodology