Commit graph pdf2md/pdf2md.py
Author SHA1 Message Date
Dieter Schlüter
d322ee3523 Zeilengetreue Übernahme von Code, Registern, Versen und Adressen
Ein Zeilenumbruch gilt als weich (vom Satzprogramm), wenn das erste Wort
der nächsten Zeile nicht mehr gepasst hätte (Toleranz 5 % der Spalte);
sonst als hart, und die Zeile bleibt samt Einrückung erhalten.

- lines_to_md (Patch von text_to_md): harte/weiche Umbrüche aus der
  Geometrie; Blöcke mit überwiegend harten Umbrüchen zeilengetreu als
  Codeblock (auch Proportionalschrift, Einrückung rekonstruiert) oder als
  Zeilen mit "\" und geschützten Leerzeichen
- Blockgrenzen: freie Zeichen der letzten Zeile werden mitgegeben,
  normalize_markdown prüft damit das erste Wort des nächsten Blocks
- normalize_markdown: harte Umbrüche, Absatzenden ohne Satzzeichen,
  Codeblöcke über Seitengrenzen zusammenführen, wörtliches ``` maskieren
- EPUB-CSS: lange Codezeilen umbrechen (white-space: pre-wrap)
- Tests (tests/test_verbatim.py), README, Bedienungsanleitung, CLAUDE.md,
  TODO.md

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 16:39:06 +02:00
Dieter Schlüter
fa90050535 Bessere Standardwerte: EPUB-Sprache, Titel/Autor, Prozesszahl
- --lang ohne Angabe aus der ersten OCR-Sprache ableiten (eng -> en)
- Fehlen Titel/Autor in den PDF-Metadaten: aus dem Dateinamen nach dem
  Muster "Autor_-_Titel" übernehmen, sonst Dateiname mit Leerzeichen
- --jobs: halbe Kernzahl, höchstens 8 (bisher 4)
- Tests (tests/test_defaults.py), README und Bedienungsanleitung

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 15:20:08 +02:00
Dieter Schlüter
619421ef10 URLs als anklickbare Links, zerbrochene URLs reparieren
- load_link_uris: Linkziele aus den Link-Annotationen der PDF lesen
- link_urls: URLs als Autolink <https://…> schreiben; beim Zeilenumbruch
  zerbrochene URLs mit den Linkzielen abgleichen (tolerant gegenüber
  Bindestrichen, Leerraum, "/" am Ende, Abfrageteil, .html) und
  utm-Parameter entfernen; ohne Linkziel aus dem gedruckten Text
  zusammensetzen
- Bindestrich am Zeilenende innerhalb einer URL bleibt erhalten
- pandoc liest mit +autolink_bare_uris
- Tests, README, Bedienungsanleitung und TODO ergänzt

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 15:07:47 +02:00
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
Dieter Schlüter
217d1ee09b Weiche Trennstriche auflösen, Courier-OCR-Ebenen nicht als Code setzen
- Zeilenende mit U+00AD oder "¬" wird wie Silbentrennung behandelt
  ("wach­ senden" -> "wachsenden")
- Unsichtbarer Text (OCR-Ebene) verliert das Monospace-Flag, sonst setzt
  pymupdf4llm jedes Wort in Backticks
- Tests für beide Fälle und für sichtbaren Monospace-Text

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 13:51:50 +02:00
Dieter Schlüter
b4b911d37f pdf2md.py als fester Name, v1–v4 nach History/ verschoben
- pdf2md_v5.py → pdf2md.py; Verweise in Doku und Tests angepasst
- pdf2md_v1.py … pdf2md_v4.py nach History/ verschoben
- ljutsch_meta.xml entfernt (nicht mehr verwendet)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 13:12:36 +02:00
Renamed from pdf2md_v5.py (Previous history)