pdf2md/TODO.md
Dieter Schlüter 5cd5e5d69b --split seiten, --epub-per-file, Nachspann, --from-md --split, --split-chars
- --split seiten mit --pages-per-file N (Standard 20, Ausrichtung an
  Überschriften bis eine Seite neben der Grenze) oder --page-ranges
  (streng; Seiten außerhalb werden eigene Dateien)
- Schnitt nur im fertigen Gesamt-Markdown (lückenlos): vor dem ersten
  Absatz, der auf der Grenzseite beginnt; Überschriften vor dem Schnitt
  wandern in die neue Datei; source_pages aus Anfang/Ende jedes Absatzes
- Seitenzuordnung über die Rohtexte je Seite (pymupdf4llm page_chunks=True,
  aneinandergehängt byte-gleich; Band 1/2 unverändert), auch für OCR-Seiten
- --epub-per-file: ein EPUB je Einzeldatei in <name>/epub/
- Nachspann: Anhang/Autor/Impressum nach dem letzten Kapitel als eigene Datei
- --from-md DATEI --split teile|kapitel: bearbeitetes Markdown nachträglich
  teilen, Bild- und Cover-Pfade angepasst
- --split-chars N; Längen-Abschnitte tragen die Überschrift am Anfang als Titel
- Tests (tests/test_split_pages.py), README, Bedienungsanleitung, CLAUDE.md, TODO

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 01:04:50 +02:00

46 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# TODO
## 1. Als Nächstes (Stand 2026-10-02)
- **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).
- **Listings mit eingedruckten Zeilennummern** (Markdown Guide: „4 <html>“, „5 <head>“) 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. Außerdem prüfen, ob `page_chunks=True`
aneinandergehängt noch dasselbe liefert wie ohne (Regressionsvergleich Band 1/2).
- 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).