Zum Inhalt

Ein LV endet nicht am Seitenumbruch.

Franz Bettags GAEB-Projekt verbindet PDF-Text, Vision-Modelle und eine Prüfoberfläche. Ziel ist ein nachvollziehbares Leistungsverzeichnis: mit Titelhierarchie, vollständigen Texten, Mengen und einem kontrollierten X83/X84-Export.

Fiktives Musterprojekt Werkraum mit vier Ausbaupositionen, vollständigen Leistungstexten, Mengen und Einheitspreisen.
Fiktives Original · 1 PDF-Seite

Ein LV. Zwei Austauschphasen.

X83 enthält Leistungsbeschreibungen und Mengen. Die zugehörige X84 enthält Angebotspreise. Positionskennungen verbinden die beiden Dateien.

Manuell geprüftes fiktives LV, keine gemessene KI-Ausgabe
Position Menge Einheitspreis
01.01.0010Wandflächen vorbereiten 24,000 8,500 EUR
01.01.0020Wandanstrich ausführen 24,000 14,750 EUR
01.01.0030Sockelleisten montieren 18,500m 11,200 EUR
01.01.0040Abschlusskontrolle 1,000St 45,000 EUR

4 Positionen · 810,20 EUR Angebotssumme ohne Umsatzsteuer · X83 und X84 gegen GAEB-XSD geprüft.

{
  "bidder": "Fiktiver Musterbetrieb",
  "bidder_city": "Musterort",
  "bidder_postcode": "00000",
  "bidder_street": "Beispielstraße 1",
  "currency": "EUR",
  "document_sha256": "91faa4998e3dba7aeeaae66d4dd78f873c16ea46226d25b35e5689f37dc7609d",
  "issues": [],
  "lv_id": "DEMO-WERKRAUM",
  "name": "Fiktives Referenzbeispiel, manuell übertragen",
  "nodes": [
    {
      "alternative_group": null,
      "alternative_rank": null,
      "complements": [],
      "field_sources": {},
      "id": "title01",
      "include_in_total": null,
      "issues": [],
      "item_type": "normal",
      "kind": "heading",
      "long_text": "",
      "oz": "01",
      "parent_id": null,
      "parent_oz": null,
      "quantity": null,
      "short_text": "Ausbau",
      "sources": [],
      "unit": null,
      "unit_price": null
    },
    {
      "alternative_group": null,
      "alternative_rank": null,
      "complements": [],
      "field_sources": {},
      "id": "title0101",
      "include_in_total": null,
      "issues": [],
      "item_type": "normal",
      "kind": "heading",
      "long_text": "",
      "oz": "01.01",
      "parent_id": "title01",
      "parent_oz": "01",
      "quantity": null,
      "short_text": "Oberflächen",
      "sources": [],
      "unit": null,
      "unit_price": null
    },
    {
      "alternative_group": null,
      "alternative_rank": null,
      "complements": [],
      "field_sources": {},
      "id": "item0010",
      "include_in_total": null,
      "issues": [],
      "item_type": "normal",
      "kind": "item",
      "long_text": "Lose Beschichtungen entfernen und den Untergrund trocken reinigen.\nAnschlüsse an Fenster und Türen sorgfältig abkleben. Staub und Restmaterial fachgerecht aufnehmen.",
      "oz": "01.01.0010",
      "parent_id": "title0101",
      "parent_oz": "01.01",
      "quantity": "24.000",
      "short_text": "Wandflächen vorbereiten",
      "sources": [
        {
          "bbox": null,
          "line_ids": [],
          "method": "manual_reference",
          "page": 1
        }
      ],
      "unit": "m2",
      "unit_price": "8.500"
    },
    {
      "alternative_group": null,
      "alternative_rank": null,
      "complements": [],
      "field_sources": {},
      "id": "item0020",
      "include_in_total": null,
      "issues": [],
      "item_type": "normal",
      "kind": "item",
      "long_text": "Zweifacher Anstrich mit weißer Innenwandfarbe auf vorbereitetem Untergrund.\nDie Fläche muss nach dem Trocknen gleichmäßig deckend sein. Abklebungen entfernen und die Arbeitsstelle sauber übergeben.",
      "oz": "01.01.0020",
      "parent_id": "title0101",
      "parent_oz": "01.01",
      "quantity": "24.000",
      "short_text": "Wandanstrich ausführen",
      "sources": [
        {
          "bbox": null,
          "line_ids": [],
          "method": "manual_reference",
          "page": 1
        }
      ],
      "unit": "m2",
      "unit_price": "14.750"
    },
    {
      "alternative_group": null,
      "alternative_rank": null,
      "complements": [],
      "field_sources": {},
      "id": "item0030",
      "include_in_total": null,
      "issues": [],
      "item_type": "normal",
      "kind": "item",
      "long_text": "Sockelleisten aus Holz liefern, ablängen und befestigen. Gehrungen an Ecken herstellen.\nSichtbare Oberflächen dürfen keine offenen Befestigungslöcher aufweisen.",
      "oz": "01.01.0030",
      "parent_id": "title0101",
      "parent_oz": "01.01",
      "quantity": "18.500",
      "short_text": "Sockelleisten montieren",
      "sources": [
        {
          "bbox": null,
          "line_ids": [],
          "method": "manual_reference",
          "page": 1
        }
      ],
      "unit": "m",
      "unit_price": "11.200"
    },
    {
      "alternative_group": null,
      "alternative_rank": null,
      "complements": [],
      "field_sources": {},
      "id": "item0040",
      "include_in_total": null,
      "issues": [],
      "item_type": "normal",
      "kind": "item",
      "long_text": "Alle bearbeiteten Flächen gemeinsam begehen. Kleine Fehlstellen unmittelbar nacharbeiten.\nEin kurzes Protokoll mit Datum und ausgeführten Nacharbeiten übergeben.",
      "oz": "01.01.0040",
      "parent_id": "title0101",
      "parent_oz": "01.01",
      "quantity": "1.000",
      "short_text": "Abschlusskontrolle",
      "sources": [
        {
          "bbox": null,
          "line_ids": [],
          "method": "manual_reference",
          "page": 1
        }
      ],
      "unit": "St",
      "unit_price": "45.000"
    }
  ],
  "page_count": 1,
  "processing_complete": true,
  "project": "Musterprojekt Werkraum",
  "review_status": "synthetic_manual_reference",
  "reviewed": true,
  "schema_version": "lv-1.0"
}
<?xml version='1.0' encoding='UTF-8'?>
<GAEB xmlns="http://www.gaeb.de/GAEB_DA_XML/DA83/3.3">
  <GAEBInfo>
    <Version>3.3</Version>
    <VersDate>2021-05</VersDate>
    <Date>2026-09-08</Date>
    <ProgSystem>Bettag Systems</ProgSystem>
    <ProgName>LV-Konvertierung</ProgName>
  </GAEBInfo>
  <PrjInfo>
    <NamePrj>Musterprojekt Werkraum</NamePrj>
    <Cur>EUR</Cur>
  </PrjInfo>
  <Award>
    <DP>83</DP>
    <BoQ ID="b91faa4998e3dba7aeeaae66d">
      <BoQInfo>
        <Name>DEMO-WERKRAUM</Name>
        <LblBoQ>Musterprojekt Werkraum</LblBoQ>
        <OutlCompl>AllTxt</OutlCompl>
        <BoQBkdn>
          <Type>BoQLevel</Type>
          <Length>2</Length>
          <Num>Yes</Num>
        </BoQBkdn>
        <BoQBkdn>
          <Type>BoQLevel</Type>
          <Length>2</Length>
          <Num>Yes</Num>
        </BoQBkdn>
        <BoQBkdn>
          <Type>Item</Type>
          <Length>4</Length>
          <Num>Yes</Num>
        </BoQBkdn>
      </BoQInfo>
      <BoQBody>
        <BoQCtgy ID="ntitle01" RNoPart="01">
          <LblTx>
            <span>Ausbau</span>
          </LblTx>
          <BoQBody>
            <BoQCtgy ID="ntitle0101" RNoPart="01">
              <LblTx>
                <span>Oberflächen</span>
              </LblTx>
              <BoQBody>
                <Itemlist>
                  <Item ID="nitem0010" RNoPart="0010">
                    <Qty>24.000</Qty>
                    <QU>m2</QU>
                    <Description ID="e5c3c8c11ec758b791cd120b1468e7b3">
                      <CompleteText>
                        <DetailTxt>
                          <Text>
                            <p>
                              <span>Lose Beschichtungen entfernen und den Untergrund trocken reinigen.</span>
                              <br/>
                              <span>Anschlüsse an Fenster und Türen sorgfältig abkleben. Staub und Restmaterial fachgerecht aufnehmen.</span>
                            </p>
                          </Text>
                        </DetailTxt>
                      </CompleteText>
                    </Description>
                  </Item>
                  <Item ID="nitem0020" RNoPart="0020">
                    <Qty>24.000</Qty>
                    <QU>m2</QU>
                    <Description ID="b641721ff4f15759b6480d1cfbb64b67">
                      <CompleteText>
                        <DetailTxt>
                          <Text>
                            <p>
                              <span>Zweifacher Anstrich mit weißer Innenwandfarbe auf vorbereitetem Untergrund.</span>
                              <br/>
                              <span>Die Fläche muss nach dem Trocknen gleichmäßig deckend sein. Abklebungen entfernen und die Arbeitsstelle sauber übergeben.</span>
                            </p>
                          </Text>
                        </DetailTxt>
                      </CompleteText>
                    </Description>
                  </Item>
                  <Item ID="nitem0030" RNoPart="0030">
                    <Qty>18.500</Qty>
                    <QU>m</QU>
                    <Description ID="16163a6edcac5d7d9ecb903d99f34c02">
                      <CompleteText>
                        <DetailTxt>
                          <Text>
                            <p>
                              <span>Sockelleisten aus Holz liefern, ablängen und befestigen. Gehrungen an Ecken herstellen.</span>
                              <br/>
                              <span>Sichtbare Oberflächen dürfen keine offenen Befestigungslöcher aufweisen.</span>
                            </p>
                          </Text>
                        </DetailTxt>
                      </CompleteText>
                    </Description>
                  </Item>
                  <Item ID="nitem0040" RNoPart="0040">
                    <Qty>1.000</Qty>
                    <QU>St</QU>
                    <Description ID="f7eaaa6cc8715f89a0226d02ef343515">
                      <CompleteText>
                        <DetailTxt>
                          <Text>
                            <p>
                              <span>Alle bearbeiteten Flächen gemeinsam begehen. Kleine Fehlstellen unmittelbar nacharbeiten.</span>
                              <br/>
                              <span>Ein kurzes Protokoll mit Datum und ausgeführten Nacharbeiten übergeben.</span>
                            </p>
                          </Text>
                        </DetailTxt>
                      </CompleteText>
                    </Description>
                  </Item>
                </Itemlist>
              </BoQBody>
            </BoQCtgy>
          </BoQBody>
        </BoQCtgy>
      </BoQBody>
    </BoQ>
  </Award>
