Photo en PDF
L'objectif est d'obtenir des pages individuelles dans le bon ordre, des bordures serrées et des traits préservés sur les bords. Travaillez localement avec des photos. Aucun plugin ou MCP spécial n'est requis pour ce processus.
Méthode éprouvée
- Examinez les sources. Tenez compte des EXIF. Vérifiez l'ordre par nom/date et contenu ; l'heure de la prise de vue ne prouve pas à elle seule la séquence. Repérez la couverture, les doubles pages, les duplicatas refaits, les feuilles vides. La luminosité ne permet pas de distinguer de manière fiable un dessin pale d'une page vide. Si le papier repose sur un fond clair (table blanche, feuille, écran à côté) et que les contours ne se détectent pas, demandez à reprendre la photo sur une surface mate foncée.
- Marquez les feuilles. Pour les feuilles individuelles (documents, A4, y compris en paysage), lancez
prepare --layout pages.autone divise un contour large que s'il y a des signes de pliure (ombre de la reliure ou ligne de pli), mais peut se tromper sur des feuilles inhabituelles.scan.py preparecrée un manifeste brut et des planches contact avec les contours. Le détecteur trouve le papier comme une zone claire peu saturée, attire les bords vers la transition nette « papier → fond sombre » et pour une double page, cherche le pli. Le pli est l'endroit où les lignes de réglure se brisent. L'ombre de la reliure se trouve sur une seule page ; pour une ombre profonde, le pli est placé à la base du saut de luminosité du côté sombre. Sur des cahiers de référence, l'erreur médiane du pli est de 2 à 3 px. Cela reste une hypothèse. Les pages avec unflagsnon vide (gutter-*,partner-mismatch,touches-frame,aspect-outlier,one-side-unruled,margin-ink,contour,full-frame-fallback,duplicate) doivent être marquées manuellement en priorité. Vérifiez les autres sur la photo : le détecteur peut prendre un écran, un ticket ou une moitié de double page.scan.py inspectdonne des agrandissements de chaque coin avec des graduations en fractions du cadre — corrigez les angles dans le manifeste à partir de ceux-ci. Chaque feuille reçoit ses quatre angles TL, TR, BR, BL dans les coordonnées après la rotation EXIF. - Corrigez la perspective. Par défaut, une matrice projective par feuille. Ne déplacez pas des lignes/colonnes individuelles à la suite d'un bord détecté automatiquement : une grille, du texte, des doigts et des ombres peuvent être pris pour un bord et créer des ondulations sur toute la feuille. Pour un redressement complet explicitement demandé d'une page de livre courbée, un algorithme distinct et vérifié ainsi qu'une vérification supplémentaire de la géométrie sont nécessaires.
- Ajustez les bordures. Un recadrage serré est préférable à une grande marge uniforme partout.
bleed_pxest par défaut à 0. Ajoutez une petite marge individuellement, seulement si une écriture ou un bord incurvé contenant de l'information dépasse réellement de la ligne droite entre les angles. Vérifiez les sommets des lettres, les points sur les lettres, les dates à gauche, le texte près du pli et les lignes inférieures des dessins. La ligne du bas atteint souvent le bord même – la bordure y suit la médiane du bord, pas un ajustement serré. Si des traits de plume se trouvent entre la bordure serrée et le bord du papier,preparedécale lui-même la bordure vers eux (champmargin_ink, pas plus de 4 % de la largeur). Le crayon n'est pas protégé ainsi, donc vérifiez visuellement les dates et signatures au crayon près du bord. Un bord incurvé est approximé par une ligne droite, donc les coins d'une feuille bombée peuvent rester légèrement en dehors de la bordure. Effectuez un recadrage supplémentaire du PDF avec la commandecrop, sans nouvel étirement ni recompression JPEG. - Conservez les traits pales. Une correction douce de l'éclairage est acceptable ; une binarisation agressive peut effacer le crayon. Pour les couvertures, les photos et les couleurs importantes, désactivez
enhance. Ne redessinez pas les lettres, schémas ou parties manquantes du cadre avec un modèle génératif. N'ajoutez l'OCR que lorsqu'il est nécessaire ou demandé. - Vérifiez le PDF final. Utilisez la compétence PDF disponible pour créer/vérifier, y compris le marqueur d'opération prévu par celle-ci.
reviewrend toutes les pages, crée des planches contact et liste les pages avec un fond ou une écriture près du bord (edges.json).comparemontre chaque page à partir de la photo avec une marge de 4 % et un cadre rouge de recadrage – on voit ce qui reste à l'extérieur. Parcourez l'intégralité du document, pas seulement les premières pages. Schéma économique pour un grand volume : faitescomparepour toutes les pages, distribuez-les par paquets de 16 maximum à des agents parallèles sur un modèle peu coûteux avec images (dans Claude Code — Sonnet, dans Codex —gpt-5.6-luna) avec la tâche de references/screening.md sans modification. N'ouvrez vous-même que les pages où le vérificateur a signalé undefect, et les pages avec des drapeauxprepare; ne corrigez que ce qui est confirmé. Sur un brouillon de 32 pages avec 8 erreurs d'angle connues > 3 %, ce schéma a trouvé les 8 (Sonnet — 7, les drapeaux — la restante) avec 4 fausses alertes ; Haiku en a trouvé 4 et n'a ajouté que de fausses alertes, donc Haiku seul ne suffit pas. Sur un deuxième cahier (32 pages, tâche non adaptée), Sonnet etgpt-5.6-lunaont trouvé des bandes de fond visibles sans fausse alerte, mais ont manqué les pages avec une erreur d'angle de 1,5 à 2 % ;gpt-6.1-terraa signalé presque tout, y compris 12 pages sur 19 vierges, donc pas d'économie avec lui. Le schéma a été testé sur un seul cahier, la tâche a été rédigée sur les mêmes pages : pour un document important ou en cas de doute, regardez toutes les pages vous-même. Les numéros de page dans les réponses des vérificateurs vérifient également l'ordre. Après un recadrage, revérifiez les pages concernées ; après une modification de l'algorithme géométrique, tout le document. Le nombre de pages et un config correct ne remplacent pas une inspection visuelle.
Pour cette numérisation, l'utilisateur préfère supprimer les feuilles confirmées vierges ; une demande explicite de les conserver est prioritaire. Éliminez les duplicatas après vérification visuelle, pas par similarité de grille/écriture. Conservez la couverture sauf instruction contraire. Lisez la double page de gauche à droite lorsque la source est ainsi organisée.
Commandes
Le chemin vers le script est défini relativement à ce skill. Schéma et paramètres : references/commands.md. Ne reportez pas les angles, chemins, numéros de page et proportions du cahier précédent.
python3 <skill>/scripts/scan.py prepare <photos> --work <work> --layout auto
python3 <skill>/scripts/scan.py inspect <work>/manifest.json --work <work>/inspect --ids 0006-L,0006-R
python3 <skill>/scripts/scan.py build <work>/manifest.json --output <work>/draft.pdf
python3 <skill>/scripts/scan.py measure <work>/draft-pages --work <work>/measure
python3 <skill>/scripts/scan.py review <work>/draft.pdf --work <work>/review
python3 <skill>/scripts/scan.py compare <work>/draft.scan.json --work <work>/compare
Dépendances : Pillow, NumPy, OpenCV, ReportLab pour les photos ; pypdfium2 pour crop ; Poppler pdftoppm pour review et measure à partir du PDF. Les importations sont séparées par commande. Vérifiez les interpréteurs/environnements prêts à l'emploi disponibles ; si nécessaire, utilisez un venv séparé sans modifier le Python global. Si OpenCV/NumPy sont installés en tant que paquets système, créez un venv sur le même interpréteur avec --system-site-packages (python3 -m venv ; uv venv prend par défaut son propre Python et ne verra pas cv2 système). Le réseau n'est pas supposé obligatoire. N'intégrez pas de chemins provenant du cache d'une machine spécifique dans le skill.
Proportions et taille de la feuille. aspect: null est estimé à partir des côtés du contour et peut être décalé de 1 à 2 % sous un angle. Pour du papier quadrillé, assemblez un brouillon et lancez measure. Il trouve le pas de la grille, calcule la taille physique des pages et propose un aspect unique pour tout le cahier et --width-mm. Prenez les valeurs de la sortie, pas du cahier précédent. Avec un --width-mm identique, toutes les pages du PDF ont la même taille physique. Sinon, la taille est calculée à partir des pixels et de --dpi et varie avec la distance de prise de vue.
build exige reviewed: true pour les pages incluses : c'est une marque de vérification du marquage par l'agent, pas une demande de validation supplémentaire à l'utilisateur. Ne demandez pas la permission pour un traitement de routine de photos déjà fournies.
Régressions du détecteur. Un manifeste de cahier vérifié est une référence. Après avoir modifié scan.py, relancez prepare sur les mêmes photos et eval <nouveau manifeste> --reference <référence>. La commande affiche l'erreur d'angle en % de la largeur de la page, la proportion de pages marquées et les erreurs « silencieuses » — pages non marquées avec une erreur supérieure à --tolerance (par défaut 3 %). Code de retour 1 si le nombre d'erreurs silencieuses dépasse --max-silent. Ne placez pas de références avec des photos personnelles dans le dépôt du skill.
Achèvement
- Ne modifiez pas les photos d'origine. Remplacez le PDF existant après vérification de la nouvelle version. Conservez le marquage et les paramètres pour des corrections ponctuelles.
- Lors d'une correction ultérieure, vérifiez d'abord l'actualité du fichier. Évitez la recompression JPEG cumulative.
- Communiquez le résultat, le nombre de pages et les limitations importantes des sources. Si une partie de l'écriture est déjà hors cadre, indiquez-le plutôt que de prétendre à une restauration.
- Le skill économise la préparation et la réécriture du code ; il ne promet pas une détection automatique parfaite des bords ni l'annulation de la vérification visuelle.