From 8614ea95756f021fdd9e5da397e2ed084f411a6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dieter=20Schl=C3=BCter?= Date: Fri, 2 Oct 2026 22:41:22 +0200 Subject: [PATCH] =?UTF-8?q?TODO:=20n=C3=A4chste=20Schritte,=20m=C3=B6glich?= =?UTF-8?q?e=20Erweiterungen,=20Grenzen,=20Wartung?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- TODO.md | 51 ++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 40 insertions(+), 11 deletions(-) diff --git a/TODO.md b/TODO.md index 6ffd8be..5b0fe61 100644 --- a/TODO.md +++ b/TODO.md @@ -1,16 +1,45 @@ # TODO -## Bekannte Schwächen (aus Probeläufen mit fremden PDFs) +## 1. Als Nächstes (Stand 2026-10-02) -- Gesperrte Überschriften („M e i n k l e i nes Stück D D R“) bleiben zerrissen. -- Alte Scans mit eigener OCR-Ebene: `--ocr always` liefert meist besseren Text. -- Zeilengetreu: Ein Gedicht, das genauso eingerückt ist wie Absatzanfänge (Band 2, „Blinde - Flecken“: alle Verse bei x = 94 wie Absatzanfänge), ist geometrisch nicht von mehreren - einzeiligen Dialogabsätzen zu unterscheiden; Verszeilen mit Satzende werden dort Absätze. - Für reine Gedichtbände: `--keep-lines`. -- Gedicht-Scans ohne `--keep-lines`: pymupdf-layout verschränkt eng stehende OCR-Zeilen +- **Gedichtbände neu erzeugen und prüfen** – die Dateien in `Output/` stammen von vor den + Korrekturen (Commit 180d98a): + ```bash + python3 pdf2md.py --epub --ocr always --keep-lines Neue_Gedichte_-_Rainer_Maria_Rilke.pdf Output/Neue_Gedichte_-_Rainer_Maria_Rilke.md + python3 pdf2md.py --epub --ocr-language deu_latf --keep-lines Neue_Gedichte_-_Jacob_Loewenberg_-_Fraktur_1895.pdf Output/Neue_Gedichte_-_Jacob_Loewenberg_-_Fraktur_1895.md + ``` + Was dabei auffällt, entscheidet über die Punkte in Abschnitt 2. + +## 2. Mögliche Erweiterungen (je ca. 30 Min.) + +- **Option „ſ“ → „s“** für Fraktur: lesbarer auf dem Reader, aber nicht mehr originalgetreu. +- **Ornamente/Zierleisten** werden auf Scans mit `--keep-lines` manchmal als Wortsalat gelesen + („amm Cem wen rn aFREE anneee“). Idee: Zeilen ohne plausible Wörter verwerfen (Anteil + wortähnlicher Tokens, Funktionswörter wie in `looks_like_text`). +- **Bilder auf Scanseiten** gehen mit `--keep-lines` verloren (der direkte Tesseract-Weg + übernimmt keine Bilder). Für Gedichtbände meist egal, für illustrierte Liederbücher nicht. + +## 3. Bekannte Grenzen (bewusst so gelassen) + +- **Fraktur-OCR:** Auch `deu_latf` (tessdata_best) liest alte Scans nicht fehlerfrei + („Uls“ statt „Als“, „=“ statt „—“); das Ubuntu-Modell `frk` ist deutlich schwächer + („ftarf“, „fam“). Alte Scans brauchen Nacharbeit (Weg B). +- **Gesperrte Überschriften** („M e i n k l e i nes Stück D D R“) bleiben zerrissen; eine + Korrektur wäre fehleranfällig. +- **Alte Scans mit eigener OCR-Ebene:** `--ocr always` liefert meist besseren Text (die alte + Ebene wird verworfen). +- **Gedicht wie Absatzanfänge eingerückt** (Band 2, „Blinde Flecken“: alle Verse bei x = 94): + geometrisch nicht von einzeiligen Dialogabsätzen zu unterscheiden; Verszeilen mit Satzende + werden dort Absätze. Für reine Gedichtbände: `--keep-lines`. +- **Gedicht-Scans ohne `--keep-lines`:** pymupdf-layout verschränkt eng stehende OCR-Zeilen („UndDon tauchteweißen“). Mit `--keep-lines` umgangen (Zeilen direkt aus Tesseract). -- `--keep-lines` auf Scans: Zierleisten/Ornamente werden manchmal als Wortsalat gelesen - („amm Cem wen rn“); keine Bilder aus Scanseiten. Idee: Option „ſ“ → „s“. -- Listings mit eingedruckten Zeilennummern (Markdown Guide: „4 “, „5 “) werden +- **Listings mit eingedruckten Zeilennummern** (Markdown Guide: „4 “, „5 “) werden nicht immer als ein Codeblock erkannt; Programmausgaben ohne typische Merkmale bleiben Text. + +## 4. Wartung + +- Nach einem Update von pymupdf4llm (`pip install -U pymupdf4llm`) zuerst `python3 -m pytest` + laufen lassen: `pdf2md.py` patcht drei Funktionen der Bibliothek. Version 1.28 hat z. B. das + Format für Bildtext und die OCR-Erkennung geändert. +- Bei Änderungen am Umbruch: Regressionsvergleich gegen den letzten Commit über das Probekorpus + (Ljutsch Band 1/2, Zensur-Report, Markdown Guide, Register, Rust-Kochbuch, Kempis-Scan).