Oi Fábio, como você está?
Peço perdão pela demora em obter um retorno.
Por mais que o arquivo não siga um padrão bem definido, as datas provavelmente terão um padrão, elas normalmente estão separadas por barras ou traços, como mostro abaixo:
21/02/2001
21-02-2001
Supondo que você queira extrair esses valores, algo que podemos fazer é utilizar um recurso chamado Regex (expressões regulares), que nada mais é do que a capacidade de encontrar padrões em textos. Para o caso das datas, podemos utilizar o seguinte código:
import re
re.findall(r"\d{2}/\d{2}/\d{4}", conteudo_pdf)
Onde, a função findall retorná todas as ocorrências do padrão e o padrão é demarcado pela expressão \d{2}/\d{2}/\d{4}, que diz que estamos procurando 2 dígitos (\d{2}
) seguidos de uma barra (/) acrescentado a 2 dígitos (\d{2}
) seguidos de uma barra (/) e por fim 4 dígitos (\d{4}
).
Para leitura do arquivo PDF e sua conversão em texto, uma boa opção é a biblioteca tika. Instale-a através do seguinte comando:
pip install tika
O código completo ficará da seguinte forma:
import re
from tika import parser
raw = parser.from_file('exemplo.pdf')
conteudo_pdf = raw['content']
lista_de_datas_do_arquivo = re.findall(r"\d{2}/\d{2}/\d{4}", conteudo_pdf)
print(f"Datas do arquivo: {lista_de_datas_do_arquivo}")
Para esse exemplo, usei como base um arquivo que contém um texto e 3 datas espalhadas ao longo dele, sem nenhum padrão de posição definido, como mostro na imagem abaixo:
Resultado ao executar o código:
Datas do arquivo: ['21/01/1999', '05/08/2001', '25/12/2007']
Caso queira conhecer mais sobre expressões regulares, recomendo o curso Expressões regulares: Capturando textos de forma mágica
. Para conhecimento mais rápido a respeito de outras possibilidades das expressões regulares, recomendo o artigo RegEx básico em Python.
De posse disso, a ideia é que você crie uma função para fazer essa extração e após isso passe esses dados para o treinamento do modelo.
Qualquer dúvida fico à disposição.
Grande abraço e bons estudos!