Text in handgeschriebene Notizen
Du verwandelst Inhalte in Seiten, die wie von Hand geschrieben aussehen. Das Rendering-Tool ist scripts/handnotes.py. Es benötigt nur Python mit Pillow und numpy, die in den Code-Sandboxes von ChatGPT und Claude bereits vorhanden sind.
Standard-Ergebnis: ein Handyfoto einer Notizbuchseite auf kariertem Papier, in blauer Tinte, geschrieben in der integrierten Standardschrift. Wenn der Nutzer nichts Besonderes verlangt, gib ihm das.
Schritt 0: Wessen Handschrift?
Frage einmal kurz: „Schick mir so viele Fotos deiner eigenen Handschrift wie möglich (alle Seiten, die du bereits geschrieben hast: Notizen, Hausaufgaben). Sonst verwende ich die Standardschrift.“
- Keine Fotos: verwende die Standardschrift. Frage nicht noch einmal.
- Fotos: lerne sie zuerst (siehe Handschrift aus Fotos lernen unten), rendere dann mit
--hand ihre-hand. Mehr Seiten geben mehr Proben pro Buchstaben und ein natürlicheres Ergebnis. 3 bis 6 Seiten sind gut.
Schritt 1: Eingabe lesen
- PDF: extrahiere den Text mit pypdf, pdftotext oder deinem eigenen Leser. Bei einem eingescannten PDF betrachte die Seitenbilder.
- Foto, Screenshot, Whiteboard: lies es selbst per Vision. Verwende keine OCR-Bibliotheken.
- Text, eine Lösung, eine Webseite: verwende sie, wie sie ist.
Schritt 2: Die Seite schreiben
Es gibt zwei Fälle.
- Notizen aus einer Lektion: schreibe, was ein guter Schüler schreibt. Kurze Zeilen, Schlüsselwörter, die Struktur der Quelle, 15 bis 30 % ihrer Länge.
- Eine Lösung oder Hausaufgabe, die der Nutzer gibt: behalte jeden Schritt und jede Zahl. Schreibe es so, wie ein Schüler es auf Papier schreibt:
1/,a)undb)Beschriftungen, eine Gleichung pro Zeile,=>zwischen den Schritten. Füge keine KI-ähnliche Verzierung hinzu: kein „Tipp:“, kein überall Hervorheben, kein Fettdruck. Unterstreiche oder setze!!nur bei einem Endergebnis, wenn der Nutzer es tun würde.
Behalte die Sprache des Nutzers bei. Behalte Zahlen, Namen und Formeln exakt.
Auszeichnung:
# Titel ## Überschrift ### Unterüberschrift (unterstrichen)
- Aufzählung (2 Leerzeichen = eine Ebene tiefer) 1. nummeriert
-> Pfeilzeile !! WICHTIGE Zeile (rot) > Randnotiz (Akzenttinte)
[ ] To-do [x] erledigt (abgehakt) --- Trennlinie Leerzeile = eine Zeile überspringen
inline: ==hervorheben== **fett** __unterstrichen__ ~~durchgestrichen~~ {rot}farbige Tinte{/} -> (gezeichneter Pfeil)
\$ = ein Dollarzeichen $...$ Inline-Mathe $$...$$ allein in einer Zeile = angezeigte Formel
Mathe. Setze jede Formel in $...$, auch eine kurze wie $x^2$ oder $E_2$. Unterstützt:
\frac{a}{b}, \sum_{k=1}^{n}, \prod, \int_a^b, \lim_{n \to +\infty}, \sqrt{x}, \sqrt[3]{x}, x^{n+1}, x_i, \left( ... \right), \binom{n}{k}, \vec{u}, \bar{x}, \mathbb{R}, \text{...}, \mid, griechische Buchstaben, \in \subset \cup \cap \emptyset \forall \exists \leq \geq \neq \approx \pm \times \cdot \infty \to \implies \iff, und Abstände \, \; \quad.
Schreibe Dezimalzahlen wie in der Quelle (0,81 oder 0.81) und große Zahlen als 50\,000 innerhalb der Mathematik. Schreibe Intervalle, wie sie gelesen werden: $[0, 1[$. Setze große Formeln in eine eigene $$...$$-Zeile. Eine zu breite Formel wird verkleinert, um auf die Seite zu passen, aber das Aufteilen einer langen Formel bei = auf zwei Zeilen sieht natürlicher aus.
Speichere die Seite als notes.md.
Schritt 3: Rendern
python scripts/handnotes.py render notes.md -o notes.pdf
Das ergibt den Standard: ein Notizbuchfoto, kariertes Papier, blaue Tinte, Standardschrift. Ändere nur, was der Nutzer verlangt hat:
| Option | Werte |
|---|---|
--style | notebook (Handyfoto einer echten Seite: ungleichmäßiges Licht, nach unten wandernde Linien, geneigtes Blatt, Kugelschreibertinte) · ipad (separater Motor: Buchstaben als durchgehende, gleichmäßige Apple-Pencil-Striche auf sauberer Seite) |
--paper | squared (Notizbuch) oder grid (iPad), lines, college, seyes, dots, blank |
--hand | default, oder ein Ordner, der mit build-hand oder learn erstellt wurde |
--font | stattdessen eine Handschrift-Schriftart verwenden: caveat, kalam, patrick, gochi, indie, playpen |
--ink | blue (Notizbuch) oder black (iPad), red, green, purple, pencil |
--page | a4, letter, ipad, ipad-landscape |
--seed N | jedes Mal dieselbe Seite; ändere N für eine andere Version |
Verwende -o notes.png, um Bilder (notes-1.png, notes-2.png usw.) anstelle einer PDF zu erhalten.
Schritt 4: Überprüfen, dann ausliefern
Sieh dir Seite 1 an (rendere ein PNG, wenn du keine PDFs anzeigen kannst). Überprüfe, dass keine Zeile über den Rand läuft oder eine andere überlappt und dass jede Zahl mit der Quelle übereinstimmt. Gib dann die Datei.
Handschrift aus Fotos lernen
Das funktioniert mit allen Seiten, die die Person bereits geschrieben hat. Sie müssen nichts ausfüllen.
-
Ausschneiden:
python scripts/handnotes.py segment p1.jpg p2.jpg p3.jpg -o hand-workDies entfernt die gedruckten Linien des Notizbuchs, schneidet jedes Tintenstück aus und schreibt nummerierte Blätterhand-work/sheet-pageN-K.png. -
Beschriften: sieh dir jedes Blatt an. Du weißt, was die Seiten sagen, weil du die Originalfotos lesen kannst. Schreibe
hand-work/labels.json(Seitennummern folgen der Reihenfolge der Fotos):{"1": {"12": "a", "13": "(", "40": "the", "41": "7"}, "2": {"5": "é", "9": "dy"}}- Beschrifte nur Stücke, bei denen du dir sicher bist. Überspringe alles Unklare, Halbierte, mit einem Nachbarn Verklebte, Durchgestrichene oder nur ein Linienfragment.
- Ein Stück, das mehrere verbundene Buchstaben enthält, kann als dieses Wort oder Paar beschriftet werden („the“, „le“, „qu“). Es wird immer dann wiederverwendet, wenn diese Sequenz vorkommt, was sehr natürlich aussieht.
- Strebe mindestens 2 oder 3 Proben jedes Kleinbuchstabens und jeder Ziffer an.
-
Erstellen:
python scripts/handnotes.py build-hand hand-work hand-work/labels.json -o ihre-handDies normalisiert Größen und Tintenstärke, verwirft schlecht geschnittene Proben und erstellt fehlende Buchstaben aus den eigenen Strichen des Schreibers (u aus n, m aus zwei n, w aus zwei v, r, q). Akzente (é è à ê ç ë) werden auf ihren eigenen einfachen Buchstaben gezeichnet. Es gibt die Buchstaben aus, die eine Schriftart weiterhin ersetzt. -
Überprüfe ein Rendering. Sieh dir eine Seite an und zoome auf jeden Buchstaben, der zerbrochen oder zu blass aussieht. Finde seine Proben in den
ihre-hand/glyphs-Dateien, die inihre-hand/hand.jsonaufgelistet sind, entferne das falsche Label und erstelle neu.
Behalte den Ordner ihre-hand: Es ist ihre Handschrift. Biete an, ihn zu zippen, damit sie ihn beim nächsten Mal wiederverwenden können.
Es gibt auch eine Vorlagen-Route (template, dann learn): Die Person füllt ein 2-seitiges Gitter von Kästchen aus. Das ist sauberer, aber mehr Arbeit für sie, also biete es nur an, wenn sie es bevorzugt.