Büyük PDF'lerin OCR'si için Gemini 2.0 Flash'ı Nasıl Kullanıyorum

Bu makalede, Gemini 2.0 Flash'ı karmaşık RAG'lere girmeden büyük PDF'ler için OCR olarak kullanma yöntemimi paylaşacağım.

Efe Demir

Efe Demir

5 June 2025

Büyük PDF'lerin OCR'si için Gemini 2.0 Flash'ı Nasıl Kullanıyorum

```html

💡
Başlamadan önce, size hızlı bir çağrı yapayım: API test sürecinizi kolaylaştırmak için bugün Apidog'u ücretsiz indirin, son teknoloji ürünü yapay zeka modellerini test etmek ve API test sürecini kolaylaştırmak isteyen geliştiriciler için mükemmel!
button

Belge zekası alanında çalışan bir veri bilimcisi olarak, büyük ve karmaşık PDF'lerden metin çıkarma ve işleme gibi zorlu görevlerle sık sık karşılaştım. Geleneksel OCR (Optik Karakter Tanıma) boru hatları tipik olarak birden fazla adım, özel araçlar ve önemli ölçüde işlem süresi gerektirir. Ancak, Gemini 2.0 Flash'ın tanıtımı, bu belgeleri ele alma yaklaşımımı değiştirdi. Bu makalede, büyük PDF'ler için karmaşık RAG'ye (Alım Artırılmış Üretim) başvurmadan güçlü bir OCR çözümü olarak Gemini 2.0 Flash'ı kullanma konusundaki kişisel iş akışımı paylaşacağım.

Gemini 2.0 Flash ile Tanışmam

Gemini 2.0 Flash ile ilk karşılaşmam, taranmış PDF formatında yüzlerce eski finansal rapor içeren özellikle zorlu bir projeyle uğraştıktan sonra geldi. Geleneksel OCR araçları ya tabloları doğru bir şekilde yakalamakta başarısız oluyor ya da kapsamlı bir işlem sonrası düzenleme gerektiriyordu. Google, etkileyici 1 milyon token bağlam penceresi ve çok modlu yetenekleriyle Gemini 2.0 Flash'ı yayınladığında, potansiyelini hemen fark ettim.

Gemini 2.0 Flash sadece başka bir dil modeli değil; belgelerdeki hem metni hem de görsel içeriği anlayabilen çok modlu bir güç merkezidir. Bu, onu bağlam ve görsel anlayışın önemli olduğu OCR görevleri için benzersiz bir şekilde uygun hale getirir. Tek bir işlemde yaklaşık 1.500 sayfaya kadar işleme yeteneğiyle, büyük belge OCR'si için benim vazgeçilmez çözümüm haline geldi.

OCR Ortamımı Kurmak

OCR iş akışıma dalmadan önce, güvenilir bir teknik temel oluşturmam gerekiyordu. İşte ortamımı nasıl kurduğum:

  1. Temel Kütüphaneleri Yükleyin: İlk olarak, Gemini ile arayüz oluşturmak ve PDF'leri işlemek için gerekli Python paketlerini yükledim:
pip install google-generativeai
pip install pypdf
pip install pdf2image
pip install pillow
pip install python-dotenv
  1. API Erişimini Yapılandırın: Google Cloud Console'da bir proje oluşturdum, Gemini API'sini etkinleştirdim ve bir API anahtarı oluşturdum. Bu anahtarı ortam değişkenlerini kullanarak güvenli bir şekilde saklıyorum:
import os
import google.generativeai as genai
from dotenv import load_dotenv

# Load API key from .env file
load_dotenv()
api_key = os.getenv('GOOGLE_API_KEY')

# Configure the Gemini API
genai.configure(api_key=api_key)
  1. Modeli Başlatın: Çok modlu girişleri destekleyen Gemini 2.0 Flash'a erişiyorum:
# Initialize Gemini 2.0 Flash
model = genai.GenerativeModel('gemini-2.0-flash')

PDF Dönüştürme ve Görüntü Çıkarma İş Akışım

Gemini 2.0 Flash ile etkili OCR için, PDF'leri işlemek için sistematik bir yaklaşım geliştirdim:

  1. Görüntülere Dönüştürme: İlk olarak, PDF sayfalarını yüksek çözünürlüklü görüntülere dönüştürüyorum:
from pdf2image import convert_from_path
import os

def convert_pdf_to_images(pdf_path, output_folder, dpi=300):
    # Create output directory if it doesn't exist
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)
    
    # Convert PDF pages to images
    images = convert_from_path(pdf_path, dpi=dpi)
    
    # Save images to the output folder
    image_paths = []
    for i, image in enumerate(images):
        image_path = os.path.join(output_folder, f'page_{i+1}.jpg')
        image.save(image_path, 'JPEG')
        image_paths.append(image_path)
    
    return image_paths
  1. Büyük PDF'ler için Toplu İşleme: Özellikle büyük belgeler için, görüntüleri toplu olarak işliyorum:
def batch_images(image_paths, batch_size=50):
    """Group images into batches for processing"""
    for i in range(0, len(image_paths), batch_size):
        yield image_paths[i:i + batch_size]

Gemini 2.0 Flash Kullanarak OCR Boru Hattım

İşte Gemini 2.0 Flash'ın iş akışımda gerçekten parladığı yer:

  1. Doğrudan Görüntüden Metne Dönüştürme: Görüntüleri doğrudan çok modlu yetenekler aracılığıyla işliyorum:
from PIL import Image
from IPython.display import display
import base64
import io

def ocr_with_gemini(image_paths, instruction):
    """Process images with Gemini 2.0 Flash for OCR"""
    images = [Image.open(path) for path in image_paths]
    
    prompt = f"""
    {instruction}
    
    These are pages from a PDF document. Extract all text content while preserving the structure.
    Pay special attention to tables, columns, headers, and any structured content.
    Maintain paragraph breaks and formatting.
    """
    
    response = model.generate_content([prompt, *images])
    return response.text
  1. Karmaşık Belge Öğelerini Ele Alma Yaklaşımım:

Tablolar, grafikler ve çok sütunlu metin içeren karmaşık düzenlere sahip belgeler için, belirli talimatlar kullanıyorum:

def ocr_complex_document(image_paths):
    instruction = """
    Extract ALL text content from these document pages.
    For tables:
    1. Maintain the table structure using markdown table format
    2. Preserve all column headers and row labels
    3. Ensure numerical data is accurately captured
    
    For multi-column layouts:
    1. Process columns from left to right
    2. Clearly separate content from different columns
    
    For charts and graphs:
    1. Describe the chart type
    2. Extract any visible axis labels, legends, and data points
    3. Extract any title or caption
    
    Preserve all headers, footers, page numbers, and footnotes.
    """
    
    return ocr_with_gemini(image_paths, instruction)
  1. Finansal Belgeler için Özel OCR:

Çalıştığım PDF'lerin çoğu, özel ilgi gerektiren finansal veriler içerir:

def ocr_financial_document(image_paths):
    instruction = """
    Extract ALL text content from these financial document pages.
    
    Pay particular attention to:
    1. All numerical values and ensure they're accurately transcribed
    2. Currency symbols and their correct association with numbers
    3. Financial tables - maintain their exact structure and alignment
    4. Balance sheets, income statements, and cash flow statements
    5. Footnotes and disclosures - these often contain crucial information
    6. Any dates associated with financial periods
    
    Format tables using markdown table syntax to preserve their structure.
    """
    
    return ocr_with_gemini(image_paths, instruction)

Kalite Güvence Sürecim

OCR kalitesinin belge özelliklerine göre değişebileceğini fark ettim, bu nedenle bir kalite kontrol süreci uyguluyorum:

def verify_ocr_quality(image_path, extracted_text):
    """Verify the quality of OCR results for a specific page"""
    image = Image.open(image_path)
    
    prompt = f"""
    I have a document page and text that was extracted from it using OCR.
    
    Compare the original image with the extracted text and identify any errors or omissions.
    Focus on:
    1. Missing text
    2. Incorrectly recognized characters
    3. Table structure issues
    4. Issues with special characters or symbols
    
    Extracted text:
    {extracted_text}
    """
    
    response = model.generate_content([prompt, image])
    return response.text

Kaliteyi sağlamak için büyük belgelerden rastgele sayfaları kontrol etmek için bu işlevi kullanıyorum.

Bağlam Sınırlarının Ötesindeki Büyük Belgeleri İşleme Sürecim

Gemini 2.0 Flash etkileyici bir 1 milyon token sınırına sahip olsa da, bazı belgelerim hala bu kapasiteyi aşıyor. Bu gibi durumlarda, sıralı bir işleme yaklaşımı geliştirdim:

  1. PDF'yi Anlamlı Segmentlerde İşleyin:
def process_large_pdf(pdf_path, output_folder, output_file):
    # Convert PDF to images
    image_paths = convert_pdf_to_images(pdf_path, output_folder)
    
    # Create batches of images (e.g., by chapter or section)
    batches = batch_images(image_paths, 30)  # Adjust batch size based on document complexity
    
    full_text = ""
    for i, batch in enumerate(batches):
        print(f"Processing batch {i+1}...")
        batch_text = ocr_with_gemini(batch, "Extract all text, maintaining document structure")
        full_text += f"\n\n--- BATCH {i+1} ---\n\n{batch_text}"
    
    # Save the full extracted text
    with open(output_file, 'w', encoding='utf-8') as f:
        f.write(full_text)
    
    return full_text
  1. Belge Tutarlılığı için İşlem Sonrası Düzenleme:

Tüm partilerden metin çıkardıktan sonra, tutarlılığı sağlamak için Gemini 2.0 Flash'ı kullanıyorum:

def harmonize_document(extracted_text):
    prompt = """
    The following text was extracted from a large PDF document in batches.
    Harmonize the content by:
    1. Removing any batch separation markers
    2. Ensuring consistent formatting throughout
    3. Fixing any table structure issues at batch boundaries
    4. Ensuring paragraph and section flow is natural across batch boundaries
    
    Original extracted text:
    """
    
    response = model.generate_content(prompt + extracted_text)
    return response.text

Özel Kullanım Durumu: Tarihi Belge OCR'sine Yaklaşımım

En zorlu OCR projelerimden bazıları, eski kağıt, soluk metin veya alışılmadık yazı tipleri içeren tarihi belgeleri içerir. Bunlar için özel bir yaklaşım geliştirdim:

def historical_document_ocr(image_paths):
    instruction = """
    Extract text from these historical document images.
    
    Consider the following challenges:
    1. Aged paper with stains or discoloration
    2. Faded ink or typefaces
    3. Old-fashioned typography and ligatures
    4. Handwritten annotations
    5. Non-standard page layouts
    
    Prioritize accuracy over format preservation when necessary.
    Note any text that appears uncertain with [?].
    """
    
    extracted_text = ocr_with_gemini(image_paths, instruction)
    
    # Additional context-based correction
    correction_prompt = f"""
    The following text was extracted from a historical document that may have quality issues.
    Review the text for typical OCR errors in historical documents:
    1. Fix words that were likely misinterpreted due to aged paper or faded ink
    2. Correct archaic spellings only if they appear to be OCR errors (not if they're actually period-appropriate)
    3. Resolve any uncertain text marked with [?] if context makes the correct reading clear
    
    Original text:
    {extracted_text}
    """
    
    corrected_text = model.generate_content(correction_prompt)
    return corrected_text.text

OCR Projelerimden Pratik Sonuçlar

Gemini 2.0 Flash'ı düzinelerce büyük belgede OCR için kullanma deneyimimde, geleneksel OCR yöntemlerine göre dikkate değer iyileştirmeler gördüm:

  1. Doğruluk İyileştirmeleri: Tablolar ve grafikler içeren karmaşık finansal raporlar için, doğruluk oranlarım geleneksel OCR ile yaklaşık %85'ten Gemini 2.0 Flash ile %95'in üzerine çıktı. Modelin bağlamı anlama yeteneği, çevredeki içeriğe göre belirsiz karakterleri doğru bir şekilde yorumlamasına yardımcı olur.
  2. İşlem Süresi Azaltma: Eskiden saatler süren işlem ve manuel düzeltme, artık genellikle dakikalar içinde tamamlanıyor. Ayrı OCR ve metin anlama adımlarına olan ihtiyacı ortadan kaldırarak, iş akışım önemli ölçüde daha verimli hale geldi.
  3. Tablo Yapısı Koruması: Gördüğüm en etkileyici yeteneklerden biri, Gemini 2.0 Flash'ın karmaşık tablo yapılarını koruma yeteneğidir. Finansal belgelerde, bu veri bütünlüğünü sağlamak için paha biçilmezdi.

Sonuç: Belge İşleme İş Akışım Üzerindeki Etkisi

Büyük PDF'lerin OCR'si için Gemini 2.0 Flash'ı benimsemek, belge işleme iş akışımı dönüştürdü. Çoğu kullanım durumu için karmaşık RAG mimarilerinin ortadan kaldırılması, sonuçları iyileştirirken teknik altyapımı basitleştirdi. Modelin çok modlu yetenekleri, belgelerin hem görsel öğelerini hem de metinsel içeriğini aynı anda anlamasını sağlayarak daha akıllı metin çıkarma sonuçları verir.

Beni en çok etkileyen şey, modelin geleneksel OCR sistemlerinin zorlandığı uç durumları ele alma yeteneği—el yazısı açıklamalar, filigranlar, alışılmadık yazı tipleri ve karmaşık düzenler. Gemini 2.0 Flash'ın büyük bağlam penceresinden yararlanarak, tek bir işlemde belgelerin önemli bölümlerini işleyebilir, tutarlılığı ve bağlamsal anlayışı koruyabilirim.

Büyük belge koleksiyonlarıyla düzenli olarak çalışan veri bilimcileri, araştırmacılar ve profesyoneller için, Gemini 2.0 Flash yalnızca artan bir iyileşmeyi değil, aynı zamanda OCR'ye ve belge anlamaya nasıl yaklaştığımız konusunda temel bir değişimi temsil ediyor. Düzeni, bağlamı ve görsel öğeleri bütünsel olarak dikkate alarak, bir insanın yapacağı gibi belgeleri "görme" ve "okuma" yeteneği, belge zekası uygulamaları için yeni olanaklar açıyor.

İş akışımı geliştirmeye devam ettikçe, bu teknolojinin daha önce emek yoğun veya teknolojik olarak zorlu olan belge işleme görevlerini nasıl kolaylaştırabileceğini sürekli olarak keşfediyorum. Belge OCR'sinin geleceği burada ve bir zamanlar profesyonel varlığımın belası olan büyük PDF arşivleriyle çalışma şeklimi devrim yaratıyor.

💡
Başlamadan önce, size hızlı bir çağrı yapayım: API test sürecinizi kolaylaştırmak için bugün Apidog'u ücretsiz indirin, son teknoloji ürünü yapay zeka modellerini test etmek ve API test sürecini kolaylaştırmak isteyen geliştiriciler için mükemmel!
button

```

