BotLino / Lino-WebCrawler

WebCrawler para auxiliar nas funcionalidades gerais do Lino
GNU General Public License v3.0
3 stars 0 forks source link

Transformar pdf em texto #35

Open guilacerda opened 5 years ago

guilacerda commented 5 years ago

Descrição Foi identificado que o parser do pdf para tsv gera uma desordem nas tabelas, e isso causa um caos que não é interpretável, é um padrão que muda a cada pdf que é transformado em tsv, insustentável manter. Uma segunda estratégia é transformar o próprio pdf em texto e tentar criar um padrão para gerar o cardápio de modo adequado ao bot.

Tarefas

Critérios de Aceitação

guilacerda commented 5 years ago

A primeira tarefa era utilizar a biblioteca tika para transformar pdf em texto. Foi uma recomendação que encontramos na internet que é muito boa, porque ele gera um txt muito bem estruturado, sem nenhum erro de faltar alguma palavra e tudo mais. Foi super adequado ao nosso contexto, tendo em vista que o pdf é muito mal estruturado...

guilacerda commented 5 years ago

Então, utilizando a tika ele transforma tudo em texto, porém a separação de cada coluna é feita por espaço em branco, então encontramos uma gambiarra/padrão, que será necessária para dar tempo de apresentarmos na Campus Party 2019 BSB, que todo início de coluna é inicializada com uma letra maiúscula. Então começamos a separar cada início de coluna a partir da primeira letra maíuscula. Porém identificamos um problema, as vezes o "ser" que elabora o cardápio coloca no meio do nome uma letra maíuscula (no segundo nome, geralmente quando é composto). Com isso fizemos alguns filtros que não permite pegar nenhuma palavra que inicia com letra maiúscula vem após algum tipo de conector, por exemplo: de, e, ",", com, ...

guilacerda commented 5 years ago

Após fazer esse filtro, conseguimos fazer a separação de cada refeição corretamente. Com isso já estamos expondo todo o conteúdo na rota cardapio//<refeição>

guilacerda commented 5 years ago

Agora o que está faltando é unir todo o trabalho com a stack do Lino.