Skip to content
Guides6 min read

Rechtsdokumente annotieren: bewährte Vorgehensweisen

Rechtsdokumente in Potato annotieren, also Verträge, Gerichtsakten und Regulierungstexte, mit Span-Labeling, Entitätsextraktion und selbst gehostetem Betrieb mit Datenschutz an erster Stelle.

Potato Team

Juristische Texte sind ein Annotationsproblem für sich. Die Struktur ist dicht, das Vokabular ist Fachsprache, und ein falsches Label kann echte rechtliche Folgen haben. Dieser Leitfaden zeigt, wie man solche Texte gut annotiert.

Was die Annotation von Rechtstexten schwer macht

Allein der Fachjargon führt dazu, dass du geschulte Annotierende brauchst und keine beliebig ausgewählten Crowd-Arbeitenden. Die Dokumente sind lang, Verträge reichen mitunter über hunderte Seiten, und die Abschnitte verweisen ständig aufeinander. Präzision zählt mehr als sonst, denn ein unsauber gesetzter Span kann die Bedeutung einer Klausel verschieben. Und ein großer Teil dieser Bedeutung hängt an Dokumenttyp und Rechtsordnung, Kontext ist hier also nie optional.

Zur Mechanik hinter Span- und Textannotation siehe die Quelldokumentation.

Dokumente segmentieren

Lange Dokumente aufteilen

yaml
annotation_task_name: "Legal Document Annotation"
 
display:
  # Segment by section
  segmentation:
    enabled: true
    method: section_headers
    pattern: '^\d+\.\s+[A-Z]'
 
  # Show document context
  context:
    show_previous_section: true
    show_section_hierarchy: true
 
  # Navigation
  navigation:
    show_outline: true
    jump_to_section: true

Annotation auf Abschnittsebene

yaml
data_files:
  - contracts.json
 
item_properties:
  id_key: id
  text_key: text
 
preprocessing:
  segment_by: sections
  preserve_metadata: true
  include_section_number: true
 
# Each section becomes an annotation item
# {
#   "id": "contract_001_section_3.2",
#   "text": "The Licensor grants...",
#   "section_number": "3.2",
#   "section_title": "License Grant",
#   "document_id": "contract_001"
# }

Juristische Entitäten erkennen

Vertragsspezifische Entitäten

yaml
annotation_schemes:
  - annotation_type: span
    name: legal_entities
    labels:
      - name: PARTY
        color: "#FECACA"
        description: "Contracting parties (Licensor, Licensee, Company, etc.)"
 
      - name: DEFINED_TERM
        color: "#FDE68A"
        description: "Defined terms (usually capitalized)"
 
      - name: DATE
        color: "#BBF7D0"
        description: "Dates and time periods"
 
      - name: MONETARY
        color: "#C4B5FD"
        description: "Dollar amounts, fees, penalties"
 
      - name: OBLIGATION
        color: "#BFDBFE"
        description: "Must, shall, will obligations"
 
      - name: CONDITION
        color: "#FED7AA"
        description: "If, unless, provided that conditions"
 
      - name: REFERENCE
        color: "#E0E7FF"
        description: "References to other sections or documents"

Pflichten erkennen

yaml
annotation_schemes:
  - annotation_type: multiselect
    name: obligation_type
    description: "What type of obligation is this?"
    labels:
      - name: performance
        label: "Performance Obligation"
        description: "Party must do something"
 
      - name: payment
        label: "Payment Obligation"
        description: "Party must pay"
 
      - name: restriction
        label: "Restriction/Prohibition"
        description: "Party must not do something"
 
      - name: condition
        label: "Conditional Obligation"
        description: "Obligation triggered by condition"
 
      - name: warranty
        label: "Warranty/Representation"
        description: "Statement of fact or promise"

Klauseln klassifizieren

Arten von Vertragsklauseln

yaml
annotation_schemes:
  - annotation_type: radio
    name: clause_type
    description: "What type of clause is this?"
    labels:
      - name: definitions
        label: "Definitions"
      - name: grant
        label: "Grant of Rights/License"
      - name: consideration
        label: "Consideration/Payment"
      - name: term
        label: "Term and Termination"
      - name: representations
        label: "Representations & Warranties"
      - name: indemnification
        label: "Indemnification"
      - name: limitation
        label: "Limitation of Liability"
      - name: confidentiality
        label: "Confidentiality"
      - name: ip
        label: "Intellectual Property"
      - name: dispute
        label: "Dispute Resolution"
      - name: boilerplate
        label: "Boilerplate/Miscellaneous"

Risiken einschätzen

yaml
annotation_schemes:
  - annotation_type: likert
    name: risk_level
    description: "Rate the risk level of this clause for [Party]"
    min_label: "Low Risk"
    max_label: "High Risk"
    size: 5
 
  - annotation_type: text
    name: risk_notes
    description: "Explain the risk factors"
    rows: 4

Gerichtsdokumente annotieren

Angaben zum Verfahren extrahieren

yaml
annotation_schemes:
  - annotation_type: span
    name: case_entities
    labels:
      - name: CASE_NUMBER
        description: "Case identifier"
 
      - name: COURT
        description: "Court name and jurisdiction"
 
      - name: JUDGE
        description: "Presiding judge"
 
      - name: PLAINTIFF
        description: "Plaintiff/Petitioner"
 
      - name: DEFENDANT
        description: "Defendant/Respondent"
 
      - name: ATTORNEY
        description: "Attorneys/Legal representatives"
 
      - name: LEGAL_CITATION
        description: "Citations to cases, statutes, regulations"
 
      - name: RULING
        description: "Court's ruling or order"

