# Image Analysis Code Flow Analysis ## Zusammenfassung der Parameter und Handovers ### 1. Ablauf für Image-Analyse (durch Dokumentenverarbeitung) #### Eingabe - **methodAi.process()** wird aufgerufen mit: - `aiPrompt`: Textanweisung für die Bildanalyse - `documentList`: Liste von Dokumenten (einschließlich Bilder) - `resultType`: Output-Format (optional, default: txt) #### Verarbeitung 1. **mainServiceAi.py** → `callAiDocuments()` - Delegiert an `subCoreAi.callAiDocuments()` 2. **subCoreAi.py** → `callAiDocuments()` - Prüft, ob Dokumente vorhanden sind - Wenn ja: ruft `documentProcessor.callAiText()` auf 3. **subDocumentProcessing.py** → `callAiText()` - Ruft `processDocumentsPerChunk()` auf 4. **subDocumentProcessing.py** → `_processChunksWithMapping()` - Analysiert jeden Chunk - **Wichtig**: Zeile 645-689 - Erkennung von Bildern - Prüft `is_image` Flag basierend auf: - `document_mime_type` (z.B. "image/jpeg") - `part.mimeType` - `part.typeGroup == "image"` 5. **subCoreAi.py** → `readImage()` (wird aufgerufen für Bildchunks) - Zeile 561-625 - Setzt `operationType = IMAGE_ANALYSE` - Ruft `aiObjects.callImage()` auf mit: - `prompt`: Der Analyse-Prompt - `imageData`: Die Bilddaten (bytes oder base64) - `mimeType`: Z.B. "image/jpeg" - `options`: Mit `operationType=IMAGE_ANALYSE` #### Ausgabe - Textanalyse des Bildes ### 2. Ablauf für direkte Image-Analyse #### Eingabe - **mainServiceAi.readImage()** wird direkt aufgerufen mit: - `prompt`: Textanweisung - `imageData`: Bilddaten (bytes oder base64) - `mimeType`: Z.B. "image/jpeg" - `options`: Optional, wird auf `IMAGE_ANALYSE` gesetzt #### Verarbeitung 1. **mainServiceAi.py** → `readImage()` - Delegiert an `subCoreAi.readImage()` 2. **subCoreAi.py** → `readImage()` - Setzt `operationType = IMAGE_ANALYSE` (Zeile 582) - Ruft `aiObjects.callImage()` auf #### Ausgabe - Textanalyse des Bildes ## Wo werden welche Funktionen genutzt? ### mainServiceAi.py #### `readImage()` (Zeile 96-105) - **Verwendung**: Wird direkt von außen aufgerufen (z.B. API) - **Delegiert an**: `subCoreAi.readImage()` - **Verwendung**: ✅ Wird verwendet #### `generateImage()` (Zeile 108-118) - **Verwendung**: Wird direkt von außen aufgerufen (z.B. API) - **Delegiert an**: `subCoreAi.generateImage()` - **Verwendung**: ✅ Wird verwendet ### subCoreAi.py #### `readImage()` (Zeile 561-625) - **Verwendung**: 1. Wird von `mainServiceAi.readImage()` aufgerufen 2. Wird von `subDocumentProcessing._processChunksWithMapping()` aufgerufen (Zeile 670) - **Verwendung**: ✅ Wird verwendet #### `generateImage()` (Zeile 628-660) - **Verwendung**: Wird von `mainServiceAi.generateImage()` aufgerufen - **Verwendung**: ✅ Wird verwendet ### subDocumentProcessing.py #### `_processChunksWithMapping()` (Zeile 594-994) - **Bildanalyse**: Zeile 645-689 - Erkennt Bilder basierend auf MIME-Type und typeGroup - Ruft `core_ai.readImage()` auf - **Verwendung**: ✅ Wird verwendet ## Parameter-Validierung ### ✅ Alle Parameter korrekt 1. **operationType**: - Wird immer auf `IMAGE_ANALYSE` gesetzt (subCoreAi Zeile 582) - Wird korrekt übergeben 2. **imageData**: - Wird korrekt geladen und übergeben - Unterstützt bytes und base64 3. **mimeType**: - Wird automatisch erkannt - Standard: "image/jpeg" 4. **prompt**: - Wird korrekt übergeben - Kann von Benutzer angepasst werden ## Handovers sind korrekt ### mainServiceAi → subCoreAi - ✅ `readImage()` delegiert korrekt - ✅ `generateImage()` delegiert korrekt ### subDocumentProcessing → subCoreAi - ✅ Erkennt Bilder korrekt (Zeile 645-689) - ✅ Ruft `readImage()` mit korrekten Parametern auf - ✅ Setzt `operationType=IMAGE_ANALYSE` ### subCoreAi → aiObjects - ✅ Ruft `callImage()` mit korrekten Parametern auf - ✅ Setzt `operationType=IMAGE_ANALYSE` ## Identifizierte Probleme ### ⚠️ Keine Probleme identifiziert Die Parameter und Handovers sind alle korrekt: - ✅ Operation Type wird korrekt gesetzt - ✅ Bilddaten werden korrekt geladen und übergeben - ✅ MIME-Type wird korrekt erkannt - ✅ Prompt wird korrekt übergeben - ✅ Alle Delegierungen funktionieren korrekt ## Test-Strategie Der Test verwendet: 1. Direkte Bildanalyse über `mainServiceAi.readImage()` 2. Testet alle Modelle die `IMAGE_ANALYSE` unterstützen 3. Validiert die Antworten auf Inhalt und Struktur