--split, --from-md, --jpeg-quality, YAML-Kopf, --title/--author
- --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>
This commit is contained in:
parent
f0e0562451
commit
d52ac597fc
1 changed files with 527 additions and 103 deletions
|
|
@ -10,6 +10,8 @@ Es gibt zwei Arbeitswege:
|
|||
- **Weg A:** PDF → EPUB in einem Schritt, wenn das Ergebnis ohne Nacharbeit passt.
|
||||
- **Weg B:** PDF → Markdown → von Hand bearbeiten → EPUB, wenn du Überschriften, Text oder
|
||||
Bilder noch korrigieren willst.
|
||||
- **Weg C:** wie Weg B, aber jeder Teil bzw. jedes Kapitel in einer eigenen Datei – zum
|
||||
Umsortieren, für RAG oder andere Formate.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -88,7 +90,21 @@ cd ~/Downloads/ljutsch
|
|||
python3 pdf2md.py --epub Operation_Ljutsch_Band_1_-_Reinhard_Otto_Kranz.pdf Output/band1.md
|
||||
```
|
||||
|
||||
Wenn du kein Cover und kein Probe-EPUB brauchst, reicht `--images` statt `--epub`.
|
||||
Wenn du kein Probe-EPUB brauchst, reicht `--images` statt `--epub` (das Cover wird trotzdem
|
||||
abgelegt).
|
||||
|
||||
Am Anfang von `band1.md` steht ein **YAML-Kopf** mit den Angaben für das EPUB:
|
||||
|
||||
```yaml
|
||||
---
|
||||
title: "Operation Ljutsch"
|
||||
author: "Reinhard Otto Kranz"
|
||||
lang: "de"
|
||||
cover: "band1_images/cover.jpg"
|
||||
---
|
||||
```
|
||||
|
||||
Hier kannst du Titel, Autor, Sprache oder Cover ändern. Werte immer in `"…"` schreiben.
|
||||
|
||||
### Schritt 2: `band1.md` bearbeiten
|
||||
|
||||
|
|
@ -138,23 +154,14 @@ Am nächsten Morgen ...
|
|||
|
||||
### Schritt 3: EPUB aus dem bearbeiteten Markdown erzeugen
|
||||
|
||||
Im Ordner der Markdown-Datei starten (wichtig für die Bilder):
|
||||
|
||||
```bash
|
||||
cd ~/Downloads/ljutsch/Output
|
||||
pandoc band1.md \
|
||||
--from markdown-yaml_metadata_block+autolink_bare_uris --to epub3 \
|
||||
--output band1.epub \
|
||||
--resource-path . \
|
||||
--split-level=3 --toc-depth=3 \
|
||||
--metadata title="Operation Ljutsch" \
|
||||
--metadata author="Reinhard Otto Kranz" \
|
||||
--metadata lang=de \
|
||||
--epub-cover-image band1_images/cover.jpg
|
||||
cd ~/Downloads/ljutsch
|
||||
python3 pdf2md.py --from-md Output/band1.md
|
||||
```
|
||||
|
||||
Das sind dieselben Einstellungen, die `pdf2md.py --epub` verwendet. Titel und Autor trägst du
|
||||
selbst ein. Ohne Cover lässt du die letzte Zeile weg und entfernst den `\` am Ende der Zeile davor.
|
||||
Das erzeugt `Output/band1.epub` mit denselben Einstellungen wie `--epub`. Titel, Autor, Sprache
|
||||
und Cover kommen aus dem YAML-Kopf; `--title`, `--author`, `--lang` oder `--epub-file PFAD`
|
||||
überschreiben sie bei Bedarf.
|
||||
|
||||
Schritt 2 und 3 kannst du beliebig oft wiederholen. **Achtung:** Schritt 1 erneut auszuführen
|
||||
überschreibt deine Änderungen in `band1.md`. Leg dir vorher eine Kopie an oder nimm einen anderen
|
||||
|
|
@ -162,7 +169,48 @@ Dateinamen.
|
|||
|
||||
---
|
||||
|
||||
## 4. Gescannte PDFs
|
||||
## 4. Weg C – Teile oder Kapitel als Einzeldateien
|
||||
|
||||
```bash
|
||||
cd ~/Downloads/ljutsch
|
||||
python3 pdf2md.py --epub --split kapitel Operation_Ljutsch_Band_1_-_Reinhard_Otto_Kranz.pdf Output/band1.md
|
||||
```
|
||||
|
||||
Statt `band1.md` entsteht der Ordner `Output/band1/`:
|
||||
|
||||
```
|
||||
band1/
|
||||
index.md Reihenfolge der Dateien + YAML-Kopf des Buchs
|
||||
00_vorspann.md Titelei und Inhaltsverzeichnis
|
||||
01_vorwort-berlin-2015.md
|
||||
02_teil-i-das-vermaechtnis.md Teil-Überschrift (und ggf. Einleitung)
|
||||
03_1-der-notar.md
|
||||
…
|
||||
40_impressum.md
|
||||
images/ Bilder und cover.jpg
|
||||
```
|
||||
|
||||
- `--split kapitel` schneidet an Teilen **und** Kapiteln, `--split teile` nur an Teilen (ein Teil
|
||||
mit all seinen Kapiteln pro Datei).
|
||||
- Jede Datei beginnt mit einem YAML-Kopf, z. B.:
|
||||
```yaml
|
||||
---
|
||||
title: "3 Die Grauen nehmen die Spur auf"
|
||||
part: "Teil I: Das Vermächtnis"
|
||||
chapter: 3
|
||||
order: 5
|
||||
book: "Operation Ljutsch"
|
||||
author: "Reinhard Otto Kranz"
|
||||
---
|
||||
```
|
||||
- **Umsortieren:** in `index.md` die Zeilen verschieben. **Weglassen:** Zeile löschen.
|
||||
Dateien dürfen umbenannt werden, wenn der Link in `index.md` mitgeändert wird.
|
||||
- **EPUB neu bauen:** `python3 pdf2md.py --from-md Output/band1/` → `Output/band1.epub`
|
||||
(Kapitel in der Reihenfolge von `index.md`).
|
||||
|
||||
---
|
||||
|
||||
## 5. Gescannte PDFs
|
||||
|
||||
Bei Scans liest das Programm den Text per OCR (Tesseract). Der Aufruf ist derselbe:
|
||||
|
||||
|
|
@ -197,28 +245,32 @@ Kolumnentitel und Seitenzahlen gedruckter Bücher werden automatisch entfernt, g
|
|||
|
||||
---
|
||||
|
||||
## 5. Alle Optionen
|
||||
## 6. Alle Optionen
|
||||
|
||||
| Option | Bedeutung |
|
||||
| :-- | :-- |
|
||||
| `pdf` | Eingabe-PDF |
|
||||
| `pdf` | Eingabe-PDF (entfällt bei `--from-md`) |
|
||||
| `markdown` | Ausgabe-Datei; ohne Angabe: gleicher Name wie die PDF mit `.md` |
|
||||
| `--ocr auto\|always\|never` | OCR-Entscheidung (Standard `auto`, siehe Abschnitt 4) |
|
||||
| `--ocr auto\|always\|never` | OCR-Entscheidung (Standard `auto`, siehe Abschnitt 5) |
|
||||
| `--no-ocr` | Kurzform für `--ocr never` |
|
||||
| `--ocr-language` | Tesseract-Sprache(n), z. B. `deu+eng` (Standard `deu`) |
|
||||
| `--ocr-dpi` | Auflösung für die OCR (Standard 300) |
|
||||
| `--jobs N` | parallele OCR-Prozesse (Standard: halbe Kernzahl, höchstens 8) |
|
||||
| `--images` | Bilder in `<name>_images/` speichern und im Markdown verlinken |
|
||||
| `--image-format jpg\|png` | Bildformat (Standard `jpg`; `png` verlustfrei, aber ca. 3× größer) |
|
||||
| `--jpeg-quality 1-100` | JPEG-Qualität (Standard 85; 95 fast verlustfrei, Bilder ca. 1,7× größer) |
|
||||
| `--epub` | zusätzlich EPUB erzeugen (schaltet `--images` ein) |
|
||||
| `--epub-file PFAD` | anderer Pfad für das EPUB |
|
||||
| `--split teile\|kapitel` | Teile bzw. Kapitel als Einzeldateien (Abschnitt 4) |
|
||||
| `--from-md PFAD` | nur EPUB aus `.md`-Datei oder `--split`-Ordner (Abschnitt 3, 4) |
|
||||
| `--title`, `--author` | Titel/Autor im EPUB vorgeben |
|
||||
| `--lang` | Sprache im EPUB (Standard: aus `--ocr-language` abgeleitet, `deu`→`de`, `eng`→`en`; sonst `de`) |
|
||||
| `--keep-headers` | Kolumnentitel/Seitenköpfe nicht entfernen |
|
||||
| `--keep-footers` | Seitenzahlen/Seitenfüße nicht entfernen |
|
||||
|
||||
---
|
||||
|
||||
## 6. Ergebnis prüfen
|
||||
## 7. Ergebnis prüfen
|
||||
|
||||
1. **Überschriften auflisten.** So sieht man schnell, ob Teile und Kapitel stimmen:
|
||||
```bash
|
||||
|
|
@ -235,7 +287,7 @@ Kolumnentitel und Seitenzahlen gedruckter Bücher werden automatisch entfernt, g
|
|||
|
||||
---
|
||||
|
||||
## 7. Häufige Probleme
|
||||
## 8. Häufige Probleme
|
||||
|
||||
| Meldung / Problem | Lösung |
|
||||
| :-- | :-- |
|
||||
|
|
@ -254,5 +306,6 @@ Kolumnentitel und Seitenzahlen gedruckter Bücher werden automatisch entfernt, g
|
|||
| Formeln erscheinen als Bilder | bei Mathebüchern normal; dafür ist das Programm nicht gebaut |
|
||||
| Alter Scan: falsche Überschriften, viele Lesefehler | `--ocr always` (vorhandene OCR-Ebene ignorieren) |
|
||||
| Auf Scans fehlen Leerzeichen („deutetin“) | OCR-Fehler; höhere Auflösung versuchen (`--ocr-dpi 400`) oder von Hand korrigieren |
|
||||
| EPUB zu groß | `--image-format jpg` (Standard) verwenden; PNG ist ca. 3× größer |
|
||||
| EPUB zu groß | `--image-format jpg` (Standard) verwenden; PNG ist ca. 3× größer; `--jpeg-quality 70` spart weiter |
|
||||
| `--from-md`: „In index.md genannt, aber nicht vorhanden“ | Datei umbenannt oder gelöscht → Link in `index.md` anpassen |
|
||||
| Meine Änderungen in der `.md` sind weg | Schritt 1 wurde erneut ausgeführt → vorher Kopie anlegen |
|
||||
|
|
|
|||
Loading…
Reference in a new issue