- --split teile|kapitel: Einzeldateien in einem Ordner mit index.md (Reihenfolge) und images/; Titelei und Inhaltsverzeichnis als Vorspann; YAML-Kopf je Datei (title, part, chapter, order, book, author) - --from-md DATEI|ORDNER: EPUB aus bearbeitetem Markdown bzw. Split-Ordner, Angaben aus dem YAML-Kopf; ersetzt den pandoc-Befehl aus Weg B - Markdown beginnt mit YAML-Kopf (title, author, lang, cover); Cover wird mit --images immer abgelegt - --jpeg-quality (Standard 85 statt fest 95): EPUB Band 1 3 MB statt 5 MB - --title/--author überschreiben PDF-Metadaten - Tests (tests/test_split.py), README, Bedienungsanleitung (Weg C), CLAUDE.md, TODO.md Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
29 lines
1.8 KiB
Markdown
29 lines
1.8 KiB
Markdown
# CLAUDE.md
|
||
|
||
PDF → Markdown → EPUB für den PocketBook-Reader (digitale und gescannte PDFs).
|
||
Aktuelles Programm: `pdf2md.py` (Einzeldatei; Name bleibt fest, keine Versionsnummer im Dateinamen). Frühere Stände (v1–v4) nur noch in der Git-Historie.
|
||
|
||
## Befehle
|
||
|
||
- Tests: `python3 -m pytest` (Fixtures werden synthetisch erzeugt; OCR braucht `tesseract-ocr-deu`)
|
||
- Lint: `python3 -m ruff check pdf2md.py tests/`
|
||
- Echttest: `python3 pdf2md.py --epub Operation_Ljutsch_Band_1_-_Reinhard_Otto_Kranz.pdf <scratch>/band1.md`
|
||
|
||
## Konventionen
|
||
|
||
- Hilfetexte, Meldungen, Kommentare und Docstrings auf Deutsch (wie v4); Bezeichner Englisch.
|
||
- Echttests nie nach `Fertig/` schreiben (dort liegen die Ergebnisse des Nutzers).
|
||
- PDFs/EPUBs/Bilder sind per `.gitignore` ausgeschlossen – keine Binärdateien committen.
|
||
- `pdf2md.py` patcht drei Funktionen in `pymupdf4llm.helpers.document_layout`
|
||
(`get_styled_text`, `text_to_md`, `create_list_item_levels` – letztere nur, um pro Seite
|
||
die Zeilengeometrie zu merken). Nach einem pymupdf4llm-Update prüfen, ob
|
||
`tests/test_normalize.py::test_pymupdf4llm_patch_keeps_compound_hyphen` und
|
||
`tests/test_verbatim.py` noch grün sind.
|
||
- Zwischen dem Patch (`lines_to_md`) und `normalize_markdown` laufen interne Markierungen
|
||
aus dem Private-Use-Bereich (`HARD_BREAK`, `BLOCK_END`, `PARAGRAPH_END`, `STANZA_BREAK`,
|
||
U+E002–U+E005); sie dürfen nie in der Ausgabe landen.
|
||
- Ausgabe-Markdown beginnt mit einem YAML-Kopf, den `make_frontmatter`/`split_frontmatter`
|
||
selbst schreiben und lesen; pandoc bekommt nur den Text (`markdown-yaml_metadata_block`),
|
||
weil `---`-Zeilen im Buchtext sonst als YAML gelesen würden.
|
||
- Regressionsprüfung bei Änderungen am Umbruch: Band 1/2 vorher/nachher diffen; Fließtext
|
||
darf sich nur an echten Absatz- oder Zeilenwechseln der PDF ändern.
|