Heim > Technologie-Peripheriegeräte > KI > Deepseek-R1 Demo-Projekt mit Gradio und Easyocr

Deepseek-R1 Demo-Projekt mit Gradio und Easyocr

尊渡假赌尊渡假赌尊渡假赌
Freigeben: 2025-03-01 10:19:09
Original
125 Leute haben es durchsucht

In diesem praktischen Leitfaden werde ich das Deepseek-R1-Modell verwenden, um einen in Easyocr und Gradio integrierten Mathematik-Puzzle-Solver-Assistenten zu erstellen.

Ich werde schrittweise erklären, wie Sie eine funktionale Web-App erstellen können, mit der eine breite Palette mathematischer Rätsel gelöst und hilfreiche Lösungen unter Verwendung der hervorragenden Argumentationsfunktionen des Deepseek R1-Modells generiert werden können.

Wenn Sie nur einen Überblick über Deepseek-R1 erhalten möchten, empfehle ich, diesen Überblick über Deepseek-R1 zu überprüfen. Um das Modell zu optimieren, empfehle ich dieses Tutorial über die Feinabstimmung von Deepseek-R1.

Deepseek-R1 Demo-Projekt: Übersicht

Um unseren Rätsel Solver -Assistenten aufzubauen, werden wir die folgenden Schritte durchlaufen:

  • richten Sie die erforderlichen Voraussetzungen ein.
  • initialisieren Sie das Modell mit optimierten Konfigurationen.
  • Definieren Sie die Kernfunktionalitäten unter Verwendung der Anweisungsfunktionen des Modells.
  • Integrieren Sie die Komponenten in eine benutzerfreundliche Gradio-Schnittstelle, um eine einfache Interaktion zu erhalten.

Schritt 1: Voraussetzungen

Bevor Sie in die Implementierung eintauchen, stellen wir sicher, dass die folgenden Tools und Bibliotheken installiert sind:

  • Python 3.8
  • pytorch: Für das effiziente Deep -Learning -Modellhandling.
  • Easyoc: Ein Python -Modul zum Extrahieren von Text aus dem Bild.
  • Gradio: Erstellen einer benutzerfreundlichen Weboberfläche.

Führen Sie die folgenden Befehle aus, um die erforderlichen Abhängigkeiten zu installieren:

!pip install torch gradio pillow easyocr -q
Nach dem Login kopieren
Nach dem Login kopieren

Sobald die obigen Abhängigkeiten installiert sind, führen Sie die folgenden Importbefehle aus:

Import torch
from PIL import Image
import easyocr
import requests
import json
import gradio as gr
Nach dem Login kopieren

Schritt 2: Einrichten der Deepseek-R1 API

Das folgende Skript zeigt, wie Sie mit der Deepseek -API interagieren, um Antworten basierend auf Benutzeranforderungen zu erhalten. Beachten Sie, dass Deepseeks API mit OpenAIs Format kompatibel ist und eine Basis -URL für API -Anforderungen verwendet.

Sie können entweder die API -Taste direkt übergeben (nicht aus Datenschutzgründen empfohlen) oder bei Verwendung von Google Colab wie mir nicht die API -Taste mithilfe der Secrets -Funktion speichern. Alternativ können Sie Umgebungsvariablen verwenden.

# DeepSeek API configuration
DEEPSEEK_API_URL = "https://api.deepseek.com/v1/chat/completions"

# If you're using Colab and storing your key in the Secrets tab:
from google.colab import userdata
API_KEY = userdata.get('SECRET_KEY')

# If you are running this code elsewhere then, replace 'YOUR_API_KEY' with your actual DeepSeek API key. Uncomment the following line of code.
#API_KEY = 'YOUR_API_KEY' 
Nach dem Login kopieren

Zum Zeitpunkt der Veröffentlichung dieses Artikels sind die Dienste von Deepseek unter starker Belastung, und ihre Leistung wird verschlechtert - ich hatte auch große Schwierigkeiten, den Code für dieses Projekt auszuführen. Bitte überprüfen Sie die Statusseite von Deepseek, bevor Sie versuchen, den Code in diesem Projekt auszuführen.

Schritt 3: Entwerfen der Kernfunktionen

Jetzt ist die API festgelegt, wir können an den Codefunktionen arbeiten. In diesem Abschnitt verarbeiten wir ein Bild, das ein logisches Puzzle enthält, den Puzzlext mit OCR extrahieren, den Text verfeinern und zur Lösung an die Deepseek -API senden. Lassen Sie uns zuerst den Code sehen, und dann werde ich ihn erklären.

reader = easyocr.Reader(['en'])

