150 lines
4.4 KiB
Markdown
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
|
|
|