raw derive PDF: Bildseiten-CHECK zählt Seitenhintergründe, Füllpixel und wiederkehrende Symbole mit – nennt bei IHF alle 96 Seiten #229

Closed
opened 2026-10-14 05:38:52 +00:00 by torben · 2 comments
Owner

Befund aus der Prüfung am Original von #225 (2026-10-14, raw derive-Filter auf die IHF-Regeln 2025 und die BHV-Durchführungsbestimmungen 2026/27 Teil I–III, Version 10.1.0-beta.1).

Problem

tools/chemenu/filters/pdf.py (um Z. 70) meldet jede Seite, auf der pdf_layout.analyse ein LTImage findet (PageLayout.images, pdf_layout.py um Z. 141). Beim IHF-PDF lautet die Zeile deshalb:

CHECK Images on page(s) 1-96 are not contained in the text - check them against the original.

Eine Zeile, die jede Seite nennt, sagt nichts mehr – der Leser kann daraus nicht ableiten, wo Bildinhalt fehlt. Gemessen (pdfminer, gezeichnete Größe = bbox, Quellgröße = srcsize):

Bild Quellgröße Seiten Was es ist
Seitenhintergrund 1654×2338 px, gezeichnet > 80 % der Seitenfläche 96 Hintergrund, kein Inhalt
Füllpixel 2×2 px, teils auf > 10 pt gestreckt 77 Farbfläche/Linie, kein Inhalt
Symbol 58×97 px 25 wiederkehrendes Symbol (Bedeutung nicht geprüft)
übrige je 1 Seite 16 Bildinhalt

Ohne die drei ersten Gruppen bleiben die Seiten 1, 2, 6–8, 29, 48–55, 81, 96 – das trifft die Handzeichen-Tafeln (S. 48–55) und die übrigen Abbildungen. BHV Teil I: der Filter nennt heute S. 9–14, 16–18, 31–34, 36; ohne Hintergründe und Füllpixel (< 10 pt gezeichnet) bleibt S. 36.

Vorschlag

Ein LTImage zählt für den CHECK nur, wenn es keines von diesen ist:

  • Hintergrund: gezeichnete Fläche > 80 % der Seitenfläche.
  • Füllfläche: Quellgröße in beiden Richtungen ≤ 4 px, oder gezeichnet < 10 pt in einer Richtung.
  • Wiederkehrend: derselbe Bildinhalt (gleicher Datenstrom) auf mehr als 3 Seiten – Logo, Kopfzeilensymbol.

Die Schwellen sind Startwerte aus diesen vier PDFs; beim Bau gegen testfiles/pdf/ gegenprüfen. Ändert eine Schwelle dort die gemeldeten Seiten, ist das zu begründen oder anzupassen.

Akzeptanzkriterien

  • Ein Test-PDF mit ganzseitigem Hintergrundbild auf jeder Seite und einem Bild auf nur einer Seite meldet genau diese eine Seite.
  • Ein 2×2-px-Bild, gestreckt oder nicht, löst keinen CHECK aus.
  • Ein Bild mit demselben Datenstrom auf vier Seiten löst keinen CHECK aus; auf drei Seiten schon.
  • Ein PDF, dessen einzige Bilder unter diese Regeln fallen, bekommt keine Bild-CHECK-Zeile.
  • raw/CONTRACT.md und die Referenz zu raw derive beschreiben, welche Bilder der CHECK nicht zählt.
  • pytest, docs verify, instructions verify grün; CI auf dem veröffentlichten Commit grün.

Versionsteil

PATCH. Der CHECK ist eine Ausgabe auf der Konsole, keine Kopfzeile von derived.md; nichts parst ihn. Drop-in.