</GAEB>
<?xml version='1.0' encoding='UTF-8'?>
<GAEB xmlns="http://www.gaeb.de/GAEB_DA_XML/DA84/3.3">
  <GAEBInfo>
    <Version>3.3</Version>
    <VersDate>2021-05</VersDate>
    <Date>2026-09-08</Date>
    <ProgSystem>Bettag Systems</ProgSystem>
    <ProgName>LV-Konvertierung</ProgName>
  </GAEBInfo>
  <PrjInfo>
    <NamePrj>Musterprojekt Werkraum</NamePrj>
  </PrjInfo>
  <Award>
    <DP>84</DP>
    <CTR>
      <Address>
        <Name1>Fiktiver Musterbetrieb</Name1>
        <Street>Beispielstraße 1</Street>
        <PCode>00000</PCode>
        <City>Musterort</City>
      </Address>
    </CTR>
    <BoQ ID="b91faa4998e3dba7aeeaae66d">
      <BoQInfo>
        <Name>DEMO-WERKRAUM</Name>
        <BoQBkdn>
          <Type>BoQLevel</Type>
          <Length>2</Length>
          <Num>Yes</Num>
        </BoQBkdn>
        <BoQBkdn>
          <Type>BoQLevel</Type>
          <Length>2</Length>
          <Num>Yes</Num>
        </BoQBkdn>
        <BoQBkdn>
          <Type>Item</Type>
          <Length>4</Length>
          <Num>Yes</Num>
        </BoQBkdn>
        <Totals>
          <Total>810.20</Total>
        </Totals>
      </BoQInfo>
      <BoQBody>
        <BoQCtgy ID="ntitle01" RNoPart="01">
          <BoQBody>
            <BoQCtgy ID="ntitle0101" RNoPart="01">
              <BoQBody>
                <Itemlist>
                  <Item ID="nitem0010" RNoPart="0010">
                    <UP>8.500</UP>
                    <IT>204.00</IT>
                  </Item>
                  <Item ID="nitem0020" RNoPart="0020">
                    <UP>14.750</UP>
                    <IT>354.00</IT>
                  </Item>
                  <Item ID="nitem0030" RNoPart="0030">
                    <UP>11.200</UP>
                    <IT>207.20</IT>
                  </Item>
                  <Item ID="nitem0040" RNoPart="0040">
                    <UP>45.000</UP>
                    <IT>45.00</IT>
                  </Item>
                </Itemlist>
              </BoQBody>
              <Totals>
                <Total>810.20</Total>
              </Totals>
            </BoQCtgy>
          </BoQBody>
          <Totals>
            <Total>810.20</Total>
          </Totals>
        </BoQCtgy>
      </BoQBody>
    </BoQ>
  </Award>
</GAEB>