Aufbau der Argumentation

yaml
annotation_schemes:
  - annotation_type: span
    name: argument_structure
    labels:
      - name: CLAIM
        color: "#FECACA"
        description: "Main claim or assertion"
 
      - name: PREMISE
        color: "#BBF7D0"
        description: "Supporting premise"
 
      - name: EVIDENCE
        color: "#BFDBFE"
        description: "Evidence cited"
 
      - name: REBUTTAL
        color: "#FED7AA"
        description: "Counter-argument"
 
      - name: CONCLUSION
        color: "#E0E7FF"
        description: "Conclusion drawn"

Juristische Formulierungen hervorheben

yaml
display:
  keyword_highlighting:
    enabled: true
 
    categories:
      - name: obligation_words
        color: "#FEE2E2"
        keywords:
          - shall
          - must
          - will
          - agrees to
          - is required to
          - is obligated to
 
      - name: permission_words
        color: "#D1FAE5"
        keywords:
          - may
          - is permitted to
          - has the right to
          - is entitled to
 
      - name: prohibition_words
        color: "#FEF3C7"
        keywords:
          - shall not
          - must not
          - may not
          - is prohibited from
 
      - name: condition_words
        color: "#DBEAFE"
        keywords:
          - if
          - unless
          - provided that
          - subject to
          - contingent upon
          - in the event that

Qualitätskontrolle im juristischen Bereich

yaml
quality_control:
  # Require legal training
  qualification:
    required_training: legal_annotation_training
    training_accuracy: 0.85
 
  # Domain expertise check
  attention_checks:
    enabled: true
    items:
      - text: |
          "Notwithstanding any provision herein to the contrary,
          Licensee shall indemnify Licensor against all claims."
        expected:
          obligation_type: indemnification
          obligated_party: "Licensee"
        type: domain_knowledge
 
  # High agreement required
  redundancy:
    annotations_per_item: 3
    agreement_threshold: 0.8
    on_disagreement: expert_review
 
  # Expert review layer
  expert_review:
    enabled: true
    review_threshold: 0.7
    expert_users: [legal_expert_1, legal_expert_2]

Vollständige Konfiguration für juristische Annotation

yaml
annotation_task_name: "Contract Clause Analysis"
 
display:
  text_display: html
 
  # Section context
  context:
    show_document_metadata: true
    show_section_hierarchy: true
 
  # Legal term highlighting
  keyword_highlighting:
    enabled: true
    categories:
      - name: obligations
        color: "#FEE2E2"
        keywords: [shall, must, will, agrees]
      - name: conditions
        color: "#DBEAFE"
        keywords: [if, unless, provided that, subject to]
      - name: defined_terms
        pattern: '\b[A-Z][a-zA-Z]+(?:\s+[A-Z][a-zA-Z]+)*\b'
        color: "#FEF3C7"
 
annotation_schemes:
  # Clause type
  - annotation_type: radio
    name: clause_type
    description: "Classify this clause"
    labels:
      - name: license_grant
        label: "License Grant"
      - name: payment
        label: "Payment/Consideration"
      - name: term
        label: "Term/Termination"
      - name: indemnification
        label: "Indemnification"
      - name: limitation
        label: "Limitation of Liability"
      - name: confidentiality
        label: "Confidentiality"
      - name: other
        label: "Other"
 
  # Entity spans
  - annotation_type: span
    name: entities
    labels:
      - name: PARTY
        color: "#FECACA"
      - name: DEFINED_TERM
        color: "#FDE68A"
      - name: MONETARY
        color: "#C4B5FD"
      - name: DATE
        color: "#BBF7D0"
      - name: OBLIGATION
        color: "#BFDBFE"
 
  # Risk assessment
  - annotation_type: likert
    name: risk
    description: "Risk level for the receiving party?"
    size: 5
    min_label: "Low"
    max_label: "High"
 
  # Key issues
  - annotation_type: text
    name: issues
    description: "Note any unusual or problematic language"
    rows: 4
 
quality_control:
  redundancy:
 
  qualification:

Richtlinien für die Annotierenden schreiben

Gute Richtlinien für eine juristische Aufgabe legen den Rahmen fest, also welche Dokumente und welche Rechtsordnungen, und enthalten ein Glossar, damit alle die Fachbegriffe so lesen wie du. Sag klar, was bei mehrdeutigen Formulierungen gilt und wann ein Querverweis annotiert wird und wann nicht. Und halte fest, wann eine Span-Grenze richtig gesetzt ist, denn ungefähr richtig reicht in diesem Bereich selten.

Bewährte Vorgehensweisen

Setz Annotierende ein, die das Fachgebiet wirklich kennen, denn ohne dieses Wissen funktioniert juristisches Labeln nicht. Teil lange Dokumente in Abschnitte auf, die man im Kopf behalten kann. Heb die juristischen Formulierungen hervor, auf die es ankommt, damit sie nicht überlesen werden. Halte die Redundanz hoch, weil ein Fehler hier teuer ist. Bau eine Prüfebene ein, auf der Jurist:innen die Grenzfälle entscheiden. Definier jedes Label genau. Und gib den Annotierenden die umgebende Struktur und die zugehörigen Abschnitte mit, denn eine Klausel für sich allein kann in die Irre führen.


Vollständige Dokumentation unter Annotationsschemata.