def solve_puzzle(image):
    """Extracts the puzzle from the image and sends it to DeepSeek for solving."""
    try:
        # 1. Save the uploaded image temporarily; EasyOCR uses file paths
        image_path = "uploaded_image.png"
        image.save(image_path)

        # 2. Extract text from the image using EasyOCR
        results = reader.readtext(image_path)
        extracted_text = " ".join([res[1] for res in results])

        # Standardize the text to avoid misinterpretation of "??" as "2?"
        extracted_text = extracted_text.replace('??', '?')
      
        if "?" not in extracted_text:
            extracted_text += "?"

        print("Extracted Text:", extracted_text)  # Debugging output

        # 3. Refine the extracted text to standardize expressions
        refined_text = extracted_text.replace('x', '*').replace('X', '*').replace('=', ' = ').strip()
        print("Refined Text:", refined_text)  # Debugging output

        # 4. Compose the user message with concise instructions
        puzzle_prompt = (
            f"You are an AI specialized in solving puzzles. Analyze the following, identify hidden patterns or rules, and provide the missing value with step-by-step reasoning in text format. Do not return an answer in Latex."
            f"\nPuzzle:\n{refined_text}\n"
            "Format your response strictly as follows:\n"
            "1. **Given Equation**:\n   - (original equations)\n"
            "2. **Pattern Identified**:\n   (explain the hidden logic)\n"
            "3. **Step-by-step Calculation**:\n   - For (input values):\n     (calculation and result)\n"
            "4. **Final Answer**:\n     (Answer = X)"
        )

        messages = [
            {"role": "user", "content": puzzle_prompt}
        ]

        # 5. Optimized API request for faster response
        data = {
            "model": "deepseek-reasoner",
            "messages": messages,
            "temperature": 0,  
            "max_tokens": 100  
        }

        headers = {
            "Authorization": f"Bearer {API_KEY}",
            "Content-Type": "application/json"
        }

        # 6. Send the request to DeepSeek with a timeout
        response = requests.post(DEEPSEEK_API_URL, headers=headers, json=data, timeout=15)

        # 7. Check the result
        if response.status_code == 200:
            try:
                json_resp = response.json()
                return json_resp.get("choices", [{}])[0].get("message", {}).get("content", "Error: No response content.").strip()
            except json.JSONDecodeError:
                return "Error: Invalid JSON response from DeepSeek API."
        else:
            return f"Error: DeepSeek API failed with status code {response.status_code}, Response: {response.text}"
    except requests.exceptions.Timeout:
        return "Error: DeepSeek API request timed out. Please try again."
    except Exception as e:
        return f"Error: {str(e)}"
Nach dem Login kopieren

Die Funktion von LELVE_PUZZLE () verarbeitet ein Bild, das ein logisches Puzzle enthält, und löst es mit dem OCR- und R1 -Modell. Es folgt folgende Schritte:

  1. Easyocal initialisieren: Wir beginnen zunächst den Easyocr Reader in Englisch.
  2. Bildverarbeitung: Das hochgeladene Bild wird vorübergehend gespeichert und mit EasyOcR zum Extrahieren von Text gespeichert.
  3. Textverfeinerung: Der extrahierte Text ist standardisiert, um Konsistenz und Genauigkeit zu gewährleisten.
  4. Abfragezusammensetzung: Es wird eine strukturierte Abfrage erstellt, einschließlich des raffinierten Puzzletextes und spezifischen Anweisungen zum Lösen.
  5. API -Interaktion: Die Abfrage wird an die Deepseek -API gesendet, die das Puzzle analysiert und löst. Stellen Sie sicher, dass Sie das Deepseek-R-R-Rettungsmodell verwenden, um Deepseek-R1 zu verwenden. Wenn Sie Deepseek-V3 verwenden möchten, verwenden Sie Deepseek-Chat. Achten Sie immer auf die Preisgestaltung. Überprüfen Sie also die Preisseite für die aktuellsten Informationen.
  6. Antworthandhabung: Die API -Antwort wird verarbeitet, um die Lösung oder die entsprechenden Fehlermeldungen zu extrahieren und zurückzugeben.
  7. Fehlerbehandlung: Die Funktion verwaltet auch Probleme wie Timeouts oder unerwartete Ausnahmen, um einen robusten Betrieb zu gewährleisten.

Diese Pipeline kombiniert OCR für die Textentnahme und die Deepseek-API für intelligente Rätsellösung.

Schritt 4: Erstellen der Gradio -Schnittstelle

Mit

Gradio können wir eine interaktive Weboberfläche für unsere Anwendung erstellen. Der folgende Code-Snippet erstellt eine benutzerfreundliche Gradio-Weboberfläche für die Funktion von LELVE_PUZZLECZEN (). Die Gradio -Schnittstelle nimmt die Eingaben des Benutzers an und übergibt sie an das Modell zur Validierung.

!pip install torch gradio pillow easyocr -q
Nach dem Login kopieren
Nach dem Login kopieren

Das obige Setup enthält drei Komponenten:

  • Eingabe: Eine Gr.image -Komponente, in der Benutzer ihre Bilder hochladen können.
  • Ausgabe: Eine Textkomponente zum Anzeigen der Antwort von Deepseek-R1.
  • Schnittstelle: Die Funktion gr.Interface () verbindet die Eingabe und die Ausgabe und starten Sie eine Web -App für die Benutzerinteraktion.

Schritt 5: Testen Sie die App

Testen wir unsere App mit einem Puzzle, das Mathematik und Logik umfasst.

Wenn Sie sich die erste Zeile ansehen, sehen Sie 1 4 = 5, und Sie können sagen, dass dies eine einfache Ergänzung ist. Aber in der zweiten Reihe haben wir 2 5 = 12 und dann 3 6 = 21. Können Sie das Muster herausfinden und 8 11 =?

lösen

Wenn Sie auf der rechten Seite der Gradio -Schnittstelle schauen, sehen Sie, dass die Puzzle -Solver -App das Muster identifiziert hat:

Deepseek-R1 Demo-Projekt mit Gradio und Easyocr

Schlussfolgerung

In diesem Tutorial haben wir einen Assistenten für Mathematik -Puzzle -Solver mit Deepseek R1 in Kombination mit OCR und Gradio zur Lösung mathematischer Rätsel erstellt. Um mit dem neuesten in KI Schritt zu halten, empfehle ich diese Blogs:

  • qwen 2,5-max
  • Deepseeks Janus-pro
  • So verwenden Sie Deepseek Janus-Pro lokal

Das obige ist der detaillierte Inhalt vonDeepseek-R1 Demo-Projekt mit Gradio und Easyocr. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage