Doku: --formulas für Mathebücher, MathML im EPUB

README und BEDIENUNGSANLEITUNG: Option --formulas (pix2text, jede Formel auf der Seite,
Liste für formula_img2latex), pix2text als optionale Abhängigkeit, Formeln im EPUB als
MathML, Grenze und häufiges Problem "Formeln als Bilder/Zeichensalat" aktualisiert.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Dieter Schlüter 2026-10-10 03:35:06 +02:00
commit 0fc87da74f
2 changed files with 14 additions and 6 deletions

View file

@ -28,6 +28,8 @@ pip install -r requirements.txt
- `tesseract-ocr` + `tesseract-ocr-deu` braucht man nur für gescannte PDFs.
- `pandoc` braucht man nur für das EPUB.
- `pix2text` braucht man nur für `--formulas` (Mathebücher, siehe Abschnitt 6):
`pip install "pix2text[multilingual]"`.
Prüfen, ob alles da ist:
@ -308,7 +310,8 @@ Kolumnentitel und Seitenzahlen gedruckter Bücher werden automatisch entfernt, g
| `--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` | zusätzlich EPUB erzeugen (schaltet `--images` ein); Formeln `$…$`/`$$…$$` werden MathML |
| `--formulas` | Mathebücher: jede Formel auf der Seite finden, auch im Fließtext und in Merkkästen, und als Bild ausschneiden; Liste `formulas-*.json` für formula_img2latex (schaltet `--images` ein, braucht pix2text) |
| `--epub-file PFAD` | anderer Pfad für das EPUB |
| `--split teile\|kapitel\|seiten` | Teile, Kapitel oder Seitenbereiche als Einzeldateien (Abschnitt 4) |
| `--pages-per-file N`, `--page-ranges BEREICHE` | Seiten je Datei bzw. feste Bereiche für `--split seiten` |
@ -356,7 +359,7 @@ Kolumnentitel und Seitenzahlen gedruckter Bücher werden automatisch entfernt, g
| Link führt ins Leere oder ist abgeschnitten | URL in der PDF nachsehen und in `<…>` korrigieren; manche PDFs enthalten selbst abgeschnittene Linkziele |
| Register, Verse oder Code zu einem Absatz verklebt | Zeilen in Weg B mit `\` am Ende trennen bzw. Code in ```` ``` ```` einschließen; das Programm erkennt nur Umbrüche, bei denen das nächste Wort noch in die Zeile gepasst hätte |
| Fließtext zerfällt in einzelne Zeilen mit `\` | in Weg B die `\` am Zeilenende entfernen |
| Formeln erscheinen als Bilder | bei Mathebüchern normal; dafür ist das Programm nicht gebaut |
| Formeln erscheinen als Bilder oder als Zeichensalat (`x4n`) | `--formulas` verwenden und die Formeln danach mit formula_img2latex in LaTeX übersetzen; anschließend `--from-md` baut das EPUB mit MathML |
| Alter Scan: falsche Überschriften, viele Lesefehler | `--ocr always` (vorhandene OCR-Ebene ignorieren) |
| Gedicht wird zu Fließtext (Verse zusammengefügt) | `--keep-lines` |
| Auf Scans fehlen Leerzeichen („deutetin“) | OCR-Fehler; höhere Auflösung versuchen (`--ocr-dpi 400`) oder von Hand korrigieren |

View file

@ -17,7 +17,8 @@ sudo apt install tesseract-ocr tesseract-ocr-deu pandoc
pip install -r requirements.txt # pymupdf4llm, pymupdf-layout, pytest
```
`tesseract-ocr` wird nur für Scans gebraucht, `pandoc` nur für `--epub`. Für Fraktur-Scans das
`tesseract-ocr` wird nur für Scans gebraucht, `pandoc` nur für `--epub`, `pix2text` nur für
`--formulas` (`pip install "pix2text[multilingual]"`, siehe formula_img2latex). Für Fraktur-Scans das
Modell `deu_latf` aus [tessdata_best](https://github.com/tesseract-ocr/tessdata_best) nach
`/usr/share/tesseract-ocr/5/tessdata/` laden und `--ocr-language deu_latf` angeben (besser als
das Ubuntu-Paket `tesseract-ocr-frk`).
@ -64,7 +65,8 @@ python3 pdf2md.py --epub --ocr-language eng --ocr always scan.pdf scan.md # EP
| `--images` | Grafiken in `<name>_images/` speichern und 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`, `--epub-file PFAD` | EPUB 3 mit pandoc erzeugen (schaltet `--images` ein) |
| `--epub`, `--epub-file PFAD` | EPUB 3 mit pandoc erzeugen (schaltet `--images` ein); `$…$`/`$$…$$` werden MathML |
| `--formulas` | Mathebücher: jede Formel auf der Seite finden (pix2text, auch im Fließtext und in Merkkästen), zeichengenau aus dem Text schneiden und als Bild `<pdf>-<seite>-f<nr>.png` speichern, Liste in `<name>_images/formulas-*.json`; für [formula_img2latex](https://kitux.de/forgejo/dschlueter/formula_img2latex), das sie in LaTeX übersetzt (schaltet `--images` ein) |
| `--split teile\|kapitel\|seiten` | Teile, Kapitel oder PDF-Seitenbereiche als Einzeldateien in einem Ordner `<name>/` mit `index.md` (Reihenfolge) und `images/`; Anhang/Autor/Impressum nach dem letzten Kapitel als „Nachspann“ |
| `--pages-per-file N` | mit `--split seiten`: etwa N PDF-Seiten je Datei (Standard 20), Schnitt an Absatzgrenzen, bevorzugt an einer Überschrift bis zu einer Seite neben der Grenze |
| `--page-ranges 1-12,13-40,41-` | mit `--split seiten`: feste Seitenbereiche (streng, ohne Ausrichten); Seiten außerhalb werden eigene Dateien |
@ -155,8 +157,11 @@ synthetisch erzeugt.
- Gedicht-Scans ohne `--keep-lines`: Die Layout-Analyse von pymupdf4llm kann eng stehende Verse
verschränken („UndDon tauchteweißen …“) – mit `--keep-lines` werden Scans direkt aus
Tesseract gelesen.
- **Mathematische Formeln** werden als Bilder übernommen; für Mathebücher ist ein anderes
Werkzeug besser geeignet (z. B. Marker, Nougat).
- **Mathematische Formeln** werden ohne `--formulas` als Bilder übernommen (abgesetzte Formeln) bzw. als
Glyphensalat im Fließtext (`x4n` statt x⁴ⁿ). Mit `--formulas` wird jede Formel ein eigenes Bild, das
formula_img2latex in LaTeX übersetzt (Corral, *Elementary Calculus*: 9239 Formeln, Stichprobe 79 %
automatisch). Formeln in Tabellen erfasst die Erkennung noch nicht; „Formel“-Boxen mit viel Text werden
zu Text, solche mit Kurven bleiben Grafik.
- **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).