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

2.9 KiB
Raw Blame History

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):
    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).