3.1 KiB
Collecteur de PDF officiels
Ce dossier contient un collecteur local pour repérer, télécharger et ranger les PDF officiels liés aux cycles 3 et 4 depuis des pages sources de l'État français, principalement éduscol.
Le script est volontairement prudent :
- il ne suit que les domaines listés dans
seeds.json; - il limite la profondeur de crawl ;
- il fonctionne en
dry-runpar défaut ; - il calcule un SHA256 pour éviter les doublons ;
- il range les fichiers par
Cycle 3/Cycle 4puis par matière ; - il met les cas ambigus dans
A_trier.
Lancer un test local
Depuis Programme :
python .\pdf_collecteur\collect_official_pdfs.py --dry-run
Pour limiter le test à peu de pages :
python .\pdf_collecteur\collect_official_pdfs.py --dry-run --max-depth 1 --limit-pages 20
Pour repartir d'un manifest/log vide pendant les essais :
python .\pdf_collecteur\collect_official_pdfs.py --dry-run --fresh --max-depth 1 --limit-pages 20
Si Python échoue avec CERTIFICATE_VERIFY_FAILED sur Windows, utiliser temporairement :
python .\pdf_collecteur\collect_official_pdfs.py --dry-run --insecure --max-depth 1 --limit-pages 20
Télécharger les nouveaux PDF
python .\pdf_collecteur\collect_official_pdfs.py --download
Sans --download, aucun PDF n'est écrit dans les dossiers Cycle 3 / Cycle 4.
Sorties
Le script écrit dans pdf_collecteur/state/ :
manifest.csv: catalogue des PDF vus/téléchargés ;crawl_log.jsonl: journal technique ligne par ligne ;downloads_tmp/: fichiers temporaires pendant le téléchargement.
Ajouter des sources
Modifier seeds.json :
{
"url": "https://eduscol.education.fr/...",
"cycle_hint": "Cycle 3",
"subject_hint": "Math"
}
Les hints ne forcent pas le classement, mais ils servent de point d'appui quand le lien PDF est peu explicite.
Déploiement VPS
Le script n'a pas de dépendance externe Python. Sur VPS :
cd /chemin/vers/Programme
python3 pdf_collecteur/collect_official_pdfs.py --dry-run --max-depth 2
python3 pdf_collecteur/collect_official_pdfs.py --download --max-depth 2
Pour automatiser, commencer avec un cron en --dry-run, relire manifest.csv, puis passer en --download quand les classements sont satisfaisants.
Indexer les PDF avec Poppler
Après téléchargement, générer les textes et métadonnées dans le format historique :
python .\pdf_collecteur\index_pdfs.py --fresh
Sur Windows avec Poppler installé via WinGet, utiliser plutôt le script PowerShell :
.\pdf_collecteur\index_pdfs.ps1 -Fresh
Le résultat est écrit dans :
extractions_pdf_indexed_global/
Format :
001.txt,002.txt, etc. : texte extrait avecpdftotext -layout.001.pdfinfo.txt,002.pdfinfo.txt, etc. : métadonnéespdfinfo.manifest.csv: correspondance entre ID, chemin PDF source, hash et statut.
Pour inclure aussi les PDF placés à la racine de Programme :
python .\pdf_collecteur\index_pdfs.py --fresh --include-root-pdfs