fix: Ueberschriften-Erkennung, Bild-Referenzierung und Symbol-Qualitaet
Behebt mehrere Extraktionsprobleme in lib/pdf_extract.py, die zu doppelter
Nummerierung, sinnentleertem Text und falsch dimensionierten Symbolen fuehrten:
- Ueberschriften nur noch bei grosser/fetter Quellschrift (>= 12.5pt oder bold)
statt bei jeder Zeile mit Nummern-Praefix. Vorher wurden hunderte normale
Textzeilen (Querverweise, Aufzaehlungen) faelschlich zu Ueberschriften.
- Bildunterschriften ("Abbildung N: ...") werden nie mehr als Ueberschrift
gerendert (Caption-Erkennung vor Heading-Check, Merge-Regel verschaerft),
sondern als kursiver Absatz bzw. figure-Caption.
- Symbole (Warn-/Gebots-/Verbotspiktogramme) werden per Piktogramm-Heuristik
(Signalfarben + wenige Flaechenfarben) erkannt statt nur ueber Haeufigkeit -
findet auch Symbole, die im Dokument nur 1x vorkommen (z.B. Warndreiecke).
Auf quadratische Canvas normalisiert (normalize_symbol) und einheitlich
klein referenziert (:height: 10mm, :align: left), damit alle Symbole
unabhaengig vom Seitenverhaeltnis der Quelle gleich gross erscheinen.
- Junk-Erkennung erweitert: gerenderte Kapitelnummern-Bilder, Barcodes und
Foto-Ausschnitte werden nicht mehr als Symbol/Inhaltsbild extrahiert.
- Manuelle SYMBOL_BLOCKLIST (aHash-basiert) fuer sichtgepruefte Fehlklassi-
fikationen (Foto-/3D-/Diagramm-Fragmente), damit sie bei erneuter
Konvertierung nicht wieder auftauchen.
- Verzeichnislisten (Lieferantendoku etc.) werden im LaTeX-Build quer
(landscape via pdflscape) gesetzt, da die langen Quellpfade in Hochformat
nicht passten.
assets/shared/symbols/: auf normalisierte .png umgestellt, 7 Fehlklassi-
fikationen (Fotos/3D-Renderings/Diagramme statt Piktogramme) entfernt.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
3ebfe06139
commit
982879d9f0
@@ -245,9 +245,16 @@ def generate_index(chapter: str, items: list[dict], source_root: Path,
|
||||
lines.append(" Die referenzierten Dokumente liegen im Projekt-Rohmaterial und werden")
|
||||
lines.append(" hier nicht dupliziert.")
|
||||
lines.append("")
|
||||
# Die Verzeichnistabelle enthaelt lange Quellpfade und ist fuer Hochformat zu
|
||||
# breit -> im LaTeX/PDF-Build quer (landscape) setzen. Fuer HTML wird der
|
||||
# raw:latex-Block ignoriert (dort bricht die Tabelle ohnehin um).
|
||||
lines.append(".. raw:: latex")
|
||||
lines.append("")
|
||||
lines.append(" \\begin{landscape}")
|
||||
lines.append("")
|
||||
lines.append(".. list-table::")
|
||||
lines.append(" :header-rows: 1")
|
||||
lines.append(" :widths: 34 18 12 36")
|
||||
lines.append(" :widths: 30 16 8 46")
|
||||
lines.append("")
|
||||
lines.append(" * - Dokument")
|
||||
lines.append(" - Kategorie")
|
||||
@@ -260,6 +267,10 @@ def generate_index(chapter: str, items: list[dict], source_root: Path,
|
||||
lines.append(f" - {human_size(it['size_bytes'])}")
|
||||
lines.append(f" - ``{it['rel_path']}``")
|
||||
lines.append("")
|
||||
lines.append(".. raw:: latex")
|
||||
lines.append("")
|
||||
lines.append(" \\end{landscape}")
|
||||
lines.append("")
|
||||
|
||||
rst_path.write_text("\n".join(lines), encoding="utf-8")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user