pdf2md/TODO.md
Dieter Schlüter f9dfa3a52e Inhaltsverzeichnis als Tabelle erhalten, Doku nach Probeläufen ergänzt
- normalize_markdown: Tabellenzeilen im Inhaltsverzeichnis unverändert
  übernehmen; der Verzeichnis-Modus endet mit der Tabelle (sonst zerfiel
  die Tabelle und die folgende Überschrift "Vorwort" ging verloren)
- Test für Verzeichnis als Tabelle
- README/Bedienungsanleitung: weiche Trennstriche, Courier-OCR-Ebenen,
  englische Bücher, --ocr always für alte Scans, Grenzen aus den
  Probeläufen mit fremden PDFs
- TODO.md: bekannte Schwächen (Zahlen als Überschrift, römische
  Seitenzahlen, gesperrte Überschriften)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 14:24:58 +02:00

3 KiB
Raw Blame History

TODO

1. Teile und Kapitel als separate Markdown-Dateien (--split)

Ziel: Beim Konvertieren PDF → Markdown jeden Teil bzw. jedes Kapitel als eigene MD-Datei speichern. Damit lassen sich:

  • Teile/Kapitel einzeln ändern,
  • Teile/Kapitel vertauschen oder umsortieren,
  • die MD-Dateien für RAG verarbeiten (ein Kapitel = ein Dokument),
  • daraus HTML-Dateien oder andere Formate erzeugen.

Skizze:

  • Option --split teile|kapitel; Ausgabe als Ordner <name>/ statt einer einzelnen .md.
  • Dateinamen mit Nummer und Titel, z. B.
    band1/
      index.md                         # Reihenfolge der Dateien (bzw. book.yaml)
      00_vorspann.md                   # Titelei, Inhaltsverzeichnis, Vorwort
      01_teil-i_das-vermaechtnis.md
      02_kapitel-01_der-notar.md
      …
      99_nachspann.md                  # Der Autor, Impressum
      images/
    
  • YAML-Frontmatter pro Datei (für RAG und Umsortieren):
    ---
    title: "1 Der Notar"
    part: "Teil I: Das Vermächtnis"
    chapter: 1
    source_pages: [12, 25]
    book: "Operation Ljutsch"
    author: "Reinhard Otto Kranz"
    ---
    
  • EPUB aus den Einzeldateien: pandoc nimmt mehrere Eingabedateien in der Reihenfolge von index.md; Umsortieren = Reihenfolge im Index ändern.

Ansatzpunkte im Code (pdf2md.py):

  • Schnitt nach normalize_markdown() an den Überschriften ## (Teil) und ### (Kapitel); die Ebenen kommen aus load_outline().
  • Bildpfade pro Datei anpassen (make_image_links_relative()).
  • Vorspann (alles vor dem ersten Teil/Kapitel) und Nachspann als eigene Dateien.

Offene Fragen:

  • Ein Ordner pro Teil oder alles flach in einem Ordner?
  • Seitenzahlen ins Frontmatter? (pymupdf4llm liefert sie mit page_chunks=True.)
  • Bücher ohne PDF-Gliederung: auf die erkannten Überschriften zurückfallen?
  • Umkehrweg „Einzeldateien → ein MD/EPUB“ als eigene Option oder eigenes Skript?

Tests: Aufteilung des synthetischen Test-PDFs (Teil I, Kapitel 1–2) prüfen; Einzeldateien wieder zusammengesetzt = Gesamt-Markdown.

2. Weitere Ideen

  • --from-md buch.md: nur den EPUB-Schritt aus einem (von Hand bearbeiteten) Markdown ausführen; Titel, Autor und Cover automatisch übernehmen.
  • JPEG-Qualität einstellbar machen (z. B. --jpeg-quality 85), damit das EPUB noch kleiner wird.
  • Remote für das Git-Repo einrichten (z. B. GitHub), damit die Commits gesichert sind.

3. Bekannte Schwächen (aus Probeläufen mit fremden PDFs)

  • Reine Zahlen als Überschrift: pymupdf4llm macht Fußnotenzeichen zu Überschriften („## 90“ im Zensur-Report). Nicht pauschal entfernen – im DDR-Buch sind „## 1“, „## 2“ echte Kapitelnummern. Möglicher Ansatz: Zahl-Überschrift nur behalten, wenn direkt eine Überschrift folgt.
  • Römische Seitenzahlen („## XX“, „## XXIV“) werden nicht als Seitenzahl erkannt; Vorsicht wegen echter Kapitel „I.“, „II.“.
  • 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.