Foto zu PDF
Ziel sind einzelne Seiten in korrekter Reihenfolge, enge Ränder und erhaltene Striche an den Kanten. Arbeite lokal mit Fotos. Ein spezielles Plugin oder MCP ist für diesen Prozess nicht erforderlich.
Bewährte Vorgehensweise
- Prüfe die Quellen. Berücksichtige EXIF. Überprüfe die Reihenfolge anhand von Namen/Zeitstempeln und Inhalt; die Aufnahmezeit allein beweist keine Reihenfolge. Finde Umschlag, Doppelseiten, erneut aufgenommene Duplikate, leere Blätter. Die Helligkeit allein erlaubt keine zuverlässige Unterscheidung zwischen einer blassen Zeichnung und einer leeren Seite. Liegt das Papier auf hellem Hintergrund (weißer Tisch, Blatt, Bildschirm in der Nähe) und werden keine Konturen erkannt, bitte um Neuaufnahme auf einer dunklen, matten Oberfläche.
- Markiere die Blätter. Für einzelne Blätter (Dokumente, A4, auch quer) starte
prepare --layout pages.autoteilt eine breite Kontur nur bei Anzeichen einer Falz (Schatten des Buchrückens oder Knicklinie), kann aber bei ungewöhnlichen Blättern Fehler machen.scan.py prepareerstellt einen vorläufigen Manifest und Kontaktbögen mit Konturen. Der Detektor findet Papier als helle, wenig gesättigte Fläche, zieht die Kanten zum scharfen Übergang „Papier → dunkler Hintergrund“ und sucht bei Doppelseiten nach der Falz. Die Falz ist die Stelle, an der sich die Linien des Liniengitters brechen. Der Schatten des Buchrückens liegt auf einer Seite, daher wird bei einem tiefen Schatten die Falz an der Basis des Helligkeitsabfalls auf der dunklen Seite gesetzt. Bei Referenzheften beträgt der mediane Falzfehler 2–3 Pixel. Dies bleibt eine Hypothese. Seiten mit nicht leeremflags(gutter-*,partner-mismatch,touches-frame,aspect-outlier,one-side-unruled,margin-ink,contour,full-frame-fallback,duplicate) zuerst manuell markieren. Die übrigen anhand des Fotos prüfen: Der Detektor könnte einen Monitor, einen Beleg oder eine Hälfte einer Doppelseite erfassen.scan.py inspectliefert vergrößerte Ausschnitte jeder Ecke mit Unterteilungen in Bildbruchteilen – damit korrigiere die Ecken im Manifest. Jedes Blatt erhält seine vier Ecken TL, TR, BR, BL in Koordinaten nach EXIF-Drehung. - Korrigiere die Perspektive. Standardmäßig eine projektive Matrix pro Blatt. Keine einzelnen Zeilen/Spalten der automatisch gefundenen Kante folgen lassen: Gitter, Text, Finger und Schatten können für eine Kante gehalten werden und Wellen im gesamten Blatt erzeugen. Für eine explizit angeforderte vollständige Entzerrung einer gekrümmten Buchseite ist ein separater, geprüfter Algorithmus und eine zusätzliche Geometrieprüfung erforderlich.
- Passe die Ränder an. Ein enger Beschnitt ist einem gleichmäßig großen Rand überall vorzuziehen.
bleed_pxist standardmäßig 0. Füge individuell einen kleinen Rand nur dann hinzu, wenn wirklich Aufzeichnungen oder ein gewölbter Rand mit Informationen außerhalb der geraden Linie zwischen den Ecken liegen. Überprüfe Buchstabenoberkanten, Punkte über Umlauten, Daten links, Text an der Falz und untere Linien von Zeichnungen. Die untere Zeile reicht oft bis zur äußersten Kante – dort liegt die Grenze am Median der Kante, nicht bündig. Wenn zwischen der engen Kante und dem Papierrand Federstriche vorhanden sind, verschiebtpreparedie Kante selbst zu ihnen (Feldmargin_ink, nicht weiter als 4 % der Breite). Bleistift wird so nicht geschützt, daher überprüfe Daten und Unterschriften am Rand mit bloßem Auge. Eine gekrümmte Kante wird durch eine Gerade angenähert, daher können Ecken eines gebogenen Blattes knapp außerhalb der Grenze bleiben. Zusätzlichen Beschnitt des PDFs führe mit dem Befehlcropdurch, ohne erneute Streckung und JPEG-Neukompression. - Erhalte blasse Striche. Eine sanfte Beleuchtungskorrektur ist zulässig; eine harte Binarisierung kann Bleistift löschen. Für Umschläge, Fotos und wichtige Farben deaktiviere
enhance. Keine Buchstaben, Schemata oder fehlenden Bildteile durch ein generatives Modell ergänzen. OCR nur hinzufügen, wenn sie benötigt oder angefordert wird. - Überprüfe das endgültige PDF. Verwende das verfügbare PDF-Skill zur Erstellung/Prüfung, einschließlich des darin vorgesehenen Operationsmarkers.
reviewrendert alle Seiten, erstellt Kontaktbögen und listet Seiten mit Hintergrund oder Aufzeichnungen am Rand auf (edges.json).comparezeigt jede Seite aus dem Foto mit einem Rand von 4 % und einem roten Beschnittrahmen – man sieht, was außen geblieben ist. Sieh dir das gesamte Dokument an, nicht nur die ersten Seiten. Ein sparsames Schema für große Mengen: Führecomparefür alle Seiten durch, verteile sie in Paketen von maximal 16 an parallele Agenten mit einem günstigen, bildfähigen Modell (in Claude Code – Sonnet, in Codex –gpt-5.6-luna) mit der Aufgabe aus references/screening.md unverändert. Öffne selbst nur die Seiten, bei denen der Prüferdefectangibt, sowie Seiten mitprepare-Flags; korrigiere nur Bestätigtes. Bei 32 Seiten eines Entwurfs mit 8 bekannten Winkelfehlern > 3 % fand dieses Schema alle 8 (Sonnet – 7, Flags – die verbleibende) bei 4 Fehlalarmen; Haiku fand 4 und fügte nur Fehlalarme hinzu, daher reicht ein einzelner Haiku nicht. Bei einem zweiten Heft (32 Seiten, Aufgabe nicht angepasst) fanden Sonnet undgpt-5.6-lunasichtbare Hintergrundstreifen ohne Fehlalarme, übersahen jedoch Seiten mit Winkelfehlern von 1,5–2 %;gpt-6.1-terramarkierte fast alles, darunter 12 von 19 sauberen Seiten – Einsparung entfällt. Das Schema wurde an einem Heft getestet, die Aufgabe an denselben Seiten erstellt: Bei wichtigen Dokumenten oder Zweifeln alle Seiten selbst ansehen. Die Seitennummern in den Antworten der Prüfer überprüfen gleichzeitig die Reihenfolge. Nach einem Beschnitt die betroffenen Seiten erneut prüfen; nach einer Änderung des Geometriealgorithmus das gesamte Dokument. Die Seitenzahl und die korrekte Konfiguration ersetzen keine Durchsicht.
Für eine solche Digitalisierung zieht der Benutzer es vor, bestätigt leere Blätter zu entfernen; eine ausdrückliche Aufforderung, sie zu behalten, hat Vorrang. Duplikate nach Sichtprüfung ausschließen, nicht anhand von Ähnlichkeit des Gitters/der Handschrift. Den Umschlag aufbewahren, sofern keine andere Anweisung vorliegt. Eine Doppelseite von links nach rechts lesen, wenn die Quelle so angelegt ist.
Befehle
Der Pfad zum Skript wird relativ zu diesem Skill bestimmt. Schema und Parameter: references/commands.md. Winkel, Pfade, Seitennummern und Proportionen aus dem vorherigen Heft nicht übertragen.
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
Abhängigkeiten: Pillow, NumPy, OpenCV, ReportLab für Fotos; pypdfium2 für crop; Poppler pdftoppm für review und measure per PDF. Importe sind auf die Befehle aufgeteilt. Prüfe verfügbare Interpreter/fertige Umgebungen; verwende bei Bedarf ein separates venv, ohne das globale Python zu ändern. Wenn OpenCV/NumPy als Systempakete installiert sind, erstelle das venv mit demselben Interpreter und --system-site-packages (python3 -m venv; uv venv verwendet standardmäßig sein eigenes Python und erkennt systemisches cv2 nicht). Netzwerk wird nicht als obligatorisch vorausgesetzt. Keine Pfade aus dem Cache einer bestimmten Maschine in das Skill einbetten.
Proportionen und Blattgröße. aspect: null wird anhand der Konturseiten geschätzt und kann unter einem Winkel um 1–2 % abweichen. Für kariertes Papier erstelle einen Entwurf und starte measure. Es findet die Kästchengröße, berechnet die physische Größe der Seiten und schlägt ein aspect für das gesamte Heft und --width-mm vor. Die Werte aus der Ausgabe übernehmen, nicht aus dem vorherigen Heft. Mit identischem --width-mm haben alle PDF-Seiten eine einheitliche physische Größe. Andernfalls wird die Größe aus Pixeln und --dpi berechnet und schwankt mit dem Aufnahmeabstand.
build erfordert reviewed: true für die eingeschlossenen Seiten: Dies ist eine Markierung der Überprüfung der Markierung durch den Agenten, keine zusätzliche Abstimmung mit dem Benutzer. Nicht um Erlaubnis für die routinemäßige Verarbeitung bereits übergebener Fotos fragen.
Detektor-Regressionen. Ein geprüftes Manifest eines Heftes ist eine Referenz. Nach Änderungen an scan.py führe prepare auf denselben Fotos und eval <neues Manifest> --reference <Referenz> aus. Der Befehl zeigt den Winkelfehler in % der Seitenbreite, den Anteil der markierten Seiten und „stille“ Fehler – nicht markierte Seiten mit einem Fehler größer als --tolerance (standardmäßig 3 %). Rückgabecode 1, wenn stille Fehler häufiger als --max-silent sind. Referenzen mit persönlichen Fotos nicht in das Skill-Repository legen.
Abschluss
- Die Originalfotos nicht verändern. Ein vorhandenes PDF erst nach Prüfung der neuen Version ersetzen. Markierungen und Parameter für punktuelle Korrekturen aufbewahren.
- Bei wiederholter Korrektur zuerst die Aktualität der Datei prüfen. Keine kumulative JPEG-Neukompression zulassen.
- Ergebnis, Seitenzahl und wesentliche Einschränkungen der Quellen mitteilen. Wenn ein Teil der Aufzeichnung bereits außerhalb des Bildes liegt, dies angeben, anstatt eine Wiederherstellung zu behaupten.
- Das Skill spart Vorbereitung und wiederholtes Schreiben von Code; eine vollautomatische Grenzerkennung und den Verzicht auf Sichtprüfung verspricht es nicht.