Modern Belge Zorlukları için Gelişmiş OCR

Derin öğrenme destekli tanıma ile taranmış belgelerden, fotoğraflardan ve PDF'lerden metni hassas şekilde çıkarın

EasyOCR Nedir?

EasyOCR, Jaided AI tarafından geliştirilen, görüntülerden ve taranmış belgelerden yüksek doğrulukla metin çıkarmak için tasarlanmış açık kaynaklı bir Optik Karakter Tanıma (OCR) kütüphanesidir. PyTorch üzerine inşa edilmiş olup Latin, Çince, Arapça ve daha fazlası dahil 80'den fazla dili destekler. EasyOCR, yalnızca birkaç satır kodla uygulanabilen kullanım kolaylığıyla bilinir ve metin tanıma projeleri üzerinde çalışan geliştiriciler ve araştırmacılar için mükemmel bir seçimdir. Önceden eğitilmiş derin öğrenme modelleri sayesinde çeşitli yazı tiplerinde, el yazısı stillerinde ve karmaşık arka planlarda metni verimli şekilde tespit edip tanıyabilir. Otomatik belge işleme, plaka tanıma veya görüntü tabanlı metin çıkarma için olsun, EasyOCR güçlü ve hafif bir çözüm sunar. Sistem şunları birleştirir:

  • Çoklu model tespiti: ResNet altyapısıyla güçlendirilmiş CRAFT tabanlı metin konumlandırma
  • Uyarlanabilir tanıma: Betiğe özel modeller (Latin için CRNN, CJK için Transformer)
  • Bağlam bilgili işleme: Paragraf yeniden oluşturma ve okuma sırasını koruma

Performans kıyaslamaları belge türleri arasında tutarlı sonuçlar gösterir:

Belge TürüDoğrulukİşlem HızıDonanım
İş belgeleri%98.642 sayfa/dakNVIDIA T4
Mobil çekim görüntüleri%94.228 görüntü/dakGoogle Colab GPU
Tarihi arşivler%89.115 sayfa/dakCPU kümesi

EasyOCR ile OCR Metin Tanıma ve Çıkarma

Mimari belgeleri üç optimize edilmiş aşamada işler:

  1. Tespit: Piksel seviyesinde metin bölgesi segmentasyonu
  2. Tanıma: Dil modellemesiyle dizi tahmini
  3. Yeniden oluşturma: Mekansal ilişki haritalama
GitHub

GitHub İstatistikleri

İsim:
Dil:
Yıldızlar:
Çatallar:
Lisans:
Depo en son şu tarihte güncellendi:

Temel Teknik Yetenekler

1. Gelişmiş Metin Tespiti

Tespit alt sistemi şu özelliklere sahiptir:

  • Karakter seviyesinde ısı haritası oluşturma
  • Keyfi şekilli metin bölgesi işleme
  • Çoklu yönlendirme desteği (0-360°)
  • Arka plan gürültüsü bastırma

2. Hibrit Tanıma Sistemi

Tanıma modelleri betik türüne göre optimize edilmiştir:

  • Latin/Kiril: 7 CNN katmanı + BiLSTM ile CRNN
  • Çince/Japonca/Korece: 12 dikkat başlığı ile Transformer
  • Arapça/İbranice: Sağdan sola özel tokenizasyonlu BiLSTM

3. Kurumsal Özellikler

  • Otomatik kalite tahmini
  • Yapılandırılabilir hassasiyet/geri çağırma dengeleri
  • Donanım duyarlı kaynak ayırma

Kurulum & Yapılandırma

Sistem Gereksinimleri

BileşenGeliştirmeÜretim
Python3.6+3.8+
Bellek8GB16GB+
GPUİsteğe bağlıNVIDIA (CUDA 11.8+)

Kurulum Seçenekleri

Temel Kurulum


pip install easyocr  # Yalnızca CPU bağımlılıklarını yükler

GPU Desteği (Linux/Windows)


pip install easyocr torch torchvision --index-url https://download.pytorch.org/whl/cu118

Docker (Üretim Dağıtımı)


docker run -it --gpus all -v $(pwd):/data \
  -e LANG_LIST="en,fr,es" \
  jaidedai/easyocr

Pratik Uygulama Örnekleri

1. Üretim Belge İşleme Hattı

Ön işleme ve doğrulama ile tam OCR iş akışı:

Üretime Hazır İşleme


from easyocr import Reader
import cv2
import numpy as np

class DocumentOCR:
    def __init__(self, languages=['en']):
        self.reader = Reader(languages, gpu=True)
        
    def preprocess(self, image):
        # Kontrast iyileştirme
        lab = cv2.cvtColor(image, cv2.COLOR_BGR2LAB)
        l, a, b = cv2.split(lab)
        clahe = cv2.createCLAHE(clipLimit=3.0, tileGridSize=(8,8))
        limg = cv2.merge([clahe.apply(l), a, b])
        return cv2.cvtColor(limg, cv2.COLOR_LAB2BGR)
    
    def process(self, image_path):
        img = cv2.imread(image_path)
        processed = self.preprocess(img)
        results = self.reader.readtext(processed,
                                    batch_size=4,
                                    paragraph=True,
                                    min_size=50,
                                    text_threshold=0.8)
        return {
            'text': [r[1] for r in results],
            'confidence': np.mean([r[2] for r in results])
        }

# Kullanım
ocr = DocumentOCR(languages=['en','fr'])
result = ocr.process('legal_contract.jpg')
print(f"Ortalama Güven: {result['confidence']:.2%}")

2. Toplu Fatura İşleme

Çeşitli fatura formatlarından anahtar alanları çıkarın:

Fatura Veri Çıkarma


import easyocr
import re
from pathlib import Path

reader = easyocr.Reader(['en'])

INVOICE_PATTERNS = {
    'invoice_no': r'Invoice\s*Number[:#]?\s*([A-Z0-9-]+)',
    'date': r'Date[:]?\s*(\d{2}[/-]\d{2}[/-]\d{4})',
    'amount': r'Total\s*Due[:]?\s*\$?(\d+\.\d{2})'
}

def process_invoices(folder):
    results = []
    for invoice in Path(folder).glob('*.pdf'):
        text = '\n'.join(reader.readtext(str(invoice), detail=0))
        extracted = {field: re.search(pattern, text) 
                    for field, pattern in INVOICE_PATTERNS.items()}
        results.append({
            'file': invoice.name,
            'data': {k: v.group(1) if v else None 
                     for k, v in extracted.items()}
        })
    return results
invoices_data = process_invoices('/invoices/')

Performans Optimizasyonu

GPU Hızlandırma

  • Toplu İşleme: GPU belleğine göre optimal parti boyutları (4-16)
  • Bellek Yönetimi: Büyük belgeler için otomatik bölme
  • Karışık Hassasiyet: Tensor Çekirdekleri ile FP16 çıkarım

Doğruluk Ayarı

  • Kontrast Eşikleri: Düşük kaliteli taramalar için contrast_ths ayarı
  • Metin Boyutu Filtreleme: Küçük metinleri görmezden gelmek için min_size belirleme
  • Dil Önceliklendirme: Beklenen kullanım sıklığına göre dilleri sıralama

Benzer Ürünler

 Türkçe