gateway/IMAGE_ANALYSE_ANALYSIS.md
2025-10-26 23:09:26 +01:00

150 lines
4.4 KiB
Markdown

# 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