Rumah > Peranti teknologi > AI > Projek Demo DeepSeek-R1 dengan Gradio dan Easyocr

Projek Demo DeepSeek-R1 dengan Gradio dan Easyocr

尊渡假赌尊渡假赌尊渡假赌
Lepaskan: 2025-03-01 10:19:09
asal
125 orang telah melayarinya

Dalam panduan tangan ini, saya akan menggunakan model DeepSeek-R1 untuk membina pembantu teka-teki matematik yang disepadukan dengan Easyocr dan Gradio.

Saya akan menerangkan langkah demi langkah bagaimana untuk membina aplikasi web berfungsi yang mampu menyelesaikan pelbagai teka-teki matematik dan menghasilkan penyelesaian yang berguna menggunakan keupayaan penalaran yang sangat baik dari model DeepSeek R1.

Jika anda hanya ingin mendapatkan gambaran keseluruhan DeepSeek-R1, saya cadangkan menyemak gambaran DeepSeek-R1 ini. Untuk menyempurnakan model, saya cadangkan tutorial ini mengenai penalaan DeepSeek-R1.

Projek Demo DeepSeek-R1: Gambaran Keseluruhan

Untuk membina pembantu solver teka -teki kami, kami akan pergi ke langkah -langkah berikut:

  • Sediakan prasyarat yang diperlukan.
  • Mulakan model dengan konfigurasi yang dioptimumkan.
  • Tentukan fungsi teras, menggunakan keupayaan arahan model.
  • Mengintegrasikan komponen ke dalam antara muka gradio mesra pengguna untuk interaksi mudah. ​​

Langkah 1: Prasyarat

Sebelum menyelam ke dalam pelaksanaan, mari pastikan kami mempunyai alat dan perpustakaan berikut yang dipasang:

  • python 3.8
  • Pytorch: Untuk pengendalian model pembelajaran mendalam yang cekap.
  • Easyocr: Modul python untuk mengekstrak teks dari imej.
  • Gradio: Untuk membuat antara muka web yang mesra pengguna.

jalankan arahan berikut untuk memasang kebergantungan yang diperlukan:

!pip install torch gradio pillow easyocr -q
Salin selepas log masuk
Salin selepas log masuk

Setelah kebergantungan di atas dipasang, jalankan arahan import berikut:

Import torch
from PIL import Image
import easyocr
import requests
import json
import gradio as gr
Salin selepas log masuk

Langkah 2: Menyediakan DeepSeek-R1 API

Skrip berikut menunjukkan bagaimana untuk berinteraksi dengan API DeepSeek untuk mendapatkan respons berdasarkan arahan pengguna. Perhatikan bahawa API DeepSeek serasi dengan format OpenAI dan menggunakan URL asas untuk permintaan API.

Anda boleh secara langsung lulus dalam kekunci API (tidak disyorkan untuk alasan privasi), atau jika menggunakan Google Colab seperti saya, anda boleh menyimpan kekunci API menggunakan ciri Rahsia. Sebagai alternatif, anda boleh menggunakan pembolehubah persekitaran.

# 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' 
Salin selepas log masuk

Pada masa menerbitkan artikel ini, perkhidmatan DeepSeek berada di bawah beban berat, dan prestasi mereka terdegradasi -saya juga mempunyai kesukaran utama yang menjalankan kod untuk projek ini. Sila periksa halaman status DeepSeek sebelum cuba menjalankan kod dalam projek ini.

Langkah 3: Merancang Ciri Teras

Sekarang API ditetapkan, kita boleh bekerja pada ciri kod. Dalam bahagian ini, kami akan memproses imej yang mengandungi teka -teki logik, mengeluarkan teks teka -teki menggunakan OCR, memperbaiki teks, dan menghantarnya ke API DeepSeek untuk menyelesaikannya. Mari kita lihat kodnya, dan kemudian saya akan menerangkannya.

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)}"
Salin selepas log masuk

Fungsi Solve_puzzle () memproses imej yang mengandungi teka -teki logik dan menyelesaikannya menggunakan model OCR dan R1. Ia mengikuti langkah -langkah ini:

  1. Inisialisasi Easyocr: Kami mulakan dengan memulakan pembaca mudah dalam bahasa Inggeris.
  2. Pemprosesan Imej: Imej yang dimuat naik disimpan sementara dan diproses menggunakan Easyocr untuk mengekstrak teks.
  3. Teks Refinement: Teks yang diekstrak diseragamkan untuk memastikan konsistensi dan ketepatan.
  4. Komposisi pertanyaan: Pertanyaan berstruktur dibuat, termasuk teks teka -teki yang ditapis dan arahan khusus untuk menyelesaikan.
  5. Interaksi API: Pertanyaan dihantar ke API DeepSeek, yang menganalisis dan menyelesaikan teka -teki. Pastikan anda menggunakan model DeepSeek-Reasoner untuk menggunakan DeepSeek-R1. Jika anda ingin menggunakan DeepSeek-V3, gunakan DeepSeek-Chat. Dan sentiasa sedar tentang harga, jadi periksa halaman harga untuk maklumat yang paling terkini.
  6. pengendalian tindak balas: tindak balas API diproses untuk mengekstrak dan mengembalikan penyelesaian atau mesej ralat yang sesuai.
  7. pengendalian ralat: Fungsi ini juga menguruskan isu -isu seperti masa tamat atau pengecualian yang tidak dijangka, memastikan operasi yang mantap.

saluran paip ini menggabungkan OCR untuk pengekstrakan teks dan API DeepSeek untuk penyelesaian teka-teki pintar.

Langkah 4: Mewujudkan Antara Muka Gradio

Gradio membolehkan kami membuat antara muka web interaktif untuk aplikasi kami. Coretan kod berikut mewujudkan antara muka web gradio yang mesra pengguna untuk fungsi solve_puzzle (). Antara muka Gradio mengambil input pengguna dan meluluskannya ke model untuk pengesahan.

!pip install torch gradio pillow easyocr -q
Salin selepas log masuk
Salin selepas log masuk

Persediaan di atas termasuk tiga komponen:

  • input: komponen gr.image di mana pengguna boleh memuat naik imej mereka.
  • output: Komponen teks untuk memaparkan jawapan dari DeepSeek-R1.
  • antara muka: Fungsi Gr.Interface () mengikat input dan output bersama -sama, melancarkan aplikasi web untuk interaksi pengguna.

Langkah 5: Uji aplikasi

Mari menguji aplikasi kami dengan teka -teki yang melibatkan matematik dan logik.

Jika anda melihat baris pertama, anda akan melihat 1 4 = 5, dan anda boleh mengatakan ini adalah tambahan yang mudah. Tetapi pada baris kedua kita mempunyai 2 5 = 12, dan kemudian 3 6 = 21. Bolehkah anda mengetahui corak dan menyelesaikan 8 11 =?

Jika anda melihat di sebelah kanan antara muka Gradio, anda akan melihat bahawa aplikasi Solver Teka -teki telah mengenal pasti corak:

Projek Demo DeepSeek-R1 dengan Gradio dan Easyocr

Kesimpulan

Dalam tutorial ini, kami membina pembantu solver teka -teki matematik menggunakan DeepSeek R1 yang digabungkan dengan OCR dan Gradio untuk menyelesaikan teka -teki matematik. Untuk bersaing dengan AI terkini, saya cadangkan blog ini:

    qwen 2.5-max
  • Janus-Pro Deepseek
  • cara menggunakan Deepseek Janus-Pro tempatan

Atas ialah kandungan terperinci Projek Demo DeepSeek-R1 dengan Gradio dan Easyocr. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan