Web Analytics Made Easy - Statcounter
Skip to content

Diagramas de arquitectura

Diagramas visuales de la arquitectura de Duckling.

Visión general de la arquitectura del sistema

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

    Axios <-->|REST| API

    subgraph BE["Backend"]
        direction TB
        API[API Flask] --> SVC[Servicios]
        SVC --> Queue[Cola de trabajos]
        Queue --> Doc[Docling]
    end

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

Arquitectura simple

graph LR
    A[Navegador] --> B[Frontend React]
    B --> C[Backend Flask]
    C --> D[Motor Docling]
    D --> E[(Almacenamiento)]

    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

Vista detallada por capas

graph TB
    subgraph Client
        Browser[Navegador web]
    end

    subgraph Frontend
        React[Aplicación React]
        Components[Componentes: zona de soltar, progreso, exportar, ajustes, historial]
        Hooks[Hooks: useConversion, useSettings]
        APIClient[Cliente Axios]
    end

    subgraph Backend
        Flask[Servidor Flask]
        Routes[Rutas: convert, settings, history, export, docs]
        Services[Servicios: Converter, FileManager, History]
        JobQueue[Cola de trabajos – máx. 2 workers]
    end

    subgraph Engine
        Docling[Docling DocumentConverter]
        OCR[OCR: EasyOCR, Tesseract, OcrMac]
        Extract[Extracción: tablas, imágenes, fragmentos]
    end

    subgraph Storage
        SQLite[(BD SQLite)]
        FileSystem[(Sistema de archivos)]
    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

Flujo de conversión

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

    U->>F: Subir archivo
    F->>B: POST /convert
    B->>B: Guardar y encolar trabajo
    B-->>F: 202 job_id

    loop Sondeo
        F->>B: GET /status
        B-->>F: progreso %
    end

    B->>D: Convertir
    D-->>B: Resultados
    B-->>F: Completado
    F->>B: GET /result
    B-->>F: Contenido
    U->>F: Descargar

Procesamiento por lotes

sequenceDiagram
    participant U as Usuario
    participant F as Frontend
    participant Q as Cola
    participant W as Workers

    U->>F: Subir 5 archivos
    F->>Q: Encolar 5 trabajos

    par Procesar 2 a la vez
        Q->>W: Job 1
        Q->>W: Job 2
    end

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

    Note over Q,W: Máx. 2 concurrentes

    F->>F: Mostrar progreso por archivo

Arquitectura de escalado

Para despliegues en producción con mucho tráfico:

graph LR
    LB[Balanceador de carga]

    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

Árbol de componentes

graph TD
    App[App.tsx]

    App --> Header[Cabecera]
    App --> Main[Área principal]
    App --> Panels[Paneles]

    Main --> DropZone[Zona de soltar]
    Main --> Progress[Progreso]
    Main --> Export[Exportar]

    Panels --> Settings[Ajustes]
    Panels --> History[Historial]
    Panels --> Docs[Documentación]

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

Opciones OCR

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

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

    Easy --> Out[Salida de texto]
    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

Imágenes estáticas de diagramas

Si el entorno no admite el renderizado de Mermaid, hay imágenes estáticas: