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.
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.
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.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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 derpdf_layout.analyseeinLTImagefindet (PageLayout.images,pdf_layout.pyum Z. 141). Beim IHF-PDF lautet die Zeile deshalb: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):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
LTImagezählt für den CHECK nur, wenn es keines von diesen ist: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
raw/CONTRACT.mdund die Referenz zuraw derivebeschreiben, welche Bilder der CHECK nicht zählt.pytest,docs verify,instructions verifygrü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)
*____*. 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.#cccccc,#bfbfbf) erscheinen als Hexwert, weil die Farbtabelle nur einen Grauwert kennt – wie entschieden.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.
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.