Skip to content
Extraits de code Groupes Projets
Valider 06685497 rédigé par Bastien Le Querrec's avatar Bastien Le Querrec
Parcourir les fichiers

RAAspotter: remplace pdfminer.six par pypdf

parent b35afcd9
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -21,9 +21,7 @@ import dateparser ...@@ -21,9 +21,7 @@ import dateparser
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
from pyvirtualdisplay import Display from pyvirtualdisplay import Display
from pdfminer.high_level import extract_text from pypdf import PdfReader
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from stem import Signal from stem import Signal
from stem.control import Controller from stem.control import Controller
...@@ -64,45 +62,23 @@ class RAAspotter: ...@@ -64,45 +62,23 @@ class RAAspotter:
def get_pdf_dates(self, data_dir): def get_pdf_dates(self, data_dir):
raa_data_dir = f'{data_dir}/raa/' raa_data_dir = f'{data_dir}/raa/'
p_pdf = None reader = PdfReader(f'{raa_data_dir}{self.get_sha256()}.pdf')
pdf_parser = None pdf_metadata = reader.metadata
pdf_creation_date_raw = None
pdf_modification_date_raw = None if pdf_metadata.creation_date:
self.pdf_creation_date = pdf_metadata.creation_date
try: if pdf_metadata.modification_date:
p_pdf = open(f'{raa_data_dir}{self.get_sha256()}.pdf', 'rb') self.pdf_modification_date = pdf_metadata.modification_date
pdf_parser = PDFParser(p_pdf)
except Exception as exc:
logger.warning(f'Impossible d\'ouvrir le PDF {self.get_sha256()}.pdf pour extraction de ses métadonnées : {exc}')
try:
pdf_creation_date_raw = PDFDocument(pdf_parser).info[0]['CreationDate'].decode('utf-8').replace('D:', '').replace('\'', '')
if pdf_creation_date_raw:
try:
self.pdf_creation_date = datetime.datetime.strptime(pdf_creation_date_raw, '%Y%m%d%H%M%S%z')
except ValueError:
self.pdf_creation_date = datetime.datetime.strptime(pdf_creation_date_raw, '%Y%m%d%H%M%S')
except Exception as exc:
pass
try:
pdf_modification_date_raw = PDFDocument(pdf_parser).info[0]['ModDate'].decode('utf-8').replace('D:', '').replace('\'', '')
if pdf_modification_date_raw:
try:
self.pdf_modification_date = datetime.datetime.strptime(pdf_modification_date_raw, '%Y%m%d%H%M%S%z')
except ValueError:
self.pdf_modification_date = datetime.datetime.strptime(pdf_modification_date_raw, '%Y%m%d%H%M%S')
except Exception as exc:
pass
def extract_content(self, data_dir): def extract_content(self, data_dir):
raa_data_dir = f'{data_dir}/raa/' raa_data_dir = f'{data_dir}/raa/'
text = "" text = ""
try:
text = extract_text(f'{raa_data_dir}{self.get_sha256()}.ocr.pdf') reader = PdfReader(f'{raa_data_dir}{self.get_sha256()}.ocr.pdf')
except Exception as exc: for page in reader.pages:
logger.warning(f'ATTENTION: Impossible d\'extraire le texte du fichier {self.get_sha256()}.pdf : {exc}') text = text + "\n" + page.extract_text()
# Écrit le texte du PDF dans un fichier texte pour une analyse future # Écrit le texte du PDF dans un fichier texte pour une analyse future
f = open(f'{raa_data_dir}{self.get_sha256()}.txt', 'w') f = open(f'{raa_data_dir}{self.get_sha256()}.txt', 'w')
...@@ -147,9 +123,6 @@ class RAAspotter: ...@@ -147,9 +123,6 @@ class RAAspotter:
# On crée le dossier de téléchargement # On crée le dossier de téléchargement
os.makedirs(data_dir, exist_ok=True) os.makedirs(data_dir, exist_ok=True)
# pdfminer.six est un peu trop verbeux en mode debug, donc on relève son niveau de log
logging.getLogger("pdfminer").setLevel(logging.WARNING)
self.session = requests.Session() self.session = requests.Session()
self.data_dir = data_dir self.data_dir = data_dir
self.found = False self.found = False
......
beautifulsoup4>=4.12.3 beautifulsoup4>=4.12.3
dateparser>=1.2.0 dateparser>=1.2.0
Mastodon.py>=1.8.1 Mastodon.py>=1.8.1
pdfminer.six>=20231228
pycodestyle>=2.11.1 pycodestyle>=2.11.1
pypdf>=4.2.0
PyVirtualDisplay>=3.0 PyVirtualDisplay>=3.0
requests>=2.31.0 requests>=2.31.0
selenium>=4.19.0 selenium>=4.19.0
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter