Python OCR REST Servisi
PYTHON🔗 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.
İ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üphane | Açıklama |
---|---|
Flask | REST API servisini oluşturmak için |
pdfplumber | PDF dosyasındaki gömülü metinleri doğrudan almak için |
pdf2image | PDF sayfalarını yüksek çözünürlüklü görsellere dönüştürmek için |
pytesseract | Gö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
-
İ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. PDF,
pdfplumber
ile açılıyor.
Eğer PDF’te gömülü metin varsa doğrudan okunuyor.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 - 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.