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>
This commit is contained in:
parent
217d1ee09b
commit
f9dfa3a52e
1 changed files with 87 additions and 16 deletions
44
README.md
44
README.md
|
|
@ -1,10 +1,13 @@
|
|||
# ljutsch – PDF → Markdown → EPUB
|
||||
|
||||
Werkzeug, um PDF-Bücher (hier: *Operation Ljutsch*, Band 1 und 2) in sauberes Markdown
|
||||
und anschließend in ein EPUB für den PocketBook-Reader umzuwandeln – mit Überschriften,
|
||||
Bildern und echten Absätzen. Funktioniert für **digitale** PDFs (Textebene vorhanden)
|
||||
ebenso wie für **gescannte** PDFs (nur Bilder, per OCR) und für Scans, die bereits eine
|
||||
OCR-Ebene haben (z. B. von `ocrmypdf`).
|
||||
Werkzeug, um PDF-Bücher in sauberes Markdown und anschließend in ein EPUB für den
|
||||
PocketBook-Reader umzuwandeln – mit Überschriften, Bildern und echten Absätzen. Funktioniert
|
||||
für **digitale** PDFs (Textebene vorhanden) ebenso wie für **gescannte** PDFs (nur Bilder,
|
||||
per OCR) und für Scans, die bereits eine OCR-Ebene haben (z. B. von `ocrmypdf`).
|
||||
|
||||
Entwickelt an *Operation Ljutsch* (Band 1 und 2), außerdem erprobt an einem deutschen
|
||||
Sachbuch, einem englischen Handbuch, einem Mathematikbuch, einem Bericht mit Fußnoten und
|
||||
einem englischen Scan von 1893 (Ergebnisse siehe [Grenzen](#grenzen)).
|
||||
|
||||
## Installation (Ubuntu 24.04)
|
||||
|
||||
|
|
@ -29,6 +32,9 @@ python3 pdf2md.py --epub buch.pdf buch.md
|
|||
|
||||
# Scan in Deutsch und Englisch, 8 parallele OCR-Prozesse
|
||||
python3 pdf2md.py --ocr-language deu+eng --jobs 8 scan.pdf scan.md
|
||||
|
||||
# englisches Buch; alter Scan mit schlechter OCR-Ebene neu erkennen
|
||||
python3 pdf2md.py --epub --lang en --ocr-language eng --ocr always scan.pdf scan.md
|
||||
```
|
||||
|
||||
| Option | Bedeutung |
|
||||
|
|
@ -49,10 +55,13 @@ python3 pdf2md.py --ocr-language deu+eng --jobs 8 scan.pdf scan.md
|
|||
(`.` `!` `?` `…`, auch mit `«` `“` `»` usw. dahinter). Auf Scans werden Absätze am
|
||||
Einzug erkannt.
|
||||
- **Silbentrennung:** `Geheim-|dienst` → `Geheimdienst`, `Militär-|Geheimdienst` bleibt mit
|
||||
Bindestrich, `Arbeits- und` bleibt.
|
||||
Bindestrich, `Arbeits- und` bleibt. Weiche Trennstriche (U+00AD) und `¬` am Zeilenende
|
||||
werden ebenfalls aufgelöst (`wach|senden` → `wachsenden`).
|
||||
- **Überschriften:** Ebenen aus den PDF-Lesezeichen (Teile `##`, Kapitel `###`);
|
||||
Satzreste, die fälschlich als Überschrift erkannt wurden, kommen zurück in den Text.
|
||||
- **Inhaltsverzeichnis:** zusammengeklebte Einträge werden getrennt.
|
||||
- **Inhaltsverzeichnis:** zusammengeklebte Einträge werden getrennt; liegt das Verzeichnis
|
||||
als Tabelle vor, bleibt die Tabelle erhalten.
|
||||
- **OCR-Ebenen** in Courier werden nicht als Programmcode (`` `…` ``) gesetzt.
|
||||
- **Seitenzahlen, Kolumnentitel, Text in Fotos** werden entfernt.
|
||||
|
||||
## Tests
|
||||
|
|
@ -66,12 +75,21 @@ synthetisch erzeugt.
|
|||
|
||||
## Grenzen
|
||||
|
||||
- Die Ergebnisqualität hängt von pymupdf4llm/pymupdf-layout ab. Zwei Schwächen der
|
||||
Bibliothek gleicht `pdf2md.py` per Patch aus (Bindestriche am Zeilenende, Absätze in
|
||||
Scan-Blöcken). Eine weitere ist bekannt: Bei Schriften mit Ligaturen (ff, fi) mit
|
||||
übergroßer Glyphenbox kann pymupdf4llm einzelne Zeilen verlieren. Bei den Ljutsch-Bänden
|
||||
tritt das nicht auf (geprüft per Wortabgleich PDF ↔ Markdown).
|
||||
- OCR-Fehler (z. B. fehlende Leerzeichen) werden nicht korrigiert.
|
||||
- Die Ergebnisqualität hängt von pymupdf4llm/pymupdf-layout ab. Einige Schwächen der
|
||||
Bibliothek gleicht `pdf2md.py` per Patch aus (Bindestriche und weiche Trennstriche am
|
||||
Zeilenende, Absätze in Scan-Blöcken, OCR-Ebenen in Courier). Eine weitere ist bekannt:
|
||||
Bei Schriften mit Ligaturen (ff, fi) mit übergroßer Glyphenbox kann pymupdf4llm einzelne
|
||||
Zeilen verlieren. Bei den Ljutsch-Bänden tritt das nicht auf (geprüft per Wortabgleich
|
||||
PDF ↔ Markdown).
|
||||
- OCR-Fehler (z. B. fehlende Leerzeichen) werden nicht korrigiert. Bei alten Scans mit
|
||||
mitgelieferter OCR-Ebene liefert `--ocr always` meist deutlich besseren Text.
|
||||
- **Mathematische Formeln** werden als Bilder übernommen; für Mathebücher ist ein anderes
|
||||
Werkzeug besser geeignet (z. B. Marker, Nougat).
|
||||
- **Was am PDF liegt, bleibt:** fehlende Ligaturen ohne Textzuordnung („Offzielle“),
|
||||
gesperrt gesetzte Überschriften („M e i n k l e i nes …“), flache PDF-Gliederungen
|
||||
(alle Kapitel auf einer Ebene).
|
||||
- Reine Zahlen können als Überschrift erscheinen (Fußnotenzeichen, römische Seitenzahlen).
|
||||
Weitere bekannte Schwächen: [TODO.md](TODO.md).
|
||||
- Bilder werden als JPEG (Qualität 95) gespeichert; EPUB Band 1 ca. 5 MB.
|
||||
|
||||
## Dateien
|
||||
|
|
|
|||
Loading…
Reference in a new issue