pse2_ff/project/backend/validate-service
Jaronim Pracht 5f69a52764 Implement entity validation logic in validate service 2025-06-14 18:15:35 +02:00
..
.dockerignore Add dockerignore files to backend services 2025-06-07 12:35:17 +02:00
.env.template Add validate service with entity merging and validation 2025-05-30 13:44:13 +02:00
README.md Add validate service with entity merging and validation 2025-05-30 13:44:13 +02:00
app.py Add: OCR sends pdf async to coordinantor 2025-06-07 12:40:32 +02:00
merge_logic.py Add validate service with entity merging and validation 2025-05-30 13:44:13 +02:00
requirements.txt Add validate service with entity merging and validation 2025-05-30 13:44:13 +02:00
validate_logic.py Implement entity validation logic in validate service 2025-06-14 18:15:35 +02:00

README.md

Validate Service

Ein Flask-basierter Microservice zur asynchronen Verarbeitung und Validierung von Entitäten aus zwei verschiedenen NLP-Services (SpaCy und Exxeta).

Funktionsweise

Das Service empfängt für jede eindeutige ID zwei POST-Requests von verschiedenen Services:

  1. SpaCy Service - sendet extrahierte Entitäten
  2. Exxeta Service - sendet extrahierte Entitäten

Beim ersten Request werden die Daten zwischengespeichert. Beim zweiten Request startet die asynchrone Verarbeitung. Nach der Verarbeitung werden die Ergebnisse an einen nachgelagerten Service weitergeleitet.

API Endpoints

POST /validate

Empfängt Entitätsdaten von SpaCy oder Exxeta Services.

Request Body:

{
  "id": "pitch_book_id",
  "service": "spacy|exxeta",
  "entities": [
    {
      "label": "PERSON",
      "entity": "Max Mustermann",
      "page": 1
    }
  ]
}

Response:

  • 200: Daten erfolgreich verarbeitet
  • 400: Fehlende oder ungültige Parameter
  • 500: Serverfehler

Installation und Start

  1. Abhängigkeiten installieren:
pip install -r requirements.txt
  1. Service starten:
python app.py

Das Service läuft standardmäßig auf http://localhost:5050

Konfiguration

Umgebungsvariablen in config.py:

  • COORDINATOR_URL: URL des Koordinators

Verarbeitungslogik

  1. Zwischenspeicherung: Beim ersten Request wird das JSON in einem Thread-sicheren Dictionary gespeichert
  2. Trigger: Beim zweiten Request wird die asynchrone Verarbeitung gestartet
  3. Merge & Validate: Die merge_and_validate_entities Funktion führt die Validierung durch:
    • Normalisiert Entitäten (entfernt Zeilenumbrüche, konvertiert zu lowercase)
    • Matched Entitäten basierend auf Label, normalisiertem Text und Seitenzahl
    • Kennzeichnet Entitäten als "validated" (beide Services) oder "single-source"
  4. Weiterleitung: Ergebnisse werden an den nächsten Service gesendet
  5. Cleanup: Verarbeitete Daten werden aus dem Speicher entfernt

Architektur

┌─────────────────┐    ┌─────────────────┐
│   SpaCy Service │    │  Exxeta Service │
└─────────┬───────┘    └─────────┬───────┘
          │                      │
          │ POST /validate       │ POST /validate
          │ (service_type:spacy) │ (service_type:exxeta)
          ▼                      ▼
    ┌─────────────────────────────────────┐
    │         Validate Service            │
    │  ┌─────────────────────────────┐    │
    │  │     Zwischenspeicher        │    │
    │  │   (Thread-safe Dictionary)  │    │
    │  └─────────────────────────────┘    │
    │  ┌─────────────────────────────┐    │
    │  │   Asynchrone Verarbeitung   │    │
    │  │  (merge_and_validate_entities)│  │
    │  └─────────────────────────────┘    │
    └─────────────┬───────────────────────┘
                  │
                  │ POST (processed data)
                  ▼
    ┌─────────────────────────────┐
    │     Nachgelagerter Service  │
    └─────────────────────────────┘