Open Source

Biblioteca Rust acelera triagem e extração de PDFs sem OCR

Projeto da Firecrawl identifica o tipo de PDF, extrai texto estruturado e gera Markdown localmente para reduzir o uso desnecessário de OCR.

Reprodução · community.linuxmint.com

O pdf-inspector é uma biblioteca em Rust criada pela Firecrawl para inspecionar, classificar e extrair conteúdo de arquivos PDF. O projeto identifica se o documento é baseado em texto, digitalizado, composto por imagens ou misto, encaminhando cada caso para o tratamento adequado. Ele está em alta no Trendshift, com a primeira posição no ranking mensal e a nona no semanal, enquanto acumulava 13.597 estrelas na consulta de 9 de agosto de 2026.

Dados rápidos

  • Repositório: firecrawl/pdf-inspector
  • Licença: MIT
  • Linguagem: Rust
  • Popularidade: 13.597 estrelas e 929 forks; 11.895 estrelas no período
  • Ranking: Trendshift mensal #1 e semanal #9
  • Consulta: 9 de agosto de 2026

O problema da extração de PDFs

PDFs podem conter texto selecionável, páginas digitalizadas ou imagens incorporadas. Essa diferença é importante porque documentos sem camada textual exigem OCR, tecnologia que reconhece caracteres em imagens e costuma acrescentar custo, tempo e infraestrutura ao processamento.

O pdf-inspector foi projetado para separar esses cenários antes da extração. Segundo o README, a classificação pode identificar documentos TextBased, Scanned, ImageBased ou Mixed, fornecendo também um nível de confiança entre 0,0 e 1,0 e uma indicação de encaminhamento para OCR por página.

A proposta é evitar OCR quando ele não é necessário. O projeto informa que consegue lidar localmente com PDFs baseados em texto em menos de 200 milissegundos e estima que cerca de 54% dos PDFs não precisam desse recurso. O repositório não informa como essa proporção foi calculada fora da descrição apresentada.

Como a biblioteca funciona

O fluxo começa com o carregamento do documento, que é analisado uma única vez e compartilhado entre a classificação e a extração. A detecção examina amostras dos fluxos de conteúdo do PDF e, conforme o tipo encontrado, permite que a aplicação escolha entre extrair texto diretamente ou encaminhar o arquivo para OCR.

Na extração, a biblioteca preserva informações de posição, fontes e coordenadas X e Y. Também tenta reconstruir a ordem de leitura em documentos com múltiplas colunas, reconhece textos da direita para a esquerda e identifica problemas de codificação que podem indicar a necessidade de uma etapa posterior de OCR.

O resultado pode ser convertido em Markdown. O suporte descrito inclui títulos de H1 a H4, listas, blocos de código, negrito, itálico, links, quebras de página e tabelas detectadas por operações gráficas ou pelo alinhamento do texto.

A instalação varia conforme o ambiente. Em Python, o README indica pip install maturin e maturin develop --release. Para Node.js, o comando é npm install @firecrawl/pdf-inspector. Em Rust, cargo add pdf-inspector adiciona a dependência, enquanto a versão para navegador pode ser instalada com npm install @firecrawl/pdf-inspector-wasm.

Onde o projeto pode ser usado

  • Triagem de documentos: sistemas podem classificar lotes de PDFs e enviar apenas arquivos digitalizados para OCR.
  • Relatórios e pesquisas: documentos com texto nativo podem ser transformados em Markdown com preservação de títulos, ordem de leitura e links.
  • Documentos financeiros: a detecção de tabelas pode ajudar na conversão de balanços, demonstrativos e faturas.
  • Arquivos jurídicos: contratos e processos podem ser preparados para indexação e busca quando possuem camada textual.
  • Aplicações no navegador: o WebAssembly permite executar o parser localmente, sem uma viagem ao servidor para processar o arquivo.

Desempenho e comparação com alternativas

No benchmark opendataloader-bench, com 200 PDFs e OCR desativado, o pdf-inspector registrou pontuação geral de 0,875, índice de ordem de leitura de 0,915 e pontuação de tabelas de 0,814. O tempo informado foi de 0,470 segundo para os 200 documentos, em avaliação realizada em um Apple M4 Pro.

Na mesma comparação, o LiteParse teve pontuação geral de 0,873, ordem de leitura de 0,913, tabelas de 0,693 e tempo de 0,750 segundo. PyMuPDF4LLM marcou 0,735 no resultado geral e levou 17,117 segundos, enquanto o MarkItDown registrou 0,589 e 16,165 segundos. Os resultados foram atualizados em 31 de julho de 2026, e o repositório recomenda interpretar o projeto como opção para PDFs com texto nativo.

A implementação é descrita como Rust puro, sem modelos de aprendizado de máquina e sem serviços externos. O parser tem uma dependência indicada no README: lopdf.

Limitações e cuidados

A principal limitação é o foco em PDFs com texto nativo. O pdf-inspector classifica documentos digitalizados e pode sinalizar problemas de codificação, mas não realiza OCR. Nesses casos, a aplicação precisará integrar outro mecanismo.

A biblioteca também está em fase inicial de distribuição: não foi encontrada nenhuma release no repositório. A data de criação informada é 6 de fevereiro de 2026, e o último commit ocorreu em 9 de agosto de 2026. Não há, no material consultado, informações sobre política de segurança, suporte formal, compatibilidade detalhada entre versões ou auditorias independentes.

A licença MIT permite uso, modificação e distribuição conforme seus termos. Ainda assim, equipes que processam documentos sensíveis devem avaliar o próprio ambiente de execução e as integrações escolhidas; detalhes específicos de proteção de dados não são informados no repositório.

Resumo rápido

  • Projeto: classificação, inspeção e extração local de PDFs
  • Licença: MIT
  • Linguagem: Rust
  • Estrelas: 13.597
  • Ranking: Trendshift mensal #1 e semanal #9
  • Risco principal: não realiza OCR e ainda não tem release encontrada

Fontes

Fontes

RustMITOpen SourceTrendshift
Como fazemos: nossa equipe monitora diariamente os repositórios de código aberto em maior alta e produz esta cobertura com apoio de modelos de linguagem, sempre a partir de dados verificados na fonte primária — repositório, documentação oficial e ranking público. Os números de estrelas e a posição no ranking refletem o momento da coleta. Entenda o método.