Nebenbei beobachtet (nicht Teil dieses Issues)

  • Die Kopflinie jeder IHF-Seite (eine Zeile Unterstriche in einer anderen Farbe) erscheint 95-mal als *____*. Weißer Text in schwarzen oder grauen Tabellenköpfen (BHV) erscheint als *…*. Beides folgt der sichtbaren Form wie entschieden (#225), kostet aber Zeichen; erst angehen, wenn #226/#228 zeigen, dass es stört.
  • Graue Hinterlegungen (#cccccc, #bfbfbf) erscheinen als Hexwert, weil die Farbtabelle nur einen Grauwert kennt – wie entschieden.
Befund aus der Prüfung am Original von #225 (2026-10-14, `raw derive`-Filter auf die IHF-Regeln 2025 und die BHV-Durchführungsbestimmungen 2026/27 Teil I–III, Version 10.1.0-beta.1). ## Problem `tools/chemenu/filters/pdf.py` (um Z. 70) meldet jede Seite, auf der `pdf_layout.analyse` ein `LTImage` findet (`PageLayout.images`, `pdf_layout.py` um Z. 141). Beim IHF-PDF lautet die Zeile deshalb: > CHECK Images on page(s) 1-96 are not contained in the text - check them against the original. Eine Zeile, die jede Seite nennt, sagt nichts mehr – der Leser kann daraus nicht ableiten, wo Bildinhalt fehlt. Gemessen (pdfminer, gezeichnete Größe = `bbox`, Quellgröße = `srcsize`): | Bild | Quellgröße | Seiten | Was es ist | |---|---|---:|---| | Seitenhintergrund | 1654×2338 px, gezeichnet > 80 % der Seitenfläche | 96 | Hintergrund, kein Inhalt | | Füllpixel | 2×2 px, teils auf > 10 pt gestreckt | 77 | Farbfläche/Linie, kein Inhalt | | Symbol | 58×97 px | 25 | wiederkehrendes Symbol (Bedeutung nicht geprüft) | | übrige | je 1 Seite | 16 | Bildinhalt | Ohne die drei ersten Gruppen bleiben die Seiten 1, 2, 6–8, 29, 48–55, 81, 96 – das trifft die Handzeichen-Tafeln (S. 48–55) und die übrigen Abbildungen. BHV Teil I: der Filter nennt heute S. 9–14, 16–18, 31–34, 36; ohne Hintergründe und Füllpixel (< 10 pt gezeichnet) bleibt S. 36. ## Vorschlag Ein `LTImage` zählt für den CHECK nur, wenn es **keines** von diesen ist: - **Hintergrund:** gezeichnete Fläche > 80 % der Seitenfläche. - **Füllfläche:** Quellgröße in beiden Richtungen ≤ 4 px, oder gezeichnet < 10 pt in einer Richtung. - **Wiederkehrend:** derselbe Bildinhalt (gleicher Datenstrom) auf mehr als 3 Seiten – Logo, Kopfzeilensymbol. Die Schwellen sind Startwerte aus diesen vier PDFs; beim Bau gegen `testfiles/pdf/` gegenprüfen. Ändert eine Schwelle dort die gemeldeten Seiten, ist das zu begründen oder anzupassen. ## Akzeptanzkriterien - [ ] Ein Test-PDF mit ganzseitigem Hintergrundbild auf jeder Seite und einem Bild auf nur einer Seite meldet genau diese eine Seite. - [ ] Ein 2×2-px-Bild, gestreckt oder nicht, löst keinen CHECK aus. - [ ] Ein Bild mit demselben Datenstrom auf vier Seiten löst keinen CHECK aus; auf drei Seiten schon. - [ ] Ein PDF, dessen einzige Bilder unter diese Regeln fallen, bekommt keine Bild-CHECK-Zeile. - [ ] `raw/CONTRACT.md` und die Referenz zu `raw derive` beschreiben, welche Bilder der CHECK nicht zählt. - [ ] `pytest`, `docs verify`, `instructions verify` grün; CI auf dem veröffentlichten Commit grün. ## Versionsteil PATCH. Der CHECK ist eine Ausgabe auf der Konsole, keine Kopfzeile von `derived.md`; nichts parst ihn. Drop-in. ## Nebenbei beobachtet (nicht Teil dieses Issues) - Die Kopflinie jeder IHF-Seite (eine Zeile Unterstriche in einer anderen Farbe) erscheint 95-mal als `*____*`. Weißer Text in schwarzen oder grauen Tabellenköpfen (BHV) erscheint als `*…*`. Beides folgt der sichtbaren Form wie entschieden (#225), kostet aber Zeichen; erst angehen, wenn #226/#228 zeigen, dass es stört. - Graue Hinterlegungen (`#cccccc`, `#bfbfbf`) erscheinen als Hexwert, weil die Farbtabelle nur einen Grauwert kennt – wie entschieden.
torben added the prio/plannedsize/Sarea/kbkind/defect labels 2026-10-14 05:38:52 +00:00
Author
Owner

Weitere Daten (2026-10-14, drei weitere PDFs): „Dynamics 365 Licensing Deck“ (57 S.) meldet S. 1–57, „Inway Factsheet Connector for ELO“ (8 S.) meldet S. 1–8, „Dynamics 365 Licensing Guide“ (90 S.) 45 Seiten. Der Fehler ist also kein IHF-Einzelfall. Die Schwellen beim Bau auch gegen ein Foliendeck prüfen: Dort trägt jede Folie einen Hintergrund. Wo Bildinhalt wirklich fehlt, war hier nicht von Hand zu prüfen.

Weitere Daten (2026-10-14, drei weitere PDFs): „Dynamics 365 Licensing Deck“ (57 S.) meldet S. 1–57, „Inway Factsheet Connector for ELO“ (8 S.) meldet S. 1–8, „Dynamics 365 Licensing Guide“ (90 S.) 45 Seiten. Der Fehler ist also kein IHF-Einzelfall. Die Schwellen beim Bau auch gegen ein Foliendeck prüfen: Dort trägt jede Folie einen Hintergrund. Wo Bildinhalt wirklich fehlt, war hier nicht von Hand zu prüfen.
Author
Owner

In #231 aufgenommen (Betreiber, 2026-10-14: ein Issue für das ganze Thema). Befund, Schwellen und Kriterien stehen dort unter Problem 4 und Vorschlag A Punkt 6. Geschlossen.

In #231 aufgenommen (Betreiber, 2026-10-14: ein Issue für das ganze Thema). Befund, Schwellen und Kriterien stehen dort unter Problem 4 und Vorschlag A Punkt 6. Geschlossen.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: torben/chemenu#229