VisionAI: Bilderkennung ohne Cloud — Objektdetektion, OCR & Analyse lokal

Sehen, Erkennen, Verstehen — Computer Vision komplett offline

Computer Vision OCR Objektdetektion

👁️ Bilderkennung, die keine Daten nach außen sendet.

📞 02406 803 7603 ✉️ info@computerkumpel.de

💰 Warum lokale Bilderkennung ein Business-Case ist

Google Vision, AWS Rekognition und Azure Computer Vision sind leistungsfähig — aber sie senden Ihre Bilder an US-Cloud-Server. Für Kliniken, Anwaltskanzleien, Produktionsbetriebe und den öffentlichen Sektor ist das datenschutzrechtlich ausgeschlossen. VisionAI beweist: Objektdetektion, OCR und Szenenanalyse funktionieren komplett lokal — mit State-of-the-Art-Qualität.

🔍
Objektdetektion
Erkennt und klassifiziert Objekte in Bildern und Videos — lokal, ohne Cloud-API. Ideal für Qualitätskontrolle.
📝
OCR (Texterkennung)
Extrahiert Text aus Bildern und Dokumenten — Rechnungen, Ausweise, Formulare automatisch digitalisieren.
🎨
Szenenanalyse
Automatische Beschreibung von Bildinhalten — „Was ist auf diesem Bild zu sehen?" präzise beantwortet.
🔒
DSGVO-Safe
Kein Bild verlässt den Rechner. Keine Verarbeitung in Drittstaaten. Vollständige Compliance.

⚙️ So funktioniert's

Von der Bildeingabe zur Analyse — vollständig offline.

📸
1. Bild aufnehmen
Kamera-Bild, Screenshot oder Datei-Upload. VisionAI akzeptiert alle gängigen Bildformate.
🧠
2. KI-Modell analysieren
Lokale Vision-Modelle erkennen Objekte, lesen Text und beschreiben Szenen — ohne Latenz.
📊
3. Ergebnis ausgeben
Bounding Boxes, Text-Extrakte, Szenenbeschreibungen — strukturiert und maschinenlesbar.
🔄
4. Automatisieren
Batch-Verarbeitung und API-Schnittstelle für Integration in bestehende Workflows.

💻 Code-Einblicke

Ein Blick unter die Haube — so liest VisionAI digitale Displays aus Bildern:

🏗️ Architektur

main.py
Haupt-Loop: Kamera einlesen, ROIs verarbeiten, MQTT-Publishing, Visualisierung.
image_utils.py
Bildvorverarbeitung: 4-Point Transform, CLAHE, Adaptive Threshold, Canny Edges.
gui_config.py
GUI-Konfigurator zum Einzeichnen von ROIs und Speichern als config.json.
read_docs.py
Dokumenten-OCR: Word-Dateien öffnen und Text extrahieren.

🎥 Haupt-Loop: Kamera + ROI-Verarbeitung

def main():
    rois, camera_index = [], 0

    if os.path.exists("config.json"):
        with open("config.json", 'r') as f:
            data = json.load(f)
        rois = data.get('rois', [])
        camera_index = data.get('camera_index', 0)

    cap = cv2.VideoCapture(camera_index)
    cap.set(cv2.CAP_PROP_FRAME_WIDTH, 3840)
    cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 2160)

    while True:
        ret, frame = cap.read()
        vis_frame = frame.copy()

        for roi in rois:
            roi_id = roi['id']
            x, y, w, h = roi['rect']

            roi_img = frame[y:y+h, x:x+w]
            gray = cv2.cvtColor(roi_img, cv2.COLOR_BGR2GRAY)

            # Display-Kontur finden + Perspective Transform
            contour = image_utils.find_display_contour(gray)
            if contour is not None:
                warped = image_utils.four_point_transform(
                    gray, contour.reshape(4, 2))
            else:
                warped = gray

            # OCR-Optimierung + Tesseract
            processed = image_utils.preprocess_image(warped)
            text = pytesseract.image_to_string(
                processed, config='--psm 7 outputbase digits')

            # MQTT-Publishing
            payload = {
                "timestamp": datetime.now().isoformat(),
                "id": roi_id,
                "value": text.strip()
            }
            client.publish(f"visionai/meter/{roi_id}",
                          json.dumps(payload))

🖼️ Bildverarbeitung: Perspective Transform & Preprocessing

def four_point_transform(image, pts):
    rect = order_points(pts)
    (tl, tr, br, bl) = rect

    # Neue Bilddimensionen berechnen
    widthA = np.sqrt(((br[0] - bl[0]) ** 2) + ((br[1] - bl[1]) ** 2))
    widthB = np.sqrt(((tr[0] - tl[0]) ** 2) + ((tr[1] - tl[1]) ** 2))
    maxWidth = max(int(widthA), int(widthB))

    heightA = np.sqrt(((tr[0] - br[0]) ** 2) + ((tr[1] - br[1]) ** 2))
    heightB = np.sqrt(((tl[0] - bl[0]) ** 2) + ((tl[1] - bl[1]) ** 2))
    maxHeight = max(int(heightA), int(heightB))

    dst = np.array([[0, 0], [maxWidth-1, 0],
                    [maxWidth-1, maxHeight-1], [0, maxHeight-1]],
                    dtype="float32")
    M = cv2.getPerspectiveTransform(rect, dst)
    return cv2.warpPerspective(image, M, (maxWidth, maxHeight))

def preprocess_image(image):
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    blurred = cv2.GaussianBlur(gray, (5, 5), 0)
    # CLAHE: Kontrastverstärkung
    clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))
    enhanced = clahe.apply(blurred)
    # Adaptive Threshold für optimale OCR
    thresh = cv2.adaptiveThreshold(enhanced, 255,
        cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
        cv2.THRESH_BINARY, 11, 2)
    return thresh

