C# İle Pdf Dosyalarından Metin Ayıklama Uygulaması Nasıl Yapılır?

Gereksinimler ve Ön Hazırlık

Projeye başlamadan önce geliştirme ortamınızın güncel olduğundan emin olmalısınız. 2026 yılı itibarıyla .NET 9 SDK'sının yüklü olması ve IDE olarak Visual Studio 2022 veya güncel bir VS Code kurulumuna sahip olmanız önerilir.

  • .NET 9 SDK (veya üzeri)
  • Visual Studio 2022 (v17.12+) veya VS Code
  • NuGet Paket Yöneticisi erişimi
  • İşlenebilir bir örnek PDF dosyası

PDF işleme süreçlerinde en güvenilir kütüphanelerden biri olan PdfSharp veya daha kapsamlı metin ayıklama yetenekleri sunan iText7 kütüphanesini kullanacağız. Bu rehberde, geniş topluluk desteği ve esnek yapısı nedeniyle iText7 kütüphanesini tercih ediyoruz.

Proje Kurulumu ve Kütüphane Entegrasyonu

İlk adım olarak bir konsol uygulaması oluşturup gerekli kütüphaneyi projemize dahil etmemiz gerekiyor. Terminal veya Visual Studio Paket Yöneticisi üzerinden aşağıdaki komutu çalıştırarak kütüphaneyi yükleyin.

dotnet new console -n PdfMetinAyiklamaApp
cd PdfMetinAyiklamaApp
dotnet add package itext7

Bu komut, projenize iText7 kütüphanesini ekler. iText7, PDF dosyalarını ayrıştırmak (parsing) ve içindeki metin katmanlarına erişmek için kullanılan en yaygın araçlardan biridir. Kütüphane yüklendikten sonra Program.cs dosyanızda gerekli namespace tanımlarını yapmaya hazırız.

PDF Dosyasını Okuma ve Metin Çıkarma İşlemi

PDF dosyaları, metinleri görsel koordinatlara göre saklayan karmaşık yapılardır. Bu nedenle, metni doğrudan bir string olarak çekmek yerine, bir "Text Extraction Strategy" (Metin Ayıklama Stratejisi) kullanmamız gerekir. Aşağıdaki kod, basit bir PDF dosyasını açıp tüm sayfalarındaki metni okur.

using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Canvas.Parser;
using iText.Kernel.Pdf.Canvas.Parser.Listener;

string dosyaYolu = "ornek_belge.pdf";

using (PdfReader okuyucu = new PdfReader(dosyaYolu))
using (PdfDocument pdfDokuman = new PdfDocument(okuyucu))
{
    for (int i = 1; i


Büyük Boyutlu PDF Dosyalarında Performans Optimizasyonu

PDF işleme süreçleri, özellikle yüzlerce sayfadan oluşan belgelerde bellek tüketimini ciddi oranda artırabilir. Uygulamanızın kilitlenmesini önlemek ve işlem süresini kısaltmak için Stream (akış) tabanlı okuma yöntemlerini tercih etmelisiniz. Tüm dokümanı belleğe yüklemek yerine, sayfaları tek tek işleyerek kaynak kullanımını optimize edebilirsiniz.

Aşağıdaki örnek, büyük dosyaları işlerken bellek yönetimini nasıl iyileştirebileceğinizi gösterir:

public string MetniParcaliOku(string dosyaYolu)
{
    StringBuilder metinHavuzu = new StringBuilder();
    using (PdfReader reader = new PdfReader(dosyaYolu))
    using (PdfDocument pdfDoc = new PdfDocument(reader))
    {
        int toplamSayfa = pdfDoc.GetNumberOfPages();
        for (int i = 1; i                
Bu yazıya tepkinizi paylaşın:
Kerem Demir

Dijital araçlar ve kişisel verimlilik üzerine uzmanlaşmış profesyonel bir yazarım. Karmaşık konuları basit ve anlaşılır kılmak için rehber odaklı içerikler üretiyorum.

Yorumlar (0)

Yorum Yaz