From 3be1ff80586fa9811fb91ba6484a0296dd74fbe6 Mon Sep 17 00:00:00 2001 From: dschlueter Date: Sun, 11 Oct 2026 22:41:26 +0200 Subject: [PATCH] docs: README und Bedienungsanleitung auf den Stand nach der Testdaten-Umstellung MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Beispiele schreiben nicht mehr nach testdaten/ (jetzt nur für lokale echte Reden), das glossar_vorschlag-Beispiel läuft auch im frischen Klon. - Bedienungsanleitung: Ausprobieren mit der Beispielrede (gemessen: 2:32 Minuten mit qwen3:32b), Beispielglossar, Namensregel des Prompts. - README: Namensregel im Ablauf, Testbeschreibung mit Beispielrede, übersprungenen Rede-Tests, Handarbeitsschutz, Wortformen, Bereichshinweis. Co-Authored-By: Claude Opus 5.5 --- BEDIENUNGSANLEITUNG.md | 26 ++++++++++++++++----- README.md | 51 +++++++++++++++++++++++++----------------- 2 files changed, 51 insertions(+), 26 deletions(-) diff --git a/BEDIENUNGSANLEITUNG.md b/BEDIENUNGSANLEITUNG.md index 3b8ca79..4b68574 100644 --- a/BEDIENUNGSANLEITUNG.md +++ b/BEDIENUNGSANLEITUNG.md @@ -149,6 +149,16 @@ Mit eigenem Dateinamen: # → lahnstein.korrigiert.txt, lahnstein.txt (Rohtext), lahnstein.aenderungen.html ``` +**Ausprobieren ohne YouTube:** Im Ordner `tests/daten/` liegt eine frei erfundene +Beispielrede (Festrede zum Jubiläum der Gemeinde „Auental“) mit typischen Hörfehlern +und einem passenden Glossar. Ein Lauf dauert etwa zwei bis drei Minuten und zeigt alle +Ergebnisse, auch den Änderungsbericht: + +```bash +./abschrift_korrigieren.py -i tests/daten/beispiel.de.txt -g tests/daten/beispiel.glossar.txt -o beispiel.korrigiert.txt +# → beispiel.korrigiert.txt, beispiel.aenderungen.html +``` + --- ## 4. Der Arbeitsablauf im Überblick @@ -213,10 +223,10 @@ versteht `abschrift_korrigieren.py`. Soll die Original-Untertiteldatei (`.vtt`, mit Zeitstempeln) erhalten bleiben: ```bash -./yt_untertitel.py -u 'https://www.youtube.com/watch?v=rm6lADgf6GQ' -n Lahnstein -d testdaten -# → testdaten/Lahnstein.de-orig.vtt -./vtt2txt.py -i testdaten/Lahnstein.de-orig.vtt -# → testdaten/Lahnstein.de-orig.txt +./yt_untertitel.py -u 'https://www.youtube.com/watch?v=rm6lADgf6GQ' -n Lahnstein -d untertitel +# → untertitel/Lahnstein.de-orig.vtt +./vtt2txt.py -i untertitel/Lahnstein.de-orig.vtt +# → untertitel/Lahnstein.de-orig.txt ``` Achtung: `yt_untertitel.py` nimmt ohne `-l` Deutsch (`de`), nicht die @@ -295,7 +305,9 @@ Namen und Hörfehler) plus eines **je Beitrag**: Das gemeinsame Glossar zuerst angeben, damit seine Ersetzungen zuerst greifen. Im Programmordner liegen Beispiele: `krone-schmalz.glossar.txt` (gemeinsam), `ramstein.glossar.txt`, `magdeburg.glossar.txt`, `lahnstein.glossar.txt` -(je eine Rede) und `iamfabian.glossar.txt` (Kanal über KI-Coding-Tools). +(je eine Rede) und `iamfabian.glossar.txt` (Kanal über KI-Coding-Tools). Ein kleines, +leicht nachvollziehbares Glossar zur Beispielrede steht in +`tests/daten/beispiel.glossar.txt`. ### 6.3 Entwurf vom Modell: `glossar_vorschlag.py` @@ -365,7 +377,9 @@ Statt `-i rede.txt` geht auch `-i rede.de.vtt` (Untertiteldatei) oder 4. **Korrektur:** Der Text wird in Abschnitte von etwa 1200 Wörtern geteilt, immer am Satzende, und Abschnitt für Abschnitt korrigiert. Abkürzungen wie „z. B.“, „Dr.“, „bzw.“ und Ordnungszahlen wie „2. Weltkrieg“ gelten dabei nicht als - Satzende. + Satzende. Das Modell ist angewiesen, nichts zu ergänzen, auch keine Vornamen oder + Titel aus dem Glossar: Steht dort „Alexander Dobrindt“, bleibt ein gesagtes + „Dobrindt“ trotzdem „Dobrindt“. 5. **Wortzahl-Prüfung:** Weicht die Wortzahl eines Abschnitts um mehr als 5 % ab, warnt das Programm (das Modell könnte etwas ausgelassen oder ergänzt haben). 6. **Absätze:** Das Modell nennt die Sätze, mit denen ein neuer Absatz beginnt; der diff --git a/README.md b/README.md index aecf47b..2809359 100644 --- a/README.md +++ b/README.md @@ -58,9 +58,9 @@ Oder in zwei Schritten, um den Rohtext vorher anzusehen: Dasselbe in Einzelschritten, wenn die VTT-Datei erhalten bleiben soll: ```bash -./yt_untertitel.py -u 'https://www.youtube.com/watch?v=rm6lADgf6GQ' -n Lahnstein -d testdaten -./vtt2txt.py -i testdaten/Lahnstein.de-orig.vtt -./abschrift_korrigieren.py -i testdaten/Lahnstein.de-orig.txt +./yt_untertitel.py -u 'https://www.youtube.com/watch?v=rm6lADgf6GQ' -n Lahnstein -d untertitel +./vtt2txt.py -i untertitel/Lahnstein.de-orig.vtt +./abschrift_korrigieren.py -i untertitel/Lahnstein.de-orig.txt ``` Der Schritt über `vtt2txt.py` ist optional: `abschrift_korrigieren.py` nimmt auch die @@ -76,7 +76,7 @@ Zwischenschritt im temporären Verzeichnis. Die Spurwahl ist dieselbe wie bei ```bash ./extract_text.py -u 'https://www.youtube.com/watch?v=0LmCveTM788' # → John_Mearsheimer_Offensive_Realism_Episode_1_Origins_of_the_War_In_Ukraine_2026-07-30.txt -./extract_text.py -u URL -l de -o testdaten/rede.txt # Sprache und Ziel +./extract_text.py -u URL -l de -o texte/rede.txt # Sprache und Ziel ./extract_text.py -u URL -f -o rede.txt # lesbarer Fließtext ./extract_text.py -u URL -z 0:03:17-0:05:25 # nur ein Ausschnitt ./extract_text.py -u URL -z 00:05-00:06 00:10-00:12 00:25 # mehrere Bereiche @@ -131,7 +131,7 @@ Region gefunden: `-l en` findet manuelle Untertitel `en-US`. ```bash ./yt_untertitel.py -u URL # → __.de-orig.vtt -./yt_untertitel.py -u URL -n Lahnstein -d testdaten # → testdaten/Lahnstein.de-orig.vtt +./yt_untertitel.py -u URL -n Lahnstein -d untertitel # → untertitel/Lahnstein.de-orig.vtt ``` | Option | Bedeutung | @@ -274,7 +274,9 @@ Blöcken korrigiert. 3. **Korrektur:** Der Text wird in Abschnitte von ca. 1200 Wörtern geteilt (immer am Satzende; Abkürzungen wie „z. B.“, „Dr.“, „bzw.“ und Ordnungszahlen wie „2. Weltkrieg“ zählen nicht als Satzende) und abschnittsweise vom Modell - korrigiert. Fortschritt wird live angezeigt. + korrigiert. Fortschritt wird live angezeigt. Der Prompt verbietet Ergänzungen, + ausdrücklich auch Vornamen, Titel oder Namensteile aus dem Glossar, die nicht + gesagt wurden (sonst wurde aus „Dobrindt“ gern „Alexander Dobrindt“). 4. **Wortzahl-Prüfung:** Weicht die Wortzahl eines Abschnitts um mehr als 5 % ab, gibt es eine Warnung (mögliche Auslassungen oder Ergänzungen). 5. **Absätze:** Das Modell nennt nur Satznummern, an denen ein Absatz beginnt; der @@ -396,9 +398,9 @@ erneut vorgeschlagen. Zeit-Überschriften von Ausschnitten Roh- und korrigiertem Text entfernt; das Modell bekommt sie nicht zu sehen. ```bash -./glossar_vorschlag.py -i testdaten/Lahnstein.de-orig.txt \ - -k testdaten/Lahnstein.de-orig.korrigiert.txt -g krone-schmalz.glossar.txt -# → testdaten/Lahnstein.de-orig.glossar.entwurf.txt +./glossar_vorschlag.py -i rede.txt -k rede.korrigiert.txt -g krone-schmalz.glossar.txt +# → rede.glossar.entwurf.txt +./glossar_vorschlag.py -i tests/daten/beispiel.de.txt # an der Beispielrede ausprobieren ``` | Option | Bedeutung | @@ -446,27 +448,36 @@ Rede dauert mit `qwen3:32b` vollständig auf einer RTX 3090 etwa 6–8 Minuten. python3 -m pytest ``` -Die Tests (325, ohne die lokalen Reden 318) brauchen weder Ollama noch Netz: Modellaufrufe und `yt-dlp` werden -durch Fakes ersetzt. `tests/test_abschrift_korrigieren.py` prüft Abschnittsbildung, -Satzgrenzen (Abkürzungen und Ordnungszahlen sind kein Satzende), Glossar (inkl. -„jede Ersetzung im Glossar einer Rede trifft diese Rede, jede im gemeinsamen Glossar -trifft mindestens eine“), Streaming-Auswertung, Absatzgliederung (Text bleibt -unverändert, 3–10 Sätze), Verbinden kurzer Absätze (Modell wird nur gefragt, wenn -beide Nachbarn passen), Zwischenspeicher/Fortsetzen, Zeitauswahl, Sprachen und die +Die Tests brauchen weder Ollama noch Netz: Modellaufrufe und `yt-dlp` werden durch +Fakes ersetzt. Als Text dient die erfundene Beispielrede in `tests/daten/` (siehe +[Testdaten](#testdaten)). In einem frischen Klon laufen 318 Tests, 7 werden +übersprungen; sie prüfen die Glossare der echten Reden und laufen nur, wenn diese +lokal in `testdaten/` liegen (dann 325). + +`tests/test_abschrift_korrigieren.py` prüft Abschnittsbildung, Satzgrenzen +(Abkürzungen und Ordnungszahlen sind kein Satzende), Glossar (jede Ersetzung des +Beispielglossars trifft die Beispielrede; lokal zusätzlich: jede Ersetzung im +Glossar einer Rede trifft diese Rede, jede im gemeinsamen Glossar mindestens eine), +Prompts (keine Namensteile ergänzen), Streaming-Auswertung, Absatzgliederung (Text +bleibt unverändert, 3–10 Sätze), Verbinden kurzer Absätze (Modell wird nur gefragt, +wenn beide Nachbarn passen), Zwischenspeicher/Fortsetzen, Schutz von Handarbeit +(`.neu.korrigiert.txt`, `--ueberschreiben`), Zeitauswahl, Sprachen und die Kommandozeile. `tests/test_glossar_vorschlag.py` prüft Filter (nur Funde im Text, keine bekannten), Ausgabeformat (gültiges Glossar, Unsicheres auskommentiert) und Zwischenspeicher. `tests/test_aenderungen.py` prüft den Wortvergleich (Satzzeichen, Groß-/Kleinschreibung -und „z. B.“ zählen nicht), die Liste „Zu prüfen“ (Gründe, Ausnahmen, Glossar, -fehlende Wortliste) und den HTML-Bericht (vollständiger Text, Absätze, Escaping). +und „z. B.“ zählen nicht), die Liste „Zu prüfen“ (Gründe, Wortformen, Füllwörter je +Sprache, Glossar-Schreibweisen, fehlende Wortliste) und den HTML-Bericht +(vollständiger Text, Absätze, Escaping, Reihenfolge). Die Tests nutzen eine kleine eigene Wortliste statt der des Systems. `tests/test_extract_text.py` prüft den Gesamtablauf URL → Text, Sprachwahl (Original-Audio, manuell vor automatisch) und Fehlerfälle. `tests/test_yt_untertitel.py` prüft Spurauswahl, Aufruf von `yt-dlp` und Fehlerfälle (ohne Netz, `yt-dlp` wird durch Fakes ersetzt). `tests/test_vtt2txt.py` prüft die VTT-Umwandlung: die Beispiel-`.vtt` (und lokal -jede Rede in `testdaten/`) ergibt genau die zugehörige `.txt`, echte Wiederholungen bleiben erhalten, auch bei -Untertiteln ohne rollendes Fenster, dazu Zeitauswahl, Muster, Ausgabeverzeichnis und +jede Rede in `testdaten/`) ergibt genau die zugehörige `.txt`, echte Wiederholungen +bleiben erhalten, auch bei Untertiteln ohne rollendes Fenster, dazu Zeitauswahl +(mit Hinweis bei Bereichen über das Ende hinaus), Muster, Ausgabeverzeichnis und Fehlerfälle. ## Zwischenstände