Manuell übertragene Referenz eines fiktiven deutschen LVs. Auch die Bieterangaben sind fiktiv. Das Beispiel prüft den Export, nicht die Erkennungsqualität eines Modells.

Problem und eigene Rolle

Lesbares PDF, fehlende Struktur

Ein LV enthält Titel, Ordnungszahlen, Langtexte und Mengen. Eine Position kann auf der nächsten Seite weitergehen; Bedarfs- und Alternativpositionen haben eigene Regeln. Wer nur Tabellenzellen kopiert, kann formal gültige Daten mit unvollständigem Leistungsumfang erzeugen.

Entwicklung durch Franz Bettag

Eigene Entwicklung von Dokumentaufbereitung, Modellanbindung, strukturiertem LV-Datenmodell, Prüfoberfläche, fortsetzbarer Verarbeitung und GAEB-Export. Die hier veröffentlichten Unterlagen sind eigenständig erstellte, fiktive Beispiele.

Der tatsächliche Dokumenten- und KI-Workflow

PDF und Textbelege vorbereiten

PDF-Seiten werden in Abschnitte aufgeteilt. Vorhandene Textzeilen erhalten Kennungen und Quellkoordinaten. Im hybriden Verfahren sieht Qwen3-VL-8B-Instruct den Bildausschnitt und diese Textzeilen. Das Modell ordnet Zeilen zu; belegte Langtexte können anschließend aus dem Originaltext übernommen werden.

Fragmente zum LV zusammensetzen

Pydantic prüft die Modellantwort. Titel, Positionen, Hinweise und Fortsetzungen werden in Lesereihenfolge zusammengefügt. Seitenübergreifende Fortsetzungen verlängern nur eine eindeutig zugehörige vorherige Position. Widersprüchliche Mengen oder unklare Zuordnungen bleiben als Prüfhinweise erhalten.

Verfahren vergleichbar machen

Der Code enthält eine native Text-Baseline, das hybride Verfahren, eine reine Qwen-Vision-Variante und eine optionale LightOnOCR-2-1B-Vorstufe mit anschließender Strukturierung. Modellrevision, Prompt, Code und Parameter werden im Verarbeitungsstand festgehalten. Eine überlegene Variante wird erst anhand separater Testdokumente bestimmt.

Prüfen, bestätigen, exportieren

Eine Prüfoberfläche zeigt Mengen, Einheiten, Preise und vollständige Langtexte mit Quellen. Änderungen werden protokolliert und machen frühere Exportdateien ungültig. Erst vollständig verarbeitete und ausdrücklich bestätigte Daten ohne offene Hinweise dürfen als GAEB ausgegeben werden.

X83 und X84 getrennt behandeln

Der Exporter erzeugt GAEB DA XML 3.3 nach dem LV-Paket 2021-05 und prüft die Dateien gegen dessen XSD-Schemata. X83 enthält die Leistungsbeschreibung; X84 enthält das Angebot. Eine vorhandene ursprüngliche X83 kann zum Abgleich von LV-Identität, Positionen, Mengen, Einheiten und Texten dienen.

Was sich bereits belegen lässt

4 Positionen, 2 zusammengehörige Dateien

Das manuell übertragene Referenz-LV erzeugt X83 und X84 mit vier Positionen und denselben Positionskennungen. Die X83 erhält alle vier Langtexte. Die X84 enthält die Angebotspreise und die berechnete Summe von 810,20 EUR ohne Umsatzsteuer. Beide Dateien bestehen die Schemavalidierung.

Exportgrenzen geprüft

Beim lokalen Prüflauf wurden fehlende Prüfbestätigung, unvollständige Verarbeitung und offene Zuordnungsfehler jeweils vom Exporter abgelehnt. Das belegt diese Exportregeln. Es misst weder die KI-Erkennungsquote noch die Importfähigkeit in jeder AVA-Software.

Status und nächste Messung

Der geprüfte Repository-Stand ist ein privater Entwicklungsstand vor der Freigabeprüfung mit realen Dokumenten. Noch veröffentlicht sind keine belastbaren Kundenkennzahlen zur Erkennungsqualität oder Zeitersparnis. Die nächste Auswertung muss vollständige Positionen, Langtexte, Mengen, Sonderfälle, Korrekturaufwand und den Import ins Zielsystem prüfen.

Belege und nächste Schritte

Original und Export nachprüfen

Das Referenzpaket enthält das fiktive Original, den manuell geprüften JSON-Datensatz, X83, X84 und den Exportbericht mit Prüfsummen. Die Bieterangaben sind zusätzliche fiktive Beispielwerte. Das Paket ist ein reproduzierbarer Exportnachweis, kein Ergebnis einer Modellmessung.