Ana içeriğe atla

Gradio ve EasyOCR ile DeepSeek R1 Demo Projesi

Bu DeepSeek-R1 eğitiminde, DeepSeek-R1'i EasyOCR ve Gradio ile entegre ederek bir matematik bulmaca çözücü uygulaması geliştirmeyi öğreneceksiniz.
Güncel 3 Eki 2026  · 12 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Bu uygulamalı rehberde, DeepSeek-R1 modelini kullanarak EasyOCR ve Gradio ile entegre bir matematik bulmaca çözücü asistanı geliştireceğiz.

DeepSeek R1 modelinin güçlü akıl yürütme yeteneklerinden yararlanarak, çok çeşitli matematiksel bulmacaları çözebilen ve faydalı çözümler üretebilen işlevsel bir web uygulamasını adım adım nasıl kuracağınızı anlatacağım.

Yalnızca DeepSeek-R1 hakkında genel bir bakış istiyorsanız, şu DeepSeek-R1 genel bakışını öneririm. Modeli ince ayar yapmak için ise şu DeepSeek-R1 ince ayar eğitimini tavsiye ederim.

DeepSeek-R1 Demo Projesi: Genel Bakış

Bulmaca çözücü asistanımızı oluşturmak için aşağıdaki adımları izleyeceğiz:

  • Gerekli önkoşulları kurun.
  • Modeli optimize edilmiş yapılandırmalarla başlatın.
  • Modelin talimat (instruct) yeteneklerini kullanarak çekirdek işlevleri tanımlayın.
  • Bileşenleri kolay etkileşim için kullanıcı dostu bir Gradio arayüzüne entegre edin.

Adım 1: Önkoşullar

Uygulamaya geçmeden önce, aşağıdaki araç ve kütüphanelerin kurulu olduğundan emin olalım:

  • Python 3.8+
  • PyTorch: Derin öğrenme modellerini verimli biçimde yönetmek için.
  • EasyOCR: Görüntüden metin çıkarmaya yarayan bir Python modülü.
  • Gradio: Kullanıcı dostu bir web arayüzü oluşturmak için.

Gerekli bağımlılıkları kurmak için aşağıdaki komutları çalıştırın:

!pip install torch gradio pillow easyocr -q

Yukarıdaki bağımlılıklar kurulduktan sonra, aşağıdaki import komutlarını çalıştırın:

Import torch
from PIL import Image
import easyocr
import requests
import json
import gradio as gr

Adım 2: DeepSeek-R1 API'sini Kurma

Aşağıdaki betik, kullanıcı istemlerine dayalı yanıtlar almak için DeepSeek API ile nasıl etkileşim kurulacağını göstermektedir. DeepSeek'in API'sinin OpenAI formatıyla uyumlu olduğunu ve API istekleri için bir temel URL kullandığını unutmayın.

API anahtarını doğrudan geçebilirsiniz (gizlilik nedenleriyle önerilmez) ya da benim gibi Google Colab kullanıyorsanız Secrets özelliğini kullanarak API anahtarını kaydedebilirsiniz. Alternatif olarak ortam değişkenlerini kullanabilirsiniz.

# 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' 

Bu makalenin yayımlandığı sırada, DeepSeek’in hizmetleri yoğun yük altındaydı ve performansları düşmüştü—ben de bu proje için kodu çalıştırırken ciddi zorluklar yaşadım. Lütfen bu projedeki kodu çalıştırmadan önce DeepSeek’in durum sayfasını kontrol edin.

Adım 3: Çekirdek Özellikleri Tasarlama

Artık API hazır olduğuna göre, kod özellikleri üzerinde çalışabiliriz. Bu bölümde, bir mantık bulmacası içeren bir görüntüyü işleyecek, bulmaca metnini OCR ile çıkaracak, metni iyileştirecek ve çözüm için DeepSeek API’ye göndereceğiz. Önce koda bakalım, ardından açıklayacağım.

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)}"

solve_puzzle() işlevi, bir mantık bulmacası içeren görüntüyü işleyip OCR ve R1 modelini kullanarak çözer. Şu adımları izler:

  1. EasyOCR'ı başlatma: Önce EasyOCR okuyucusunu İngilizce için başlatıyoruz.
  2. Görüntü işleme: Yüklenen görüntü geçici olarak kaydedilir ve metin çıkarmak için EasyOCR ile işlenir.
  3. Metin iyileştirme: Çıkarılan metin, tutarlılık ve doğruluk için standartlaştırılır.
  4. Sorgu oluşturma: İyileştirilmiş bulmaca metni ve çözüm için özel talimatlar içeren yapılandırılmış bir sorgu hazırlanır.
  5. API etkileşimi: Sorgu DeepSeek API’ye gönderilir; API bulmacayı analiz eder ve çözer. DeepSeek-R1 kullanmak için deepseek-reasoner modelini kullandığınızdan emin olun. DeepSeek-V3 kullanmak isterseniz deepseek-chat kullanın. Fiyatlandırmadan her zaman haberdar olun; en güncel bilgiler için fiyatlandırma sayfasını kontrol edin.
  6. Yanıt işleme: API yanıtı çözümü veya uygun hata iletilerini çıkarmak ve döndürmek için işlenir.
  7. Hata yönetimi: İşlev, zaman aşımı veya beklenmeyen istisnalar gibi sorunları da yöneterek sağlam bir çalışma sağlar.

Bu işlem hattı, metin çıkarımı için OCR’ı ve zeki bulmaca çözümü için DeepSeek API’yi birleştirir.

Adım 4: Gradio Arayüzünü Oluşturma

Gradio, uygulamamız için etkileşimli bir web arayüzü oluşturmamıza olanak tanır. Aşağıdaki kod parçacığı, solve_puzzle() işlevi için kullanıcı dostu bir Gradio web arayüzü oluşturur. Gradio arayüzü, kullanıcının girdilerini alır ve doğrulama için modele iletir.

interface = gr.Interface(
    fn=solve_puzzle,
    inputs=gr.Image(type="pil"),
    outputs="text",
    title="Logic Puzzle Solver with EasyOCR & DeepSeek",
    description="Upload an image of a logic puzzle, and the model will solve it for you."
)
interface.launch(debug=True)

Yukarıdaki kurulum üç bileşen içerir:

  • Girdi: Kullanıcıların görsellerini yükleyebileceği bir gr.Image bileşeni.
  • Çıktı: DeepSeek-R1'den gelen yanıtın görüntüleneceği bir text bileşeni.
  • Arayüz: gr.Interface() işlevi girdiyi ve çıktıyı bir araya getirir ve kullanıcı etkileşimi için bir web uygulaması başlatır.

Adım 5: Uygulamayı Test Edin

Uygulamamızı, matematik ve mantık içeren bir bulmacayla test edelim.

İlk satıra bakarsanız 1 + 4 = 5 görürsünüz ve bu basit bir toplama diyebilirsiniz. Ancak ikinci satırda 2 + 5 = 12 ve ardından 3 + 6 = 21 var. Deseni bulup 8 + 11 = ? işlemini çözebilir misiniz?

Gradio arayüzünün sağ tarafına bakarsanız, Puzzle Solver uygulamasının deseni belirlediğini göreceksiniz:

gradio ile deepseek-r1 uygulaması

Sonuç

Bu eğitimde, DeepSeek R1’i OCR ve Gradio ile birleştirerek matematik bulmacalarını çözen bir matematik bulmaca çözücü asistanı geliştirdik. Yapay zekâdaki yenilikleri takip etmek için şu blogları öneririm:


Aashi Dutt's photo
Author
Aashi Dutt
LinkedIn
Twitter

ML (Üretken Yapay Zekâ) alanında Google Developers Uzmanıyım, Kaggle 3x Expert unvanına sahibim ve 3+ yıllık teknoloji deneyimiyle Women Techmakers Elçisiyim. 2020'de bir sağlık teknolojileri girişiminin kurucu ortağı oldum ve Georgia Tech'te makine öğrenmesi alanında uzmanlaşarak bilgisayar bilimleri yüksek lisansı yapıyorum.

Konular
Yapay Zeka
Büyük Dil Modelleri

Bu kurslarla yapay zekâyı öğrenin!

Kurs

LangChain ile Retrieval Augmented Generation (RAG)

3 sa
21.3K
LangChain ile Retrieval Augmented Generation (RAG) kullanarak harici verileri LLM'lerle entegre etmek için en son yöntemleri öğrenin.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Devamını GörDevamını Gör