#!/usr/bin/env npx ts-node /** * Script d'extraction des images d'alinéa depuis les documents de l'Assemblée nationale * * Ce script parcourt tous les fichiers HTML des documents et extrait toutes les * informations sur les pastilles d'alinéa dans un fichier JSON intermédiaire. * * Ce fichier JSON est ensuite utilisé par : * - `merge_reviewed_alineas_numbers.ts` : pour fusionner les corrections manuelles * - `generate_alineas_numbers_review.ts` : pour générer la page HTML de révision * * ## Usage * * ```bash * npx tsx src/scripts/extract_alineas_images.ts [chemin_vers_documents] [--output fichier.json] * ``` * * Par défaut : * - Analyse `/home/eraviart/Projects/tricoteuses/assemblee-data/Documents` * - Génère `src/lib/alineas/alineas_images_extracted.json` * * ## Données extraites * * Pour chaque image unique (par hash) : * - hash MD5, données base64, dimensions * - Liste de toutes les occurrences avec contexte (document, article, position, voisins) * * Statistiques pré-calculées : * - Nombre d'occurrences, positions en tête d'article * - Transitions (prédécesseurs/successeurs) * * @module extract_alineas_images */ /** * Une occurrence d'une image dans un document */ export interface ImageOccurrence { documentPath: string; articleId: string | null; } /** * Données complètes d'une image unique (par hash) */ export interface ImageData { hash: string; base64Src: string; dimensions: { width: number; height: number; } | null; /** Hash de l'image après crop (suppression des bordures blanches/transparentes) */ croppedHash: string; /** Données base64 de l'image croppée (avec préfixe data:image/png;base64,) */ croppedBase64Src: string; occurrences: ImageOccurrence[]; } /** * Structure complète du fichier JSON extrait */ export interface ExtractedData { metadata: { extractionDate: string; documentsPath: string; documentsAnalyzed: number; documentsWithImages: number; articlesAnalyzed: number; totalOccurrences: number; uniqueHashes: number; }; images: Record; }