2026-10-02 01:32:53 +02:00
|
|
|
|
# TODO
|
|
|
|
|
|
|
2026-10-02 22:41:22 +02:00
|
|
|
|
## 1. Als Nächstes (Stand 2026-10-02)
|
|
|
|
|
|
|
|
|
|
|
|
- **Gedichtbände neu erzeugen und prüfen** – die Dateien in `Output/` stammen von vor den
|
|
|
|
|
|
Korrekturen (Commit 180d98a):
|
|
|
|
|
|
```bash
|
|
|
|
|
|
python3 pdf2md.py --epub --ocr always --keep-lines Neue_Gedichte_-_Rainer_Maria_Rilke.pdf Output/Neue_Gedichte_-_Rainer_Maria_Rilke.md
|
|
|
|
|
|
python3 pdf2md.py --epub --ocr-language deu_latf --keep-lines Neue_Gedichte_-_Jacob_Loewenberg_-_Fraktur_1895.pdf Output/Neue_Gedichte_-_Jacob_Loewenberg_-_Fraktur_1895.md
|
|
|
|
|
|
```
|
|
|
|
|
|
Was dabei auffällt, entscheidet über die Punkte in Abschnitt 2.
|
|
|
|
|
|
|
|
|
|
|
|
## 2. Mögliche Erweiterungen (je ca. 30 Min.)
|
|
|
|
|
|
|
|
|
|
|
|
- **Option „ſ“ → „s“** für Fraktur: lesbarer auf dem Reader, aber nicht mehr originalgetreu.
|
|
|
|
|
|
- **Ornamente/Zierleisten** werden auf Scans mit `--keep-lines` manchmal als Wortsalat gelesen
|
|
|
|
|
|
(„amm Cem wen rn aFREE anneee“). Idee: Zeilen ohne plausible Wörter verwerfen (Anteil
|
|
|
|
|
|
wortähnlicher Tokens, Funktionswörter wie in `looks_like_text`).
|
|
|
|
|
|
- **Bilder auf Scanseiten** gehen mit `--keep-lines` verloren (der direkte Tesseract-Weg
|
|
|
|
|
|
übernimmt keine Bilder). Für Gedichtbände meist egal, für illustrierte Liederbücher nicht.
|
|
|
|
|
|
|
|
|
|
|
|
## 3. Bekannte Grenzen (bewusst so gelassen)
|
|
|
|
|
|
|
|
|
|
|
|
- **Fraktur-OCR:** Auch `deu_latf` (tessdata_best) liest alte Scans nicht fehlerfrei
|
|
|
|
|
|
(„Uls“ statt „Als“, „=“ statt „—“); das Ubuntu-Modell `frk` ist deutlich schwächer
|
|
|
|
|
|
(„ftarf“, „fam“). Alte Scans brauchen Nacharbeit (Weg B).
|
|
|
|
|
|
- **Gesperrte Überschriften** („M e i n k l e i nes Stück D D R“) bleiben zerrissen; eine
|
|
|
|
|
|
Korrektur wäre fehleranfällig.
|
|
|
|
|
|
- **Alte Scans mit eigener OCR-Ebene:** `--ocr always` liefert meist besseren Text (die alte
|
|
|
|
|
|
Ebene wird verworfen).
|
|
|
|
|
|
- **Gedicht wie Absatzanfänge eingerückt** (Band 2, „Blinde Flecken“: alle Verse bei x = 94):
|
|
|
|
|
|
geometrisch nicht von einzeiligen Dialogabsätzen zu unterscheiden; Verszeilen mit Satzende
|
|
|
|
|
|
werden dort Absätze. Für reine Gedichtbände: `--keep-lines`.
|
|
|
|
|
|
- **Gedicht-Scans ohne `--keep-lines`:** pymupdf-layout verschränkt eng stehende OCR-Zeilen
|
Gedicht-Scans: Zeilen direkt aus Tesseract, Fehler aus pymupdf4llm 1.28
- --keep-lines auf Scanseiten: Zeilen direkt aus Tesseract statt über die
Layout-Analyse (die verschränkte eng stehende Verse und gab Zeilen
überlappender Blöcke doppelt aus); Stücke auf gleicher Höhe verbinden,
Rauschen außerhalb der Textspalte verwerfen, Strophen über den
Grundlinienabstand, Einrückung aus der x-Position, Gedichttitel aus der
PDF-Gliederung (richtige Schreibweise statt OCR-Lesart)
- Bildtext im neuen Format von pymupdf4llm 1.28 ("<!-- Start of picture
text -->") wieder entfernen
- Zeilen überlappender Layout-Blöcke nur einmal ausgeben
- OCR-Seitenzahlen ("= 58 —", "— VIII —") erkennen, auch am Strophenende
- Fraktur: deu_latf aus tessdata_best empfohlen (besser als frk)
- Tests, README, Bedienungsanleitung (Gedicht-/Fraktur-Abschnitt), TODO
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 22:39:12 +02:00
|
|
|
|
(„UndDon tauchteweißen“). Mit `--keep-lines` umgangen (Zeilen direkt aus Tesseract).
|
2026-10-02 22:41:22 +02:00
|
|
|
|
- **Listings mit eingedruckten Zeilennummern** (Markdown Guide: „4 <html>“, „5 <head>“) werden
|
Zahl-Überschriften entfernen, Code-Nachbarzeilen in Codeblöcke
- "## 90", "## xxiv" (Fußnotenzeichen, römische Seitenzahlen ii–xcix)
wie Seitenzahlen entfernen, außer direkt vor einer Titel-Überschrift
oder in der PDF-Gliederung; "## IV." und Register-Buchstaben bleiben
- _mixed_block: zeilengetreue Blöcke zeilenweise prüfen; Konfiguration
([dependencies], name = "wert"), Befehle (cargo build, $ …) und
Programmausgaben (… ok, running n tests) als Codeblock, Anleitungen
als Text; kurze umbrochene Codezeilen erkennen
- Registereinträge ("match(), 247") nie als Code
- _raw_text: Leerzeichen bei Wortabstand ohne Leerzeichen-Zeichen
- Tests, README, Bedienungsanleitung, TODO
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 20:13:42 +02:00
|
|
|
|
nicht immer als ein Codeblock erkannt; Programmausgaben ohne typische Merkmale bleiben Text.
|
2026-10-02 22:41:22 +02:00
|
|
|
|
|
|
|
|
|
|
## 4. Wartung
|
|
|
|
|
|
|
|
|
|
|
|
- Nach einem Update von pymupdf4llm (`pip install -U pymupdf4llm`) zuerst `python3 -m pytest`
|
|
|
|
|
|
laufen lassen: `pdf2md.py` patcht drei Funktionen der Bibliothek. Version 1.28 hat z. B. das
|
|
|
|
|
|
Format für Bildtext und die OCR-Erkennung geändert.
|
|
|
|
|
|
- Bei Änderungen am Umbruch: Regressionsvergleich gegen den letzten Commit über das Probekorpus
|
|
|
|
|
|
(Ljutsch Band 1/2, Zensur-Report, Markdown Guide, Register, Rust-Kochbuch, Kempis-Scan).
|