A maioria dos extratores de PDF usa a API errada
A maioria das ferramentas de PDF usa a fonte de dados errada.
Quando os desenvolvedores falam sobre extração de PDF, eles geralmente se referem ao getTextContent(). Este método fornece itens de texto e suas posições. É o padrão para quase todas as ferramentas baseadas em navegador.
Mas o getTextContent() é uma visualização processada. É uma versão simplificada do que está realmente disponível.
Existem três níveis de dados no PDF.js:
• getStructTree(): Isso informa o que o documento significa. Contém tabelas, cabeçalhos e fórmulas. • getOperatorList(): Isso informa o que o documento desenha. Inclui linhas, caminhos e formas. • getTextContent(): Esta é uma visualização filtrada do que o documento desenha.
A maioria das ferramentas usa a terceira opção. Isso funciona para 80% dos documentos, como relatórios simples. No entanto, falha em artigos acadêmicos e publicações complexas.
Usar apenas o getTextContent() cria quatro problemas principais:
- Você perde as estruturas das tabelas. Você tem que adivinhar onde as células estão com base nas posições do texto.
- Você quebra equações matemáticas. Equações LaTeX frequentemente aparecem como blocos de texto únicos e gigantes.
- Você perde as linhas das colunas. Muitos layouts usam linhas reais para separar colunas. Essas linhas não existem no conteúdo de texto.
- Você obtém a ordem de leitura errada. O texto frequentemente aparece na ordem em que foi desenhado, não como um humano o lê.
A maneira correta de construir um processador de PDF é um sistema de três camadas:
- Verifique o getStructTree() primeiro. Se o documento tiver uma estrutura lógica, use-o para encontrar tabelas e cabeçalhos imediatamente.
- Verifique o getOperatorList() em seguida. Use linhas e caminhos explícitos para encontrar os limites das colunas.
- Use o getTextContent() como fallback. Use matemática geométrica apenas quando as duas primeiras camadas não fornecerem dados.
Essa abordagem não significa mais trabalho. As camadas 1 e 2 funcionam como saídas rápidas. Se o documento estiver bem estruturado, você pula a matemática complexa. Você só usa inferência complexa quando o documento não possui tags.
Esta arquitetura lida tanto com arquivos corporativos simples quanto com artigos científicos complexos.
Fonte: https://dev.to/bonzai2carn/most-pdf-extractors-use-the-wrong-api-heres-what-we-built-instead-5dgh
