Nachbearbeitung für epub2md- und pdf2md-Ausgaben: scan → recognize (Vision-LLM lokal/OpenRouter) → verify → review → apply/revert. - Rendern mit pdflatex (Batch, Fehlerisolierung, unsichere Befehle gesperrt), Schrift-Presets cm/times/txfonts/palatino/stix/euler, automatische Wahl je Buch - Bildvergleich in Originalauflösung mit ¼-Pixel-Ausrichtung, Pixel/Punkt-Konsistenz - Kontrasttest gegen layouttreue Verwechslungsvarianten, Selbstkorrektur per Hill-Climbing - Pandoc/MathML-Prüfung vor jeder Annahme - pdf2md: Formelbild per Template-Matching auf der Seite finden, 600-dpi-Neuausschnitt - Review-Galerie auf localhost (Token-geschützt), idempotentes apply mit Sicherung, revert - calibrate: Messung an Formelbildern mit TeX im alt-Text (0/600 Falsch-Annahmen) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
173 lines
6.5 KiB
Markdown
173 lines
6.5 KiB
Markdown
# Bedienungsanleitung formula_img2latex
|
|
|
|
Dieses Programm ersetzt Formelbilder in den Markdown-Dateien von epub2md und pdf2md durch echte
|
|
LaTeX-Formeln. Dadurch passen die Formeln beim Neubau als EPUB oder PDF in Größe und Schrift zum Text.
|
|
|
|
Es ersetzt eine Formel nur, wenn das gerenderte LaTeX genauso aussieht wie das Bild. Bei Zweifeln fragt
|
|
es dich in einer Review-Seite im Browser. Ohne deine Zustimmung bleibt die Formel ein Bild.
|
|
|
|
---
|
|
|
|
## 1. Einrichtung (einmalig)
|
|
|
|
```bash
|
|
sudo apt install texlive-latex-extra texlive-fonts-extra texlive-science pandoc
|
|
cd ~/Python_Programs/formula_img2latex
|
|
pip install -r requirements.txt
|
|
python3 formula_img2latex.py --version
|
|
```
|
|
|
|
### Lokales Bildmodell starten
|
|
|
|
Die Formelerkennung macht ein Vision-Sprachmodell. Lokal läuft es mit llama.cpp auf einer Grafikkarte:
|
|
|
|
```bash
|
|
M=~/endeavour_home/lm_studio/models/lmstudio-community/Qwen3-VL-30B-A3B-Instruct-GGUF
|
|
CUDA_VISIBLE_DEVICES=1 ~/.local/bin/llama-server \
|
|
-m $M/Qwen3-VL-30B-A3B-Instruct-Q4_K_M.gguf --mmproj $M/mmproj-Qwen3-VL-30B-A3B-Instruct-F16.gguf \
|
|
--host 127.0.0.1 --port 8011 -ngl 99 -c 16384 --parallel 4
|
|
```
|
|
|
|
Der Server belegt etwa 20 GB auf GPU 1. Beenden mit Strg+C.
|
|
|
|
### Cloud-Stufe (optional)
|
|
|
|
Formeln, die lokal nicht sicher erkannt werden, kann ein Cloud-Modell über OpenRouter versuchen. Dafür muss
|
|
`OPENROUTER_API_KEY` gesetzt sein. Ein Buch mit 2000 Formeln kostet mit dem Standardmodell
|
|
`google/gemini-2.5-flash` deutlich unter 1 $. Ohne Cloud: `--no-cloud`.
|
|
|
|
---
|
|
|
|
## 2. Ein Buch bearbeiten
|
|
|
|
### Schritt 1: Buch wie gewohnt umwandeln
|
|
|
|
```bash
|
|
cd ~/Python_Programs/epub2md
|
|
python3 epub2md.py buch.epub output/buch
|
|
```
|
|
|
|
Bei PDFs mit pdf2md immer `--images` (oder `--epub`) angeben, sonst gibt es keine Formelbilder.
|
|
|
|
### Schritt 2: Formeln erkennen und prüfen
|
|
|
|
```bash
|
|
cd ~/Python_Programs/formula_img2latex
|
|
python3 formula_img2latex.py run ~/Python_Programs/epub2md/output/buch
|
|
```
|
|
|
|
Bei pdf2md zusätzlich die Original-PDF angeben. Dann schneidet das Programm jede Formel scharf aus dem PDF:
|
|
|
|
```bash
|
|
python3 formula_img2latex.py run Output/buch.md --pdf buch.pdf
|
|
```
|
|
|
|
Am Ende steht eine Übersicht, zum Beispiel:
|
|
|
|
```text
|
|
auto_accepted 412 ← sicher, wird ersetzt
|
|
needs_review 380 ← bitte im Browser ansehen
|
|
rejected_keep_image 95 ← passt nicht, bleibt Bild
|
|
not_formula 117 ← Abbildung/Symbol
|
|
```
|
|
|
|
Neben dem Buchordner entsteht ein Arbeitsordner `buch.formulas/`. Er enthält alle Ergebnisse. Lösch ihn nicht,
|
|
solange du am Buch arbeitest.
|
|
|
|
### Schritt 3: Zweifelsfälle im Browser entscheiden
|
|
|
|
```bash
|
|
python3 formula_img2latex.py review ~/Python_Programs/epub2md/output/buch
|
|
```
|
|
|
|
Der Browser öffnet `http://127.0.0.1:8765/`. Für jede Formel siehst du:
|
|
|
|
- **Original:** das Bild aus dem Buch.
|
|
- **Overlay:** Original und LaTeX übereinander. Mit dem Regler blendest du zwischen beiden. Springt etwas,
|
|
stimmt etwas nicht (Exponent, Vorzeichen, Klammer).
|
|
- **Diff:** schwarz = beide gleich, rot = nur im Original, blau = nur im LaTeX, gelb = deutliche Abweichung.
|
|
- **LaTeX:** Text im Eingabefeld, darunter eventuell weitere Kandidaten zum Anklicken.
|
|
|
|
Schaltflächen:
|
|
|
|
| Schaltfläche | Wirkung |
|
|
| --- | --- |
|
|
| LaTeX prüfen | rendert dein (korrigiertes) LaTeX neu und zeigt Overlay und Messwerte |
|
|
| LaTeX übernehmen | die Formel wird beim nächsten `apply` ersetzt |
|
|
| Bild behalten | die Formel bleibt ein Bild |
|
|
| Keine Formel | das Bild ist eine Abbildung oder ein Symbol |
|
|
| Zurücksetzen | Entscheidung zurücknehmen |
|
|
|
|
Jede Entscheidung wird sofort gespeichert. Du kannst jederzeit aufhören (Strg+C im Terminal) und später
|
|
weitermachen. `--all` zeigt auch die automatisch angenommenen Formeln.
|
|
|
|
### Schritt 4: Formeln ins Markdown schreiben
|
|
|
|
```bash
|
|
python3 formula_img2latex.py apply ~/Python_Programs/epub2md/output/buch --dry-run # nur zählen
|
|
python3 formula_img2latex.py apply ~/Python_Programs/epub2md/output/buch
|
|
```
|
|
|
|
Aus `` wird `$L = \{-\sqrt{2};\sqrt{2}\}$` im Text bzw. `$$…$$` als eigener
|
|
Absatz. Die Bilddateien bleiben liegen.
|
|
|
|
**Danach die Gesamtdatei neu bauen**, sie enthält sonst noch die Bilder:
|
|
|
|
```bash
|
|
cd ~/Python_Programs/epub2md
|
|
python3 epub2md_merge.py output/buch --force
|
|
```
|
|
|
|
Für EPUB und PDF mit Formeln gelten die Pandoc-Befehle aus der epub2md-Anleitung mit `--mathml`.
|
|
|
|
### Rückgängig machen
|
|
|
|
```bash
|
|
python3 formula_img2latex.py revert ~/Python_Programs/epub2md/output/buch
|
|
```
|
|
|
|
Das stellt die Kapiteldateien wie vor dem ersten `apply` wieder her. Hast du eine Datei seitdem von Hand
|
|
geändert, wird sie übersprungen. `--force` setzt sie trotzdem zurück, dann ist die Handänderung weg.
|
|
|
|
---
|
|
|
|
## 3. Einzelne Schritte statt `run`
|
|
|
|
```bash
|
|
python3 formula_img2latex.py scan AUSGABE # Bilder finden
|
|
python3 formula_img2latex.py recognize AUSGABE --engine local # lokal erkennen
|
|
python3 formula_img2latex.py verify AUSGABE # prüfen und entscheiden
|
|
python3 formula_img2latex.py recognize AUSGABE --engine cloud --only-unresolved
|
|
python3 formula_img2latex.py verify AUSGABE
|
|
python3 formula_img2latex.py status AUSGABE
|
|
```
|
|
|
|
Nützliche Optionen:
|
|
|
|
| Option | Wirkung |
|
|
| --- | --- |
|
|
| `--limit 50` | nur die ersten 50 Bilder (zum Ausprobieren) |
|
|
| `--preset cm` | Schrift fest vorgeben (`cm`, `times`, `txfonts`, `palatino`, `stix`, `euler`); Standard: automatisch |
|
|
| `--include-figures` | auch Bilder versuchen, die wie Abbildungen aussehen |
|
|
| `--model NAME` | anderes Modell (lokal: Servername, Cloud: OpenRouter-ID) |
|
|
| `--workspace ORDNER` | Arbeitsordner an anderem Ort |
|
|
| `--redo` (verify) | bereits geprüfte Formeln neu prüfen, z. B. nach einem Programm-Update |
|
|
|
|
---
|
|
|
|
## 4. Häufige Fragen
|
|
|
|
**Das Buch wurde mit epub2md `--force` neu umgewandelt. Ist meine Arbeit weg?**
|
|
Nein. Die Entscheidungen hängen am Inhalt der Bilder, nicht an Dateinamen. `scan`, dann `apply`.
|
|
|
|
**Warum landet so viel im Review?**
|
|
Das Programm ersetzt nur, was es beweisen kann. Häufige Gründe: Das Bild ist sehr klein (Ziffern unter
|
|
8 Pixeln). Das Buch wurde mit einem anderen Satzsystem gesetzt. Oder die Erkennung schreibt eine Formel
|
|
typografisch anders (`\vec` statt langem Pfeil). Im Review genügt dann meist ein Blick auf das Overlay.
|
|
|
|
**Geht die blaue Hinterlegung mancher Formeln verloren?**
|
|
Ja. Das Bild hatte die Farbe eingebaut, LaTeX-Formeln haben keinen Hintergrund.
|
|
|
|
**Werden Buchinhalte ins Internet geschickt?**
|
|
Nur mit der Cloud-Stufe, und nur die einzelnen Formelbilder samt eines kurzen Textausschnitts davor. Mit
|
|
`--no-cloud` bleibt alles lokal.
|