Web Analytics Made Easy - Statcounter
Skip to content

Architekturdiagramme

Visuelle Diagramme zur Duckling-Architektur.

Systemarchitektur – Überblick

flowchart LR
    subgraph FE["Frontend"]
        direction TB
        UI[React-UI] --> Hooks[Hooks]
        Hooks --> Axios[API-Client]
    end

    Axios <-->|REST| API

    subgraph BE["Backend"]
        direction TB
        API[Flask-API] --> SVC[Dienste]
        SVC --> Queue[Auftragswarteschlange]
        Queue --> Doc[Docling]
    end

    Doc --> DB[(SQLite)]
    Doc --> FS[(Dateien)]

Einfache Architektur

graph LR
    A[Webbrowser] --> B[React-Frontend]
    B --> C[Flask-Backend]
    C --> D[Docling-Engine]
    D --> E[(Speicher)]

    style A fill:#3b82f6,color:#fff
    style B fill:#1e3a5f,color:#fff
    style C fill:#14b8a6,color:#fff
    style D fill:#8b5cf6,color:#fff
    style E fill:#f59e0b,color:#fff

Detaillierte Schichtenansicht

graph TB
    subgraph Client
        Browser[Webbrowser]
    end

    subgraph Frontend
        React[React-App]
        Components[Komponenten: Ablegezone, Fortschritt, Export, Einstellungen, Verlauf]
        Hooks[Hooks: useConversion, useSettings]
        APIClient[Axios-Client]
    end

    subgraph Backend
        Flask[Flask-Server]
        Routes[Routen: convert, settings, history, export, docs]
        Services[Dienste: Converter, FileManager, History]
        JobQueue[Auftragswarteschlange – max. 2 Worker]
    end

    subgraph Engine
        Docling[Docling DocumentConverter]
        OCR[OCR: EasyOCR, Tesseract, OcrMac]
        Extract[Extraktion: Tabellen, Bilder, Chunks]
    end

    subgraph Storage
        SQLite[(SQLite-DB)]
        FileSystem[(Dateisystem)]
    end

    Browser --> React
    React --> Components
    Components --> Hooks
    Hooks --> APIClient
    APIClient -->|HTTP| Flask
    Flask --> Routes
    Routes --> Services
    Services --> JobQueue
    JobQueue --> Docling
    Docling --> OCR
    Docling --> Extract
    Services --> SQLite
    Docling --> FileSystem

Konvertierungsablauf

sequenceDiagram
    participant U as Benutzer
    participant F as Frontend
    participant B as Backend
    participant D as Docling

    U->>F: Datei hochladen
    F->>B: POST /convert
    B->>B: Speichern & Job einreihen
    B-->>F: 202 job_id

    loop Abfragen
        F->>B: GET /status
        B-->>F: Fortschritt %
    end

    B->>D: Konvertieren
    D-->>B: Ergebnisse
    B-->>F: Abgeschlossen
    F->>B: GET /result
    B-->>F: Inhalt
    U->>F: Herunterladen

Batch-Verarbeitung

sequenceDiagram
    participant U as Benutzer
    participant F as Frontend
    participant Q as Warteschlange
    participant W as Worker

    U->>F: 5 Dateien hochladen
    F->>Q: 5 Jobs einreihen

    par 2 parallel verarbeiten
        Q->>W: Job 1
        Q->>W: Job 2
    end

    W-->>Q: Job 1 fertig
    Q->>W: Job 3
    W-->>Q: Job 2 fertig
    Q->>W: Job 4

    Note over Q,W: Max. 2 parallel

    F->>F: Fortschritt pro Datei anzeigen

Skalierungsarchitektur

Für produktive Bereitstellungen mit hohem Traffic:

graph LR
    LB[Lastverteiler]

    LB --> B1[Backend 1]
    LB --> B2[Backend 2]
    LB --> B3[Backend 3]

    B1 --> Redis[(Redis Queue)]
    B2 --> Redis
    B3 --> Redis

    B1 --> PG[(PostgreSQL)]
    B2 --> PG
    B3 --> PG

    B1 --> S3[(S3 Storage)]
    B2 --> S3
    B3 --> S3

    style LB fill:#f59e0b,color:#fff
    style Redis fill:#dc2626,color:#fff
    style PG fill:#3b82f6,color:#fff
    style S3 fill:#22c55e,color:#fff

Komponentenbaum

graph TD
    App[App.tsx]

    App --> Header[Kopfzeile]
    App --> Main[Hauptbereich]
    App --> Panels[Seitenbereiche]

    Main --> DropZone[Ablegezone]
    Main --> Progress[Fortschritt]
    Main --> Export[Export]

    Panels --> Settings[Einstellungen]
    Panels --> History[Verlauf]
    Panels --> Docs[Dokumentation]

    style App fill:#3b82f6,color:#fff
    style Main fill:#14b8a6,color:#fff
    style Panels fill:#8b5cf6,color:#fff

OCR-Optionen

graph LR
    Input[Dokument] --> OCR{OCR-Backend}

    OCR --> Easy[EasyOCR]
    OCR --> Tess[Tesseract]
    OCR --> Mac[OcrMac]
    OCR --> Rapid[RapidOCR]

    Easy --> Out[Textausgabe]
    Tess --> Out
    Mac --> Out
    Rapid --> Out

    style Easy fill:#22c55e,color:#fff
    style Tess fill:#3b82f6,color:#fff
    style Mac fill:#8b5cf6,color:#fff
    style Rapid fill:#f59e0b,color:#fff

Statische Diagrammbilder

Wenn Mermaid nicht gerendert werden kann, stehen statische Bilder bereit: