Os dados são gerados em um processo semi-automático, onde o pdf é convertido para texto e então é feito um processamento em cima desses dados com etapas automáticas e manuais:
graph LR
pdf((pdf)) -- generate_raw_data.py --> raw.txt((raw.txt))
raw.txt((raw.txt)) -- manual fixes --> fixed.txt((fixed.txt))
fixed.txt((fixed.txt)) -- generate_book_items.py --> raw.json((raw.json))
raw.json((raw.json)) -- manual organization --> final.json((final.json))
O script generate_raw_data.py é responsável por essa etapa, ele vai executar o commando pdftotext
no trecho do livro especificado e tentar formatar o texto em blocos de informações, o conteúdo ainda estará no formato de texto, mas ele estará divido no seguinte formato:
{name 1}
{paragraph 1}
{paragraph 2}
...
{paragraph n}
{name 2}
{paragraph 1}
{paragraph 2}
...
{paragraph n}
python data/generator/generate_raw_data.py caminho-para-o-pdf primeira-página ultima-página caminho-para-o-txt
O script anterior não é perfeito, até por que o texto do livro não tem uma estrtura bem determinada, por causa das imagens, tabelas e outros detalhes das páginas, então muitas vezes alguns blocos não irão ficar na formatação esperada, por exemplo, se você executar esse comando:
python data/generator/generate_raw_data.py livro.pdf 91 91 data/generator/raw.txt
A origem Àmigo dos Animais
estará na seguinte forma:
Amigo dos Animais
Você pode ter sido cavalariço no estábulo de um castelo, criador de gado em uma fazenda, ginete de Namalkah ou mesmo tratador em um zoológico ou circo — em Arton, existem espetáculos circenses com animais em jaulas, que talvez você tenha desejado libertar. Ou então nada disso: desde criança você tem facilidade em lidar com animais, sempre conversou com eles, sentiu ser capaz de compreendê-los. Em certos lugares ou tribos, alguma montaria especial seria destinada a você.
Itens. Cão de caça, cavalo, pônei ou trobo (escolha um). Benefícios. Adestramento, Cavalgar (perícias); Amigo Especial (poder).
Como você pode ver, Itens
e Benefícios
estão no mesmo parágrafo, então você vai precisar corrigir esse caso e outros semelhantes no arquivo. Então o texto anterior deve ficar assim:
Amigo dos Animais
Você pode ter sido cavalariço no estábulo de um castelo, criador de gado em uma fazenda, ginete de Namalkah ou mesmo tratador em um zoológico ou circo — em Arton, existem espetáculos circenses com animais em jaulas, que talvez você tenha desejado libertar. Ou então nada disso: desde criança você tem facilidade em lidar com animais, sempre conversou com eles, sentiu ser capaz de compreendê-los. Em certos lugares ou tribos, alguma montaria especial seria destinada a você.
Itens. Cão de caça, cavalo, pônei ou trobo (escolha um).
Benefícios. Adestramento, Cavalgar (perícias); Amigo Especial (poder).
Além disso é preciso remover tabelas, descrições de imagens e qualquer outro detalhe que não faça parte do texto e que o script anterior não detectou.
Esse script é simples, ele vai processar os blocos de informações e gerar um json no formato que é esperado para os items do livro que estão na extensão.
python data/generator/generate_book_items.py caminho-para-o-txt caminho-para-o-json
Com os dados gerados, agora é preciso copiar/recortar para a pasta data, é o processo mais customizados de todos, por que vai depender de quais dados você está movendo, mas tende a ser simples também.