extract_ids.py impl. Bauen der json Files so dass die Bezeichnungen immer mit dabei stehen ausser in den Blättern.

This commit is contained in:
2026-05-19 16:19:01 +02:00
parent d10d7c8e01
commit 038b51d35d
4 changed files with 245 additions and 141 deletions
+12 -5
View File
@@ -272,7 +272,12 @@ def extract_text_to_rst(pdf_path: Path, rst_path: Path) -> int:
# --- Phase 3: Ueberschriften erkennen und RST generieren ---
# Heading: Nummerierung wie "1 Text", "2.3 Text", "2.3.1.4 Text"
# Text muss mit einem Buchstaben beginnen (verhindert "610 014 001" etc.)
RE_HEADING = re.compile(r"^(\d+(?:\.\d+)*)\s+([A-Za-zÄÖÜäöüß].+)$")
# Jeder Nummerierungsteil max 3 Stellen (verhindert Datumsangaben wie "10.12.2020")
# Titeltext muss mit einem Wort von mind. 3 Buchstaben beginnen
# (verhindert "2 B. def.", "19.8 mm (LW13)")
RE_HEADING = re.compile(
r"^(\d{1,3}(?:\.\d{1,3})*)\s+([A-Za-zÄÖÜäöüß]{3,}.*)$"
)
rst_lines: list[str] = []
title = pdf_path.stem
rst_lines.append(RST_HEADING_CHARS[1] * len(title))
@@ -310,10 +315,12 @@ def extract_text_to_rst(pdf_path: Path, rst_path: Path) -> int:
toc_num = toc_numbers.get(text)
if toc_num:
# Nummer aus TOC voranstellen
text = f"{toc_num} {text}"
hm = RE_HEADING.match(text)
is_heading = True
log.debug(" TOC-Nummer ergaenzt: %s", text)
candidate = f"{toc_num} {text}"
hm = RE_HEADING.match(candidate)
if hm:
text = candidate
is_heading = True
log.debug(" TOC-Nummer ergaenzt: %s", text)
if is_heading:
num = hm.group(1)