Grasshopper vor Python: das Cognitive-Load-Argument, gelehrt mit PyMuPDF
Warum PAZ Grasshopper vor Python lehrt — Cognitive-Load-Theorie und ein PyMuPDF-Skript, das die Textebene eurer Ausschreibung in vier Zeilen ausliest.
Beginnen wir mit einem Ergebnis aus der falschen Disziplin. 1988 veröffentlichte der Kognitionswissenschaftler John Sweller, was zur Cognitive Load Theory wurde: das Arbeitsgedächtnis fasst nur wenige Chunks gleichzeitig — sagen wir vier, an guten Tagen, vor dem Kaffee — und jedes Symbol, das du nicht verstehst, belegt einen dieser Plätze. Sweller trennte die Kosten in intrinsische Last (die echte Schwierigkeit der Idee) und extrinsische Last (die Schwierigkeit der Verpackung). Lehren ist, in einem Satz, die Kunst, die extrinsische Last zu senken, damit die intrinsische Platz zum Landen hat.
Öffnen wir jetzt das, das diese Zeilen ausgelöst hat. Der ActiveState Python recipe index ist eine Wand aus guten, spezifischen Snippets — Vasudev Rams Rezept für Callbacks, etwa 38.000 Aufrufe über sieben Jahre, sitzt neben Jorj X. McKies PDF-Textextraktion mit fitz / MuPDF, etwa 35.000 Aufrufe über acht Jahre. Für einen fliessenden Entwickler liest sich das wie ein Buffet. Für einen Architekten in der ersten Programmierungswoche liest sich das wie ein Menü in einer Fremdsprache ohne Bilder: self, Dekoratoren, __init__, Einrückung, die tragend und unsichtbar ist. Das ist reine extrinsische Last. Nichts davon ist die Idee. Alles ist Verpackung.
Das ist die ganze pädagogische Rechtfertigung, Grasshopper vor Python an der PAZ Academy zu lehren, und es ist keine Geschmacksfrage. In Grasshopper ist der Datenfluss der Graph. Man sieht die Zahl eine Komponente verlassen und in der nächsten ankommen; es gibt keine Syntaxsteuer zwischen der Absicht und dem Ergebnis. Der Designer verwendet seine vier wertvollen Slots für die Geometrie, nicht dafür, wo der Doppelpunkt sitzt. Wie unser eigenes PAZ-Konzeptpanel zum kreativen Programmieren es sagt: die expressive Skizze und das Produktionsskript sind die gleiche Fähigkeit auf zwei Höhen — und auf der spielerischen Höhe ist Fliessigkeit am günstigsten zu erwerben. Grasshopper kauft die Intuition; Python gibt sie aus.
Das Werkzeug: Der Abschlusszweck — wenn der Knotengraph aus dem Leim geht — ist der ehrliche Grund, einen Texteditor zu öffnen, und genau dort verdient PyMuPDF seinen Nachmittag. PyMuPDF (importiert als fitz, gepflegt von Artifex auf Basis der MuPDF-Engine) liest die Textebene, Bilder und Geometrie aus einem PDF in wenigen Zeilen aus. Für die Bauleitung oder ein kleines Büro ist das PDF die Ausschreibung, der Leistungsbeschrieb — die Spec, die dir niemand als Spreadsheet gibt. Dies ist die erste Aufgabe, bei der Grasshopper wirklich nicht helfen kann und Python offensichtlich kann — was es zum perfekten ersten echten Skript macht.
Installation:
python -m venv .venv
.venvScriptsactivate # Windows; use: source .venv/bin/activate on macOS/Linux
pip install pymupdf
python -c "import fitz; print(fitz.__doc__)" # prints the build banner = it works
Erste Schritte:
- Lege jede beliebige Ausschreibungs-PDF neben dein Skript und benenne sie
tender.pdf. - Erstelle
extract.pymit vier Zeilen:import fitz, öffne das Dokument, durchlaufe die Seiten, gib den Text aus.import fitz doc = fitz.open("tender.pdf") for page in doc: print(page.get_text()) - Führe
python extract.pyaus. Die Spezifikation, die du gerade von Hand lesen wolltest, scrollt vorbei als reiner, durchsuchbarer Text — der Renderer schmunzelt, aber endlich auch der, der das Kleingedruckte liest.
←HEUTE: 2026: Ein Architekt, der die Textebene eines PDF auslesen kann, prüft eine 60-Seiten-Ausschreibung in Minuten, nicht an einem Nachmittag. →3012: Die Werkzeuge, die bis Zürich-3012 Bestand haben, sind die, deren Dateien noch immer ein Fremder öffnen kann. Fulcrum: Lehre die visuelle Höhe erst, damit die Texthöhe landet — der Graph ist, wo du lernst zu denken, das Skript ist, wo du lernst zu bewahren.
Ein Wort von der anderen Seite der Format-Kriege, denn Pädagogik ist auch eine Wette auf Haltbarkeit. Die Gebäude, die in meiner Zeit schlecht alterten, waren nicht die hässlichen — sie waren die, deren Dateien erloschen, wenn ein Anbieter verschwand. PDF ist ein ISO-Standard (ISO 32000); eine .py-Datei ist Text, den ein 25-Jähriger noch immer lesen kann; ein proprietärer Knotengraph ist ein Versprechen eines Unternehmens. Wir lehren Grasshopper erst wegen kognitiver Last, aber wir stellen sicher, dass die haltbare Ausgabe — der extrahierte Text, das einfache Skript, das offene Format — dort ist, wo der Wert sich absetzt. Wenn du dieses Quartal einen Stack wählst, stelle die einzige Frage, die zählt, wenn der Anbieter verschwindet: Kann ein Fremder die Datei noch öffnen?
Atelier: Für ein Schweizer Büro ist der Ertrag eine Triage-Fähigkeit, keine Karrierewechsel. Ein Studio, das gerade mit AI arbeitet, erstickt in PDFs, denen es halb traut — Ausschreibungen, Produktdatenblätter, LOIN-Pläne — und greift zu einem Chatbot, um sie zusammenzufassen, was in Ordnung ist, bis die Zahl falsch und nicht nachzuverfolgen ist. Die Montag-Aktion: Leg ein fünfzehn-zeiliges PyMuPDF-Skript auf eine Workstation und leite jede eingehende Ausschreibung durch page.get_text(), bevor jemand sie liest, damit das Büro den echten Text durchsucht statt im Scan zu raten. Ein Skript, ein Nachmittag, null Lizenzen.
Hack: Durchsuche die ganze Ausschreibung nach jeder Dimension, die sie nennt, in einem Durchlauf. Sobald der Text aus dem PDF raus ist, verwandelt ein einziger regulärer Ausdruck ein Dokument, das du überfliegst, in eines, das du prüfst — jeden mm-Wert, dedupliziert und sortiert, so dass der Ausreisser offensichtlich ist.
import re, fitz
text = "".join(p.get_text() for p in fitz.open("tender.pdf"))
dims = re.findall(r"bd{2,5}s?mmb", text) # every 2-5 digit mm value
print(sorted(set(dims), key=lambda s: int(re.match(r"d+", s).group())))
Führe es gegen zwei Versionen der gleichen Ausschreibung aus und die Differenz dieser zwei Mengen ist deine Änderungsliste — die Platte, die still von 240 mm auf 220 mm zwischen den Ausgaben wechselte, erwischt bevor der Maurer es merkt.
Nichts davon widerspricht der Grasshopper-zuerst-Regel; es vervollständigt sie. Der Knotengraph lehrte dich, dass eine Pipeline Eingaben → Transformation → Ausgaben ist. PyMuPDF ist diese gleiche Form im Text geschrieben: öffne, transformiere, drucke. Du hattest es schon visuell verstanden, bevor du je auf einen Doppelpunkt trafst — das ist genau der Punkt. PAZ’s eigene Archicad-Python-Sitzungen machen das gleiche Argument von der anderen Seite, dass die echte Barriere für Architekten selten die Logik ist und fast immer die Dokumentationslücke und die Syntaxsteuer um sie herum.
Lern-Ressourcen:
- Die Quelle, die das ausgelöst hat: ActiveState Python Rezepte — inkl. McKies PyMuPDF-Textextraktion
- Das PATH-Problem zuerst lösen: Python auf Windows — offizielle Docs
- Die Stolpersteine, denen dein CAD-Skript begegnet: A bad day to use Python
- Abhängigkeitshygiene vor
pip install: Der litellm PyPI Supply-Chain-Vorfall - PAZ-Notiz — das gleiche Argument von der Archicad-Seite: Die 3 Dokumentationslücken, die alle in Archicad Python ausbremsen
Also: lehre den Graph vor dem Doppelpunkt, und beweise den Ertrag mit der hässlichsten PDF in deinem Posteingang. Klone nichts, das du nicht brauchst, installiere PyMuPDF, und mach dein erstes Skript das eine, das deine nächste Ausschreibung für dich liest.
QUELLE · ↗
PAZ Kaffi · interdisziplinäre Redaktionsarbeit, geleitet von der PAZ Academy