Explore more

Fathom-R1-14B: Hindistan'dan Gelişmiş Yapay Zeka Muhakeme Modeli

Fathom-R1-14B: Hindistan'dan Gelişmiş Yapay Zeka Muhakeme Modeli

Yapay zeka hızla gelişiyor. FractalAIResearch/Fathom-R1-14B, 14.8 milyar parametreyle matematik ve genel akıl yürütmede başarılı.

5 June 2025

Mistral Code: İşletmeler için En Özelleştirilebilir Yapay Zeka Destekli Kodlama Asistanı

Mistral Code: İşletmeler için En Özelleştirilebilir Yapay Zeka Destekli Kodlama Asistanı

Mistral Code'u keşfedin: Kurumsal kullanıma özel, en özelleştirilebilir yapay zeka destekli kodlama asistanı.

5 June 2025

Claude Code'un 2025'te Yapay Zeka Kodlamasını Nasıl Dönüştürdüğü

Claude Code'un 2025'te Yapay Zeka Kodlamasını Nasıl Dönüştürdüğü

Claude Code, 2025'te yapay zeka destekli kodlamayı nasıl devrimleştiriyor? Özelliklerini, kullanımını ve Windsurf kısıtlamalarından sonra neden popüler olduğunu öğrenin. Geliştiriciler için okunması gereken!

5 June 2025

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin