Kurs
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:
- EasyOCR'ı başlatma: Önce EasyOCR okuyucusunu İngilizce için başlatıyoruz.
- Görüntü işleme: Yüklenen görüntü geçici olarak kaydedilir ve metin çıkarmak için EasyOCR ile işlenir.
- Metin iyileştirme: Çıkarılan metin, tutarlılık ve doğruluk için standartlaştırılır.
- 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.
- API etkileşimi: Sorgu DeepSeek API’ye gönderilir; API bulmacayı analiz eder ve çözer. DeepSeek-R1 kullanmak için
deepseek-reasonermodelini kullandığınızdan emin olun. DeepSeek-V3 kullanmak istersenizdeepseek-chatkullanın. Fiyatlandırmadan her zaman haberdar olun; en güncel bilgiler için fiyatlandırma sayfasını kontrol edin. - Yanıt işleme: API yanıtı çözümü veya uygun hata iletilerini çıkarmak ve döndürmek için işlenir.
- 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.Imagebileşeni. - Çıktı: DeepSeek-R1'den gelen yanıtın görüntüleneceği bir
textbileş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:

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:
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.

