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:
Michael Stangl
2026-09-23 15:23:29 +02:00
co-authored by Claude Sonnet 5
parent 3ebfe06139
commit 982879d9f0
22 changed files with 217 additions and 21 deletions
+4
View File
@@ -95,10 +95,14 @@ latex_elements = {
"polyglossia": "",
"babel": r"\usepackage[ngerman]{babel}",
# Robustheit gegen ueberlange Zeilen aus der PDF-Textextraktion:
# - pdflscape: erlaubt \begin{landscape} fuer quergestellte Verzeichnistabellen
# - \UrlBreaks: lange Quellpfade in ``...`` duerfen umbrechen
"preamble": r"""
\usepackage{microtype}
\usepackage{pdflscape}
\emergencystretch=3em
\setcounter{tocdepth}{2}
\sloppy
\renewcommand{\sphinxbreaksbeforeactivelist}{\do\-\do\/\do\_\do\.}
""",
}