PYTHON etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
PYTHON etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

Python OCR REST Servisi

 Bu yazımda sizlere geliştirdiğim Python tabanlı OCR (Optik Karakter Tanıma) servisimi tanıtmak istiyorum.

Projeyi paylaştım:
🔗 GitHub: hkmsmart/Python-ORC-REST-SERVICE

Bu proje sayesinde PDF dosyalarındaki metinleri otomatik olarak okuyabilir ve eğer PDF bir taranmış belge ise, OCR (Optical Character Recognition) teknolojisi sayesinde görüntü üzerindeki yazıları da algılayabilirsiniz.

İstekleri hem dosya yükleyerek hem de Base64 formatında veri göndererek yapabilirsiniz.
Tüm örnek istekler, GitHub reposunda yer alan Postman Collection dosyasında bulunmaktadır.

Ayrıca belirli sayfaları çevirmek istiyorsanız, lines parametresini kullanabilirsiniz.
Örneğin yalnızca 1. ve 2. sayfaların metnini almak için şu şekilde bir parametre gönderebilirsiniz:

lines:1,2

Üstelik proje Docker desteğiyle geliyor, yani sadece birkaç komutla ortamı hazırlayıp servisi çalıştırabilirsiniz.


OCR Nedir?

İlk önce kısaca OCR’ın ne olduğundan bahsedeyim.

OCR (Optical Character Recognition) Türkçesiyle Optik Karakter Tanıma demek.
Yani kısaca: Bir görselin içindeki yazıları bilgisayarın okuyabilmesini sağlayan teknoloji.

📄 Örneğin bir fatura, sözleşme veya el yazısı bir not düşünün.
Bunlar tarandığında bilgisayar açısından sadece “piksel” haline gelir.
Ama OCR sayesinde bu görüntülerdeki yazılar okunur hale gelir.

Basit bir örnek

Bir fatura fotoğrafı düşünün:

Fatura No: 12345
Tutar: 580 TL
Tarih: 09.10.2025

Normalde bu bir resimdir, bilgisayar okuyamaz.
Ama OCR teknolojisi bu görüntüyü analiz eder, harfleri tanır ve çıktıyı şöyle verir:

Fatura No: 12345

Tutar: 580 TL

Tarih: 09.10.2025

Yani OCR, görüntüyü metne dönüştürür


Bu Projede Kullandığım Teknolojiler

Benim projemde 4 temel Python kütüphanesi kullanılıyor:

KütüphaneAçıklama
FlaskREST API servisini oluşturmak için
pdfplumberPDF dosyasındaki gömülü metinleri doğrudan almak için
pdf2imagePDF sayfalarını yüksek çözünürlüklü görsellere dönüştürmek için
pytesseractGörüntüdeki yazıları OCR ile okumak için
Pillow (PIL)Görüntü kontrastını artırmak için (daha doğru OCR sonucu)


Proje Nasıl Çalışıyor?

Proje bir REST servisi olarak çalışıyor.
İstersen PDF dosyasını doğrudan yükleyebilirsin, istersen Base64 olarak JSON içinde gönderebilirsin.

Github reposunda örnek 

  1. İstek geldiğinde önce header alanında gönderilen kullanıcı adı ve şifre kontrol ediliyor:

    VALID_USERNAME = "admin"

    VALID_PASSWORD = "12345"

    Bu bilgiler header’da gönderilmezse servis “Unauthorized” döndürüyor.

  2. PDF, pdfplumber ile açılıyor.
    Eğer PDF’te gömülü metin varsa doğrudan okunuyor.

  3. Eğer PDF bir tarama (sadece resimse), bu sefer:

    • pdf2image ile PDF sayfası görsele çevriliyor

    • Pillow ile kontrast artırılıyor

    • pytesseract kullanılarak metin OCR ile çıkarılıyor

  4. Tüm sonuçlar şu formatta JSON olarak dönüyor:
    [
      {"page": 1, "lines": ["Merhaba dünya", "Tarih: 09.10.2025"]},
      {"page": 2, "lines": ["Bu bir örnek metindir."]}
    ]

Docker ile Kolay Kurulum

Projeyi Docker kullanarak hemen ayağa kaldırabiliyorsunuz.
Her şeyi sizin yerinize hallediyor: bağımlılıklar, Tesseract kurulumu, ortam değişkenleri

git clone https://github.com/hkmsmart/Python-ORC-REST-SERVICE.git

cd Python-ORC-REST-SERVICE

docker compose up --build -d

Artık servis http://localhost:5000/ocr adresinde çalışıyor.