def find_display_contour(image):
    edged = cv2.Canny(image, 50, 200)
    cnts, _ = cv2.findContours(edged.copy(),
        cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
    cnts = sorted(cnts, key=cv2.contourArea, reverse=True)[:5]
    for c in cnts:
        peri = cv2.arcLength(c, True)
        approx = cv2.approxPolyDP(c, 0.02 * peri, True)
        if len(approx) == 4:
            return approx
    return None

📡 MQTT-Integration

import paho.mqtt.client as mqtt

MQTT_BROKER = "localhost"
MQTT_PORT = 1883
MQTT_TOPIC = "visionai/meter/reading"

client = mqtt.Client(client_id="VisionAI_Client")

def on_connect(client, userdata, flags, rc):
    if rc == 0:
        print("Connected to MQTT Broker!")
    else:
        print(f"Failed to connect, return code {rc}")

client.on_connect = on_connect
client.connect(MQTT_BROKER, MQTT_PORT, 60)
client.loop_start()

# Publishing pro ROI
client.publish(f"visionai/meter/{roi_id}", json_payload)

⚡ In 5–7 Tagen zur lokalen Bilderkennungslösung.

📞 02406 803 7603 ✉️ info@computerkumpel.de

🚀 Gebaut mit Vibecoding — in Tagen statt Wochen

👴 Klassische Entwicklung
  • 📋 2–3 Wochen Requirements Engineering
  • 🏗️ 2–3 Wochen Architektur & Design
  • 💻 3–4 Wochen Implementierung
  • 🧪 1–2 Wochen Testing
  • 🚢 1 Woche Deployment
  • ⏱️ Gesamt: 8–13 Wochen
🤖 Vibecoding-Ansatz
  • 🗣️ 0.5 Tage Prompt-Engineering
  • ⚡ 2–3 Tage iterative Generierung
  • 🔧 1–2 Tage Refinement & Debugging
  • ✅ 1 Tag Integration & Testing
  • 🚀 0.5 Tage Deployment
  • ⏱️ Gesamt: 5–7 Tage

🗣️ Der System-Prompt hinter diesem Projekt

Du bist ein Experte für Computer Vision und lokale KI-Modelle.

Aufgabe: Erstelle ein lokales Bilderkennungssystem mit Objektdetektion, 
OCR und Szenenanalyse — ohne Cloud-Abhängigkeit.

Technische Anforderungen:
- Python 3.10+, OpenCV für Bildverarbeitung
- YOLO/Ultralytics für Objektdetektion (lokal)
- Tesseract/PaddleOCR für Texterkennung
- Lokale Vision-Transformer für Szenenbeschreibung
- Batch-Verarbeitung für mehrere Bilder

Funktionen:
1. Objektdetektion mit Bounding Boxes und Confidence Scores
2. OCR: Text aus Bildern extrahieren (mehrsprachig)
3. Szenenanalyse: Bildbeschreibung in natürlicher Sprache
4. Visuelle Suche: Ähnliche Bilder in Datenbank finden

Wichtig:
- Alle Modelle laufen komplett lokal — keine Cloud-API
- GPU-Beschleunigung via CUDA (optional)
- REST-API für Integration in bestehende Systeme
- Batch-Modus für Massenverarbeitung
- Export der Ergebnisse als JSON/CSV

🎯 Strategische Erkenntnisse aus diesem Projekt

Computer Vision ist einer der wirtschaftlichsten KI-Anwendungsfälle — wenn sie lokal läuft.

🏭
Industrie 4.0 ohne Cloud
Qualitätskontrolle per Kamera muss in Echtzeit funktionieren — 100ms Latenz zur Cloud ist zu langsam. Lokale Vision-Modelle laufen direkt an der Produktionslinie — unter 10ms Inferenzzeit. Kein Internet, keine Cloud, kein Vendor-Lock-in.
🏥
Datenschutz: Der entscheidende Hebel
Medizinische Bilddaten, Personalausweise, Überwachungskameras — diese Daten dürfen nicht in Cloud-Systeme. Lokale CV-Lösungen öffnen KI-Nutzung für regulierte Branchen. Datenschutz ist kein Hindernis, sondern das Alleinstellungsmerkmal.
📄
OCR: Der unterschätzte ROI-Treiber
Rechnungsverarbeitung, Formular-Digitalisierung, Beleg-Erfassung — OCR spart pro Dokument 2–5 Minuten manuelle Dateneingabe. Bei 1.000 Dokumenten/Monat sind das 30–80 Stunden — jeden Monat.
🔄
Multi-Modell-Strategie
Ein Modell für alles gibt es nicht. Der Schlüssel ist Orchestrierung: YOLO für Detektion, Tesseract für OCR, ViT für Beschreibung — jedes Modell für seine Spezialaufgabe, orchestriert durch Python.

Bereit für Bilderkennung, die Ihre Daten schützt?

Objekte zählen, Text erkennen, Szenen verstehen — alles lokal, alles sicher. Wir finden den Vision-Use-Case mit dem höchsten ROI für Ihr Unternehmen.

🔍
Use-Case-Analyse
Welcher Vision-Anwendungsfall bringt Ihnen den höchsten ROI? Objektdetektion, OCR oder Szenenanalyse — wir analysieren Ihre Prozesse.
🧪
Proof-of-Concept
In 5–7 Tagen ein funktionierender Prototyp mit Ihren echten Bilddaten. Sie sehen die Erkennungsqualität live.
🤝
Integration & Betrieb
Von der Kamera-Anbindung über das Modell-Tuning bis zur Produktivsetzung — Ihre Vision-Pipeline aus einer Hand.
📞 02406 803 7603 ✉️ info@computerkumpel.de