diff --git a/ppparis.py b/ppparis.py index a67434ec37294fc6621e32d29b509999cfebd946..7bd1b2bb3899cc67b79cc3c808e3d116ea41f5f0 100755 --- a/ppparis.py +++ b/ppparis.py @@ -76,6 +76,19 @@ def parse_pdf(filename, name, date): if found: print_output('') +def ocr(file,url,retry_on_failure=True): + cmd = ['ocrmypdf', '-l', 'eng+fra', '--output-type', 'pdfa', '--redo-ocr', '--skip-big', '500' , __DATA_DIR+filename, __DATA_DIR+filename] + logging.debug(f'Lancement de ocrmypdf: {cmd}') + try: + output = subprocess.check_output(cmd, stderr=subprocess.STDOUT) + except subprocess.CalledProcessError as exc: + if exc.returncode == 2 and retry_on_failure: + logging.warning('ATTENTION : Le fichier n\'est pas un PDF correct, nouvelle tentative de le télécharger') + download_file(url,file) + ocr(file,url,False) + elif not exc.returncode == 6: + logging.warning('ATTENTION : Impossible d\'OCRiser le document', exc.returncode, exc.output) + # Début du script parser = argparse.ArgumentParser(prog='ppparis.py', description='Télécharge les RAA de la Préfecture de police de Paris et recherche des mots-clés') parser.add_argument('-n', '--no-headless', action='store_true', help='ne lance pas le navigateur en mode headless (pratique pour débugguer ou en dehors d\'une CI)') @@ -158,12 +171,6 @@ for a in soup.find_all('a', href=True): logging.info(f'Nouveau fichier : {name} ({date}). URL : {url}') download_file(url, __DATA_DIR+filename) - cmd = ['ocrmypdf', '-l', 'eng+fra', '--output-type', 'pdfa', '--redo-ocr', '--skip-big', '500' , __DATA_DIR+filename, __DATA_DIR+filename] - logging.debug(f'Lancement de ocrmypdf: {cmd}') - try: - output = subprocess.check_output(cmd, stderr=subprocess.STDOUT) - except subprocess.CalledProcessError as exc: - if not exc.returncode == 6: - logging.warning('ATTENTION : Impossible d\'OCRiser le document', exc.returncode, exc.output) + ocr(__DATA_DIR+filename,url,True) parse_pdf(filename, name, date)