OCR C#'ta PDF'leri Nasıl Okurum

C# ile IronOCR Kullanarak PDF'leri Nasıl Okuyabilirim

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronOCR, Tesseract tabanlı motoru aracılığıyla tüm PDF sürümlerini destekleyerek C#'ta tek satır kodla PDF dosyalarından metin çıkarmanızı sağlar.

PDF, 'Portable Document Format' (Taşınabilir Belge Formatı) anlamına gelir. Adobe tarafından geliştirilen ve herhangi bir kaynak belgenin yazı tiplerini, görüntülerini, grafiklerini ve düzenini oluşturmada kullanılan uygulamaya ve platforma bakılmaksızın koruyan bir dosya formatıdır. PDF dosyaları, kullanılan yazılım veya donanımdan bağımsız olarak belgeleri tutarlı bir formatta paylaşmak ve görüntülemek için genellikle kullanılır. IronOCR, eski PDF 1.0 spesifikasyonlarından en son PDF 2.0 standartlarına kadar çeşitli PDF belge sürümlerini işler.

Hızlı Başlangıç: Bir PDF Dosyasını Saniyeler İçinde OCR Yapalım

PDF'nize işaret eden bir OcrPdfInput oluşturarak IronOCR ile OCR'yi hızlı bir şekilde yapılandırın, ardından Read'yi çağırın. Bu örnek, IronOCR kullanarak bir PDF'den metin çıkarmayı gösterir.

  1. IronOCR aşağıdaki NuGet Paket Yöneticisi ile yükleyin

    PM > Install-Package IronOcr
  2. Bu kod parçacığını kopyalayın ve çalıştırın.

    using var result = new IronOcr.IronTesseract().Read(new IronOcr.OcrPdfInput("document.pdf", PdfContents.TextAndImages));
  3. Canlı ortamınızda test için dağıtım yapın

    Ücretsiz deneme ile bugün projenizde IronOCR kullanmaya başlayın

    arrow pointer


Tüm PDF Dosyası Nasıl Okunur?

OCR işlemini gerçekleştirmek için IronTesseract sınıfını örneklendirerek başlayın. Ardından, bir 'using' deyimi kullanarak bir OcrPdfInput nesnesi oluşturun ve PDF dosyasının yolunu bu nesneye aktarın. Son olarak, Read yöntemini kullanarak OCR işlemini gerçekleştirin. Bu yaklaşım, taranan PDF'ler (görüntü tabanlı) ve aranabilir PDF'ler (metin tabanlı) ile çalışarak çeşitli PDF türlerinden metin çıkarma için uygundur.

/* :path=/static-assets/ocr/content-code-examples/how-to/input-pdfs-read-pdf.cs */
using IronOcr;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Add PDF
using var pdfInput = new OcrPdfInput("Potter.pdf");
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(pdfInput);

// Access the extracted text
string extractedText = ocrResult.Text;
System.Console.WriteLine(extractedText);
/* :path=/static-assets/ocr/content-code-examples/how-to/input-pdfs-read-pdf.cs */
using IronOcr;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Add PDF
using var pdfInput = new OcrPdfInput("Potter.pdf");
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(pdfInput);

// Access the extracted text
string extractedText = ocrResult.Text;
System.Console.WriteLine(extractedText);
Imports IronOcr

' Instantiate IronTesseract
Dim ocrTesseract As New IronTesseract()

' Add PDF
Using pdfInput As New OcrPdfInput("Potter.pdf")
    ' Perform OCR
    Dim ocrResult As OcrResult = ocrTesseract.Read(pdfInput)

    ' Access the extracted text
    Dim extractedText As String = ocrResult.Text
    System.Console.WriteLine(extractedText)
End Using
$vbLabelText   $csharpLabel
Harry Potter metninin biçimlendirilmiş hali ve PDF metin çıkarımını gösteren düz metin çıktısı ile bölünmüş görünüm

Çoğu durumda, DPI özelliğini belirtmeye gerek yoktur. Ancak, OcrPdfInput yapısında yüksek bir DPI değeri belirtilmesi okuma doğruluğunu artırabilir. Varsayılan DPI ayarı, çoğu standart PDF belgesi için genellikle yeterlidir, ancak özel belgeler ayarlamadan faydalanabilir.

DPI Ayarları Ne Zaman Ayarlanmalıdır?

DPI (Inç Başına Nokta) ayarları, düşük çözünürlüklü taramalı belgeler veya küçük metin içeren PDF'lerle uğraşırken kritik hale gelir. Optimum sonuçlar için, şu durumlarda DPI ayarlarını ayarlamayı düşünün:

  • 200 DPI altındaki taranmış belgelerle çalışmak
  • Tarihi veya arşiv PDF'leri işleme
  • Karmaşık düzenler veya küçük yazı tipleriyle uğraşmak
  • Varsayılan ayarlarla doğruluk sorunlarıyla karşılaşmak

Çoğu OCR işlemi için 300 DPI önerilirken, çok küçük metin veya ayrıntılı belgeler için 600 DPI gerekebilir.

IronOCR'un PDF dışında desteklediği dosya formatları nelerdir?

IronOCR, PDF'lerin ötesinde birçok dosya formatı için kapsamlı destek sunar. Çeşitli formatlarda görüntü işleyebilirsiniz:

  • Standart fotoğraflar için JPEG/JPG
  • Şeffaf görüntüler için PNG
  • Çok sayfalı belgeler için TIFF
  • Sıkıştırılmamış görüntüler için BMP
  • Basit grafikler için GIF

Ayrıca, IronOCR PDF akışlarını doğrudan bellekten işleyebilir, web uygulamaları ve bulut hizmetleri için uygundur.

PDF İçerik Türleriyle Çalışmak

PDF'leri işlerken içerik türünü belirterek performansı optimize edebilirsiniz. PdfContents enum'u, belirli içeriği hedeflemenizi sağlar:

// For text-only PDFs (faster processing)
var textOnlyPdf = new OcrPdfInput("document.pdf", PdfContents.Text);

// For image-only PDFs (scanned documents)
var imageOnlyPdf = new OcrPdfInput("scanned.pdf", PdfContents.Images);

// For mixed content (default)
var mixedPdf = new OcrPdfInput("mixed.pdf", PdfContents.TextAndImages);
// For text-only PDFs (faster processing)
var textOnlyPdf = new OcrPdfInput("document.pdf", PdfContents.Text);

// For image-only PDFs (scanned documents)
var imageOnlyPdf = new OcrPdfInput("scanned.pdf", PdfContents.Images);

// For mixed content (default)
var mixedPdf = new OcrPdfInput("mixed.pdf", PdfContents.TextAndImages);
' For text-only PDFs (faster processing)
Dim textOnlyPdf = New OcrPdfInput("document.pdf", PdfContents.Text)

' For image-only PDFs (scanned documents)
Dim imageOnlyPdf = New OcrPdfInput("scanned.pdf", PdfContents.Images)

' For mixed content (default)
Dim mixedPdf = New OcrPdfInput("mixed.pdf", PdfContents.TextAndImages)
$vbLabelText   $csharpLabel

Bir PDF'den Belirli Sayfalar Nasıl Okunur?

Bir PDF belgesinden belirli sayfaları okurken, içe aktarma için sayfa dizin numarasını belirtin. Bunu yapmak için, PageIndices parametresini oluştururken sayfa dizinlerinin listesini OcrPdfInput parametresine aktarın. Sayfa dizinlerinin sıfır tabanlı numaralandırma kullandığını unutmayın. Bu özellik, sadece belirli sayfaların ilgili bilgileri içeren büyük belgelerle çalışırken özellikle faydalıdır.

:path=/static-assets/ocr/content-code-examples/how-to/input-pdfs-read-pdf-pages.cs
using IronOcr;
using System.Collections.Generic;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Create page indices list
List<int> pageIndices = new List<int>() { 0, 2 };

// Add PDF
using var pdfInput = new OcrPdfInput("Potter.pdf", PageIndices: pageIndices);
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(pdfInput);
Imports IronOcr
Imports System.Collections.Generic

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Create page indices list
Private pageIndices As New List(Of Integer)() From {0, 2}

' Add PDF
Private pdfInput = New OcrPdfInput("Potter.pdf", PageIndices:= pageIndices)
' Perform OCR
Private ocrResult As OcrResult = ocrTesseract.Read(pdfInput)
$vbLabelText   $csharpLabel

Sayfa numaralandırması neden sıfırdan başlar?

Sıfır tabanlı indeksleme, C# ve çoğu programlama dilinde standart bir gelenektir. Bu, ilk sayfanın indeks 0, ikinci sayfanın indeks 1 olduğu anlamına gelir, ve böyle devam eder. Dizi indekslemesiyle olan bu tutarlılık, geliştiricilerin sayfa koleksiyonlarıyla programatik olarak daha kolay çalışmasını sağlar. İnsan okuyucusu sayfa numaralarını (1, 2, 3...) indekslere çevirirken, sadece bir çıkarma yaparak bunu yapabilirsiniz.

Ardışık olmayan sayfaları nasıl okuyabilirim?

IronOCR ile ardışık olmayan sayfaları okumak son derece basittir. Sadece istediğiniz sayfa dizinlerini listede her hangi bir sıra ile ekleyin. Örneğin:

// Read pages 1, 3, 5, and 10 (using zero-based indices)
List<int> pageIndices = new List<int>() { 0, 2, 4, 9 };

// Or use LINQ for range-based selection
var evenPages = Enumerable.Range(0, 10).Where(x => x % 2 == 0).ToList();
// Read pages 1, 3, 5, and 10 (using zero-based indices)
List<int> pageIndices = new List<int>() { 0, 2, 4, 9 };

// Or use LINQ for range-based selection
var evenPages = Enumerable.Range(0, 10).Where(x => x % 2 == 0).ToList();
Imports System.Collections.Generic
Imports System.Linq

' Read pages 1, 3, 5, and 10 (using zero-based indices)
Dim pageIndices As New List(Of Integer)() From {0, 2, 4, 9}

' Or use LINQ for range-based selection
Dim evenPages = Enumerable.Range(0, 10).Where(Function(x) x Mod 2 = 0).ToList()
$vbLabelText   $csharpLabel

OCR motoru yalnızca belirtilen sayfaları işler, bu da büyük belgeler için performansı önemli ölçüde artırır.

Geçersiz Sayfa Numaraları Belirtirsem Ne Olur?

Eğer belgenin sayfa sayısını aşan sayfa dizinleri belirtirseniz, IronOCR bir istisna atar. İşleme başlamadan önce geçerli indekslere sahip olduğunuzdan emin olmak adına hata yönetimi uygulayın veya sayfa sayılarını doğrulayın. İndekslerinizin geçerli olduğundan emin olmak için OCR çalıştırmadan önce bir PDF'nin toplam sayfa sayısını kontrol edebilirsiniz.

Bir PDF'nin Belirli Bölgesi Nasıl OCR Yapılır?

Okunacak alanı daraltarak okuma verimliliğini önemli ölçüde artırabilirsiniz. Bunu başarmak için, okunması gereken içe aktarılan PDF'nin tam bölgesini belirtin. Aşağıdaki kod örneğinde, IronOCR sadece bölüm numarasını ve başlığını çıkarmaya odaklanır. Bu teknik, görüntüler için OCR bölgeleri tanımlamaya benzer olup, hem hız hem de doğruluğu artırır.

:path=/static-assets/ocr/content-code-examples/how-to/input-pdfs-read-specific-region.cs
using IronOcr;
using IronSoftware.Drawing;
using System;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Specify crop regions
Rectangle[] scanRegions = { new Rectangle(550, 100, 600, 300) };

// Add PDF
using (var pdfInput = new OcrPdfInput("Potter.pdf", ContentAreas: scanRegions))
{
    // Perform OCR
    OcrResult ocrResult = ocrTesseract.Read(pdfInput);

    // Output the result to console
    Console.WriteLine(ocrResult.Text);
}
Imports IronOcr
Imports IronSoftware.Drawing
Imports System

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Specify crop regions
Private scanRegions() As Rectangle = { New Rectangle(550, 100, 600, 300) }

' Add PDF
Using pdfInput = New OcrPdfInput("Potter.pdf", ContentAreas:= scanRegions)
	' Perform OCR
	Dim ocrResult As OcrResult = ocrTesseract.Read(pdfInput)

	' Output the result to console
	Console.WriteLine(ocrResult.Text)
End Using
$vbLabelText   $csharpLabel

Doğru Dikdörtgen Koordinatlarını Nasıl Belirlerim?

OCR işlemi için bölüm başlığını seçen kırmızı dikdörtgenli PDF, Visual Studio konsolunda tamamlanmış yürütmeyi gösteriyor

Doğru koordinatları bulmak, PDF'nin koordinat sistemini anlamayı gerektirir. Rectangle yapıcı dört parametre alır: X (yatay konum), Y (dikey konum), Width ve Height. Tüm ölçümler piksel cinsindendir. Cetvel özellikli PDF görüntüleyiciler veya hata ayıklama araçları gibi araçlar, tam koordinatları belirlemeye yardımcı olabilir. Alternatif olarak, seçim alanınızı iyileştirmek için küçük ayarlamalarla deneme yanılma yöntemi kullanın.

Daha kesin bölge tanımı için, işlenen alanları görselleştirmek üzere hata ayıklama için metin vurgulama özelliğini kullanabilirsiniz.

Tek Bir İşlemde Birden Fazla Bölge Belirtebilir miyim?

Evet, IronOCR bir OCR işleminde birden fazla bölgeyi destekler. Dizine birden fazla Rectangle nesnesi eklemeniz yeterlidir:

Rectangle[] scanRegions = { 
    new Rectangle(50, 50, 200, 100),    // Header region
    new Rectangle(50, 200, 500, 300),   // Main content region
    new Rectangle(50, 550, 200, 50)     // Footer region
};
Rectangle[] scanRegions = { 
    new Rectangle(50, 50, 200, 100),    // Header region
    new Rectangle(50, 200, 500, 300),   // Main content region
    new Rectangle(50, 550, 200, 50)     // Footer region
};
Imports System.Drawing

Dim scanRegions As Rectangle() = {
    New Rectangle(50, 50, 200, 100),    ' Header region
    New Rectangle(50, 200, 500, 300),   ' Main content region
    New Rectangle(50, 550, 200, 50)     ' Footer region
}
$vbLabelText   $csharpLabel

Her bölge ayrı ayrı işlenecek ve sonuçlar belirlenen sırada birleştirilecektir.

Bölgeye Özel OCR'yi Tam Sayfa Yerine Kullanmanın Avantajları Nelerdir?

Bölgeye özel OCR, birkaç avantaj sunar:

  • Performans: Daha küçük alanların işlenmesi önemli ölçüde daha hızlıdır
  • Doğruluk: Belirli bölgelere odaklanmak, ilgisiz içerikten kaynaklanan gürültüyü azaltır
  • Yapı: Formlar ve tablolardan veriler daha güvenilir bir şekilde çıkarılır
  • Maliyet etkinliği: Daha az işlem süresi, daha düşük hesaplama maliyetleri demektir

Bu yaklaşım, verilerin öngörülebilir konumlarda göründüğü, fatura, form veya raporlar gibi yapılandırılmış belgelerle çalışırken özellikle değerlidir. Karmaşık belge yapıları için, belgelerdeki tabloları okuma konusunda uzmanlaşmış tablo çıkarma tekniklerini keşfedin.

Hangi Gelişmiş PDF OCR Özellikleri Mevcuttur?

IronOCR, temel metin çıkarmanın ötesinde PDF işlemesi için ek yetenekler sunar. Aranabilir PDF'ler oluşturabilirsiniz, taranmış belgelerden metin tabakası ekleyerek, orijinal düzeni korurken arama ve kopyalama sağlar. Kütüphane aynı zamanda büyük PDF koleksiyonlarını daha hızlı işlemek için çok iş parçacıklılığı desteği sağlar.

.NET uygulamalarında OCR ile başlamak isteyen geliştiriciler için basit OCR örneklerini incelemek, IronOCR'un yeteneklerini ve en iyi uygulamalarını anlamak için sağlam bir temel sunar.

Karmaşık PDF Senaryolarını Yönetmek

Zorlu PDF belgeleriyle uğraşırken, IronOCR bazı gelişmiş özellikler sunar:

  1. Görüntü Ön İşleme: Metin netliğini artırmak için görüntü filtreleri uygulayın
  2. Çoklu Diller: Belgelerdeki birden çok dili aynı anda işleyin
  3. Özel Yapılandırmalar: Belirli belge türleri için OCR ayarlarını ince ayarlayın
  4. Dışa Aktarma Seçenekleri: Aranabilir PDF'ler ve hOCR HTML dahil çeşitli formatlarda sonuçları kaydedin

Bu özellikler, IronOCR'yi kurumsal düzeyde PDF işleme gereksinimleri için kapsamlı bir çözüm haline getirir.

Sıkça Sorulan Sorular

C#'ta bir PDF dosyasından nasıl metin çıkarırım?

IronOCR kullanarak PDF dosyalarından bir satır kod ile metin çıkarabilirsiniz. Basitçe bir IronTesseract örneği oluşturun ve OcrPdfInput ile Read yöntemini kullanın: `using var result = new IronOcr.IronTesseract().Read(new IronOcr.OcrPdfInput("document.pdf", PdfContents.TextAndImages));`. IronOCR hem taranmış (görüntü tabanlı) PDF'leri hem de aranabilir (metin tabanlı) PDF'leri yönetir.

Metin çıkarımı için hangi PDF sürümleri desteklenir?

IronOCR, eski PDF 1.0 spesifikasyonlarından en son PDF 2.0 standartlarına kadar tüm PDF sürümlerini destekler. OCR motoru, hangi PDF sürümüyle çalıştığınızdan bağımsız olarak doğruluğu sağlamak için Tesseract teknolojisi üzerine inşa edilmiştir.

PDF'den yalnızca belirli sayfaları tüm belgenin yerine okuyabilir miyim?

Evet, IronOCR, bir PDF'den belirli sayfaları okumanıza olanak tanır. Belgeyi tümüyle işlemden geçirmek yerine, OcrPdfInput nesnesini kullanarak hangi sayfalardan metin çıkarılacağını belirtebilirsiniz. Bu özellik, büyük belgeler için OCR işlemini daha verimli hale getirir.

Bir PDF dosyasında OCR için minimal iş akışı nedir?

IronOCR ile minimal iş akışı 5 adımdan oluşur: 1) C# kütüphanesini indirin, 2) PDF belgenizi hazırlayın, 3) PDF dosya yolu ile bir OcrPdfInput nesnesi oluşturun, 4) OCR işlemi için Read yöntemini kullanın ve 5) İsteğe bağlı olarak seçici okuma için sayfa dizinlerini belirtin.

PDF OCR için DPI ayarlarını ne zaman ayarlamalıyım?

IronOCR'un varsayılan DPI ayarları çoğu standart PDF için iyi çalışır, ancak düşük çözünürlüklü taranmış belgelerle (200 DPI'nın altında) veya küçük metin içeren PDF'lerle çalışırken DPI ayarlarını ayarlamayı düşünmelisiniz. OcrPdfInput yapısında daha yüksek DPI ayarları, özel belgeler için okuma doğruluğunu önemli ölçüde artırabilir.

OCR motoru hem taranmış hem de aranabilir PDF'lerle çalışıyor mu?

Evet, IronOCR, hem taranmış PDF'leri (görüntü tabanlı) hem de aranabilir PDF'leri (metin tabanlı) etkili bir şekilde işler. Tesseract tabanlı motor, farklı PDF türlerini otomatik olarak yönettiğinden, farklı yaklaşımlar gerektirmeden çeşitli PDF formatlarından metin çıkarmak için çok yönlüdür.

IronOCR mevcut uygulamalara entegre edilebilir mi?

IronOCR, C# kullanarak mevcut uygulamalara kolayca entegre edecek şekilde tasarlanmıştır, bu sayede geliştiriciler, yazılımlarına minimal çabayla OCR işlevselliği ekleyebilir.

IronOCR'yi belge yönetimi için kullanmanın faydaları nelerdir?

IronOCR'yi belge yönetimi için kullanmak, taranmış belgeleri aranabilir ve düzenlenebilir metne dönüştürerek iş akışını hızlandırır, manuel veri giriş ihtiyacını azaltır ve belge erişilebilirliğini artırır.

IronOCR veri doğruluğunu nasıl artırabilir?

IronOCR, gelişmiş tanıma algoritmaları ve görüntü düzeltme özellikleriyle veri doğruluğunu artırır, böylece metin çıkarım sürecinin hem güvenilir hem de kesin olmasını sağlar.

IronOCR için ücretsiz bir deneme mevcut mu?

Evet, Iron Software, IronOCR'nin özelliklerini ve yeteneklerini, bir satın alma kararı vermeden önce test edebilmek için ücretsiz bir deneme sunar.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku
Gözden Geçiren
Jeff Fritz
Jeffrey T. Fritz
Baş Program Yöneticisi - .NET Topluluğu Ekibi
Jeff, .NET ve Visual Studio ekipleri için bir Baş Program Yöneticisidir. .NET Conf sanal konferans serisinin baş yapımcısıdır ve haftada iki kez canlı yayınlanan 'Fritz and Friends' adlı bir akış programı sunar; burada izleyicilerle birlikte teknoloji konuşur ve kod yazar. Jeff, en büyük Microsoft geliştirici etkinlikleri için atölyeler, sunumlar ve içerik planları yazar, Microsoft Build, Microsoft Ignite, .NET Conf ve Microsoft MVP Summit gibi etkinliklerde yer alır.
Başlamaya Hazır mısınız?
Nuget İndirmeler 5,896,332 | Sürüm: 2026.5 just released
Still Scrolling Icon

Hâlâ Kaydırıyor Musunuz?

Hızlıca kanıt ister misiniz? PM > Install-Package IronOcr
örnek çalıştır görüntünüzün aranabilir metin haline gelmesini izleyin.