C#'da PDF'yi OCR Yapma: Taralı Belgelerden Metin Çıkarmak
Taranmis PDF belgeleri icin .NET geliştiriciler icin surekli bir zorluk sunar: metin sadece görüntüler olarak var olur, bu da aramayi, kopyalamayi veya programatik olarak işlemeyi imkansiz hale getirir. Optik Karakter Tanima (OCR), taranmis görüntüleri duzenlenebilir ve aranabilir veriye dönüştürerek bu durumu cozer -- kagit belgeleri, kamera cekimi görüntüleri veya herhangi bir görüntü bazli PDF dosyasini makine okunabilir metne dönüştürur. Hedef kagit arsivlerini dijital hale getirmek, veri cikartimi otomasyonu, veya belge işleme boru hattlari insa etmek olsun, C# icinde PDF dosyalarinda OCR gerceklestirme kabiliyeti kritik oneme sahiptir.
IronOCR, Tesseract 5 motoruna dayali olup dogruluk iyilestirmeleri ile geliştirilmis bir .NET OCR kutuphanesidir. Geliştiricilerin, az sayida kod satiri ile her tur PDF belgesinden -- taranmis veya değil -- metin cikartmasina olanak tanir. Bu makale, temel calisma akisi: temel PDF OCR, sayfa secici işleme, bolge odakli cikartma ve zorlu taramalar icin görüntü on işleme içerikleriyle ilgili bilgiler verir.
C#'da Bir PDF Uzerinde OCR Nasıl Yurutulur?
.NET'de PDF metin cikartiminin en hizli yolu, IronOCR'u NuGet araciligiyla yuklemekle başlar. Proje dizininizde bir terminal açın ve çalıştırın:
dotnet add package IronOcr
dotnet add package IronOcr
Paket yuklendikten sonra, su yukari seviye program bir taranmis PDF okur ve cikartilan metni yazdirir:
using IronOcr;
// Initialize the OCR engine
var ocr = new IronTesseract();
// Load the PDF and perform OCR
using var input = new OcrInput();
input.LoadPdf("scanned-report.pdf");
// Run recognition
OcrResult result = ocr.Read(input);
// Access the extracted text
string text = result.Text;
Console.WriteLine(text);
using IronOcr;
// Initialize the OCR engine
var ocr = new IronTesseract();
// Load the PDF and perform OCR
using var input = new OcrInput();
input.LoadPdf("scanned-report.pdf");
// Run recognition
OcrResult result = ocr.Read(input);
// Access the extracted text
string text = result.Text;
Console.WriteLine(text);
Imports IronOcr
' Initialize the OCR engine
Dim ocr As New IronTesseract()
' Load the PDF and perform OCR
Using input As New OcrInput()
input.LoadPdf("scanned-report.pdf")
' Run recognition
Dim result As OcrResult = ocr.Read(input)
' Access the extracted text
Dim text As String = result.Text
Console.WriteLine(text)
End Using
Kod-141 sınıfı, .NET Core ve .NET Framework hedefleri için .NET-yerel optimizasyonlar ile birlikte Tesseract 5'i sarar. Kod-142 nesnesi PDF yüklemeyi ve iç sayfa işlemeyi yönetir. Kod-143 çağrıldığında, OCR süreci her sayfayı analiz eder ve tam çıkarılan metni içeren ve paragraflar, satırlar, kelimeler ve piksel koordinatları hakkında yapılandırılmış veriler içeren Kod-144 döner.
Sonuc, bir metin dosyasina yazilabilir, alt işleme mantiklarina gonderilebilir, bir veritabaninda saklanabilir veya bir belge indeksleme boru hattina beslenebilir. Altyapinin altinda calisan motor hakkinda daha fazla bilgi icin, Tesseract OCR belgelerine ve IronOCR API referansina bakin.
Girdi

Çıktı

Bir PDF'deki Belirli Sayfalari Nasıl Okursunuz?
Uzun bir belgenin her sayfasini işlemek, sadece belirli sayfalar ilgi cekici içerik bulundurdugunda zaman ve bellekte israf olur. IronOCR, sayfa dizinlerini sıfır tabanlı olarak LoadPdf'e geçirerek belirli sayfaları hedeflemenize olanak tanır:
using IronOcr;
using System.Collections.Generic;
var ocr = new IronTesseract();
// Specify pages to process (zero-based: 0 = first page)
var targetPages = new List<int> { 0, 2, 4 };
using var input = new OcrInput();
input.LoadPdf("lengthy-document.pdf", pageIndices: targetPages);
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;
using System.Collections.Generic;
var ocr = new IronTesseract();
// Specify pages to process (zero-based: 0 = first page)
var targetPages = new List<int> { 0, 2, 4 };
using var input = new OcrInput();
input.LoadPdf("lengthy-document.pdf", pageIndices: targetPages);
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr
Imports System.Collections.Generic
Dim ocr As New IronTesseract()
' Specify pages to process (zero-based: 0 = first page)
Dim targetPages As New List(Of Integer) From {0, 2, 4}
Using input As New OcrInput()
input.LoadPdf("lengthy-document.pdf", pageIndices:=targetPages)
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
End Using
Secici sayfa yuklemesi, hem işleme suresini hem de bellek tuketimini azaltir, bu çok sayida sayfalik arşivlerle çalışırken, yalnızca bir avuç sayfada ihtiyaç duyulan verinin bulunduğu zaman önemlidir. Sıfır bazlı indeks düzeni, standart .NET koleksiyonlarıyla eşleşir: sayfa indeksi 0, belgenin ilk sayfasıdır.
Gerekli sayfalarin önceden bilinmediği belgeler icin, düşük DPI ile hızlı bir tam belge geçişi çalıştırmayı, ardından yalnızca o sayfalarda tam ayarlarla yeniden çalışmayı düşünün.
Sayfa düzeyinde kontrol hakkında daha fazla bilgi edinmek için IronOCR sayfa seçimi belgelerine göz atın.
Bir Sayfanın Belirli Bir Bölgesinden Veri Nasıl Cikartılır?
Fatura işlemde, form dijitalleştirme, ve yapısal belge ayrıştırma işlemleri sıklıkla bir sayfanın tamamını taramak yerine tanımlı bir alandan metin çıkartmayı gerektirir. IronOCR, her sayfanın hangi bölümlerinin analiz edileceğini belirten Rectangle nesneler dizisini kabul eden ContentAreas parametresi aracılığıyla bölge-hedefli OCR'yi destekler:
using IronOcr;
using IronSoftware.Drawing;
var ocr = new IronTesseract();
// Define the scan region: X, Y, Width, Height (all in pixels from top-left)
var invoiceFields = new Rectangle[]
{
new Rectangle(130, 290, 250, 50) // Invoice number field
};
using var input = new OcrInput();
input.LoadPdf("invoice.pdf", contentAreas: invoiceFields);
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;
using IronSoftware.Drawing;
var ocr = new IronTesseract();
// Define the scan region: X, Y, Width, Height (all in pixels from top-left)
var invoiceFields = new Rectangle[]
{
new Rectangle(130, 290, 250, 50) // Invoice number field
};
using var input = new OcrInput();
input.LoadPdf("invoice.pdf", contentAreas: invoiceFields);
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr
Imports IronSoftware.Drawing
Dim ocr As New IronTesseract()
' Define the scan region: X, Y, Width, Height (all in pixels from top-left)
Dim invoiceFields As Rectangle() = {
New Rectangle(130, 290, 250, 50) ' Invoice number field
}
Using input As New OcrInput()
input.LoadPdf("invoice.pdf", contentAreas:=invoiceFields)
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
End Using
Kod-148 oluşturucu, dört tam sayı parametresi alır: X koordinatı, Y koordinatı, genişlik ve yükseklik -- hepsi işlenen sayfanın sol üst köşesinden piksel cinsinden ölçülür. Tam sayfa yerine küçük bir alanı hedeflemek, hem OCR süresini azaltır hem de motorun çevresel gürültü veya alakasız metin alanları algılama olasılığını azaltır.
Toplu fatura işleme iş akışları için, yüzlerce belgenin aynı alan pozisyonundan yapılandırılmış verileri çekmek için result.Pages üzerinde dönme ile birleşik bölge çıkarımı kullanın. Her sayfa sonucu, içerik alanı için tanınan metni bağımsız olarak gösterir.
IronOCR içerik alanları örneği, çok bölgeli senaryolar için ek yapılandırma seçenekleri sunar.
Girdi

Çıktı

Taranmis Belgelerde OCR Dogrulugunu Nasıl Arttirabilirsiniz?
Gerçek dunyada taranmis belgeler sıklıkla kalite sorunlarıyla beraber gelir: eğik sayfalar, düşük çözünürlük veya tarama donanımı veya yazılımının neden olduğu dijital gürültü. IronOCR, tanıma motoru çalışmadan önce bu sorunları düzelten bir dizi görüntü ön işleme filtresi içerir:
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
// Load PDF at higher DPI for improved text recognition on small fonts
input.LoadPdf("poor-quality-scan.pdf", dpi: 300);
// Apply image correction filters
input.Deskew(); // Automatically straighten rotated pages
input.DeNoise(); // Remove scanning artifacts and speckles
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
// Load PDF at higher DPI for improved text recognition on small fonts
input.LoadPdf("poor-quality-scan.pdf", dpi: 300);
// Apply image correction filters
input.Deskew(); // Automatically straighten rotated pages
input.DeNoise(); // Remove scanning artifacts and speckles
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr
Dim ocr = New IronTesseract()
Using input = New OcrInput()
' Load PDF at higher DPI for improved text recognition on small fonts
input.LoadPdf("poor-quality-scan.pdf", dpi:=300)
' Apply image correction filters
input.Deskew() ' Automatically straighten rotated pages
input.DeNoise() ' Remove scanning artifacts and speckles
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
End Using
Kod-150 parametresi, tanıma çalıştırılmadan önce PDF sayfalarının hangi çözünürlükte işleneceğini kontrol eder. Daha yüksek değerler -- 200'den 300 DPI'ya kadar -- küçük veya yoğun metinler içeren belgelerde doğruluğu artırır, işleme sırasında biraz daha fazla bellek kullanımı pahasına. Kod-151 yöntemi sayfa döndürmeyi otomatik olarak algılar ve düzeltir. Kod-152, karakter tanıma adımını karıştırabilecek lekeleri ve artefaktları kaldırır.
Daha agresif görüntü düzeltme gerektiren belgeler için, IronOCR ayrıca kontrast iyileştirme, binarizasyon (sayfaları siyah-beyaza dönüştürme) ve ölçek ayarlamaları sağlar. Sıralı olarak birden fazla filtreyi birleştirmek, başka türlü karmakarışık çıktı üretecek taramalardan kullanılabilir metin elde edebilir. Kullanılabilir tüm ön işleme işlemlerinin tam listesi için IronOCR görüntü filtresi referansını gözden geçirin.
Sifre Korumasina Sahip ve Coklu Format Belgelere Nasıl Mudahale Edilir?
IronOCR, sadece standart PDF dosyaları ile sınırlı değildir. Kutuphanesi, belge işleme iş akışlarında sıklıkla karşılaşılan bir dizi girdi senaryosunu ele alır.
Sifre korumasina sahip PDF'ler, girdi oluşturma sırasında kimlik bilgileri girişiyle desteklenir:
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadPdf("protected.pdf", password: "secret123");
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadPdf("protected.pdf", password: "secret123");
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr
Dim ocr As New IronTesseract()
Using input As New OcrInput()
input.LoadPdf("protected.pdf", password:="secret123")
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
End Using
Görüntü formatları -- PNG, JPEG, TIFF, BMP, GIF ve çok sayfalı TIFF -- karşılık gelen LoadImage veya LoadImageFrames yöntemleri ile yüklenir. Giriş formatından bağımsız olarak aynı ön işleme filtreleri ve bölge hedefleme seçenekleri uygulanır.
Çok dilli belgeler, IronOCR'un dil paketi sistemi aracılığıyla ele alınır. Kütüphane varsayılan olarak İngilizce ile birlikte gelir ve Latin, Kiril, CJK, Arapça ve diğer alfabeleri kapsayan 125'ten fazla ek dil paketini destekler. Read çağrılmadan önce ek dilleri yükleyin:
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.German;
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.German;
Dim ocr As New IronTesseract()
ocr.Language = OcrLanguage.German
Aynı sayfada birden çok dili karıştıran belgeler için, MultiLanguage modu mevcuttur. Bu, başlıkların, satır öğelerinin ve adreslerin farklı dillerde görünebileceği uluslararası ortamlarda fatura işlemesi için özellikle değerlidir.
Yükleme, Azure ve Docker konteynerlarını içeren bulut ortamlarıyla birlikte Windows, Linux ve macOS üzerinde çalışır.
Taranmış Belgelerden Aranabilir PDF'leri Nasıl Oluşturursunuz?
Metni dizelere çıkarmanın ötesinde, IronOCR aranabilir PDF çıktısı üretebilir -- burada orijinal taranan görüntü görsel katman olarak korunurken arama ve kopya işlemleri için görünmez bir metin katmanı gömülüdür. Bu, profesyonel belge tarayıcıları tarafından üretilen standart formattır.
IronOCR arama yapılabilir PDF özelliği bir OcrResult kabul eder ve yeni bir PDF dosyası yazar:
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadPdf("scanned-archive.pdf");
OcrResult result = ocr.Read(input);
// Save as a searchable PDF
result.SaveAsSearchablePdf("output-searchable.pdf");
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadPdf("scanned-archive.pdf");
OcrResult result = ocr.Read(input);
// Save as a searchable PDF
result.SaveAsSearchablePdf("output-searchable.pdf");
Imports IronOcr
Dim ocr As New IronTesseract()
Using input As New OcrInput()
input.LoadPdf("scanned-archive.pdf")
Dim result As OcrResult = ocr.Read(input)
' Save as a searchable PDF
result.SaveAsSearchablePdf("output-searchable.pdf")
End Using
Çıktı dosyası herhangi bir PDF okuyucuda açılabilir. Metin seçimi, arama ve kopya işlemleri gömülü metin katmanında çalışırken orijinal tarama görünümü korunur. Bu format genellikle uyumluluk arşivleri, yasal belge depoları ve kurumsal içerik yönetim sistemleri için gereklidir.
Ek çıktı formatları için, OcrResult nesnesi ayrıca sayfa başına güven puanlarını, kelime düzeyinde sınır kutularını ve yapılandırılmış paragraf verilerini sunar -- hepsi aşağı akış sınıflandırması veya endeksleme görevleri için kullanışlıdır.
Metinle Birlikte Barkodlar ve QR Kodları Nasıl Okursunuz?
Belge işleme kanalları genellikle aynı belgeden hem insan tarafından okunabilir metin hem de makine okunabilir kodlar çıkarmak zorundadır. IronOCR, ayrı bir kütüphane gerektirmeden aynı OCR geçişi sırasında barkodları ve QR kodlarını algılayıp çözebilir.
İşleme başlamadan önce IronTesseract örneğinde barkod okuma etkinleştirin:
using IronOcr;
var ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;
using var input = new OcrInput();
input.LoadPdf("shipment-labels.pdf");
OcrResult result = ocr.Read(input);
// Access recognized text
Console.WriteLine(result.Text);
// Access barcode data
foreach (var barcode in result.Barcodes)
{
Console.WriteLine($"Type: {barcode.Format}, Value: {barcode.Value}");
}
using IronOcr;
var ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;
using var input = new OcrInput();
input.LoadPdf("shipment-labels.pdf");
OcrResult result = ocr.Read(input);
// Access recognized text
Console.WriteLine(result.Text);
// Access barcode data
foreach (var barcode in result.Barcodes)
{
Console.WriteLine($"Type: {barcode.Format}, Value: {barcode.Value}");
}
Imports IronOcr
Dim ocr As New IronTesseract()
ocr.Configuration.ReadBarCodes = True
Using input As New OcrInput()
input.LoadPdf("shipment-labels.pdf")
Dim result As OcrResult = ocr.Read(input)
' Access recognized text
Console.WriteLine(result.Text)
' Access barcode data
For Each barcode In result.Barcodes
Console.WriteLine($"Type: {barcode.Format}, Value: {barcode.Value}")
Next
End Using
Bu, özellikle barkodlar ve basılı metinlerin taranan belgelerde birlikte göründüğü nakliye etiketi işlemesi, envanter yönetimi ve herhangi bir iş akışı için faydalıdır. IronOCR barkod okuma kılavuzu Code 128, QR kodları, Data Matrix ve PDF417 dahil desteklenen formatları kapsar.
IronOCR Giriş Türleri Arasındaki Fark Nedir?
IronOCR, her biri farklı senaryolar için uygun olan PDF dosyalarını yüklemek için iki ana yaklaşım sunar:
| Yaklaşım | Sınıf | En İyi Kullanım Amacı | Notlar |
|---|---|---|---|
| Genel giriş | OcrInput.LoadPdf() |
Çoğu kullanım senaryosu | Tüm ön işleme filtrelerini, sayfa seçimini, içerik alanlarını destekler |
| PDF'ye özgü | OcrPdfInput |
Basit senaryolar | Kolaylık sağlayıcı; daha az yapılandırma seçeneği |
| Görüntü dosyaları | OcrInput.LoadImage() |
PNG, JPEG, TIFF, BMP | PDF girişi ile aynı ön işleme ve bölgesel hedefleme |
| Çok sayfalı TIFF | OcrInput.LoadImageFrames() |
Faks arşivleri, tarayıcı çıktısı | Her kareyi ayrı bir sayfa olarak işler |
Çoğu üretim senaryosu için, OcrInput.LoadPdf() tam ön işleme ve yapılandırma API'sini açığa çıkaran tavsiye edilen yaklaşımdır. OcrPdfInput hızlı prototipleme veya varsayılan ayarların yeterli olduğu durumlar için iyi çalışır.
Sıradaki Adımlarınız Neler?
Yukarıdaki kod örnekleri, C#'ta PDF OCR için temel IronOCR iş akışlarını kapsar. Bir sonraki adımı atmak için kısa bir kontrol listesi:
- Paketini yükleyin:
dotnet add package IronOcrveya NuGet üzerinde IronOcr arayın - Temel örneği çalıştır: Tam kanal mantığını oluşturmadan önce örnek bir PDF'den metin çıkarmanızı doğrulayın
- Ön işleme uygulayın: Taralı belgelerle çalışırken,
DeskewveDeNoiseçağrılarını ekleyin ve temsilci örneklerle test edin - Ek özellikleri keşfedin: Aranabilir PDF çıktısı, barkod okuma, çok dil desteği ve yapılandırılmış veri çıktısı
- Yükleme yönergelerini gözden geçirin: Azure, Docker ve Linux yükleme makaleleri ortam tabanlı yapılandırmaya yönelik bilgiler içerir
- Ücretsiz deneme deneyin: Ücretsiz bir deneme başlatın ve bir lisansa taahhüt etmeden önce tam özellik setini test edin
- Bir lisans edinin: IronOCR lisanslama seçenekleri bireysel geliştiricilerden kurumsal dağıtımlara kadar her şeyi kapsar ve telif ücretsiz yeniden dağıtım sağlar
Belirli kullanım senaryoları hakkında sorular için, IronOCR nasıl yapılır kitaplığı onlarca senaryoyu kapsayan adım adım makaleler sunmaktadır. Tam API yüzeyi, IronOCR API referansında belgelidir.
Sıkça Sorulan Sorular
C#'ta bir PDF'yi OCR yapmak için minimum kod nedir?
IronOCR kullanarak, minimum kod şudur: bir IronTesseract örneği oluşturun, bir OcrInput oluşturun, input.LoadPdf'i dosya yoluyla çağırın, ardından ocr.Read(input) çağrısında bulunun. result.Text özelliği çıkarılan dizgeyi döndürür.
.NET projesine IronOCR nasıl yüklenir?
Terminalde 'dotnet add package IronOcr' çalıştırın veya Visual Studio'daki NuGet Paket Yöneticisi'nde IronOcr'yi arayın.
IronOCR bir PDF'nin yalnızca belirli sayfalarını işleyebilir mi?
Evet. Sayfa indeksleri parametresine sıfır tabanlı sayfa indekslerinden oluşan bir List
Tarama bir PDF'nin belirli bir bölgesinden metin nasıl çıkarılır?
LoadPdf'in contentAreas parametresine Rectangle nesneleri dizisi geçirin. Her bir dikdörtgen, sayfanın sol üst köşesinden itibaren piksel cinsinden X konumunu, Y konumunu, genişliği ve yüksekliği belirtir.
IronOCR taranmış belgeler için hangi ön işleme filtreleri sağlar?
IronOCR, sayfa dönüşünü düzeltme (Deskew), tarama artefaktlarını kaldırma (DeNoise), kontrast artırma, ikili hale getirme ve ölçek ayarlaması sağlar. Bunlar, düşük kaliteli taramalar üzerindeki doğruluğu artırmak için zincirlenebilir.
IronOCR, parola korumalı PDF dosyalarını destekliyor mu?
Evet. LoadPdf'in parola parametresine parola dizisini geçirin. Kütüphane, OCR için sayfaları işlemek üzere belgeyi deşifre eder.
IronOCR, arama yapilabilir PDF cikisi oluşturabilir mi?
Evet. ocr.Read(input) cagrildiktan sonra, çıktı dosya yolu ile birlikte result.SaveAsSearchablePdf cagrisi yapın. Ortaya çıkan PDF, gorunur katman olarak orijinal taramayi korur ve arama ve kopyalama işlemleri için gomülü bir görünmez metin katmani içerir.
IronOCR hangi dilleri destekler?
IronOCR, Latin, Kiril, CJK, Arapça ve diğer alfabeleri kapsayan 125'ten fazla dil paketi desteği sağlar. Read cagrılmadan önce IronTesseract orneği üzerindeki Dil özelliğini ayarlayın.
IronOCR, PDF belgelerinden barkod ve QR kodlarını okuyabilir mi?
Evet. Read cagrılmadan önce ocr.Configuration.ReadBarCodes'u true olarak ayarlayin. OcrResult.Barcodes koleksiyonu tüm algılanan kodlar için kod cözulen degerleri ve format turlerini icerir.
IronOCR Linux'ta ve Docker kaplarinda calisir mi?
Evet. IronOCR, Windows, Linux, macOS ve Azure dahil bulut ortamlarinda ve Docker kaplarinda dağıtimi destekler. IronSoftware belgeleri, ortama ozgu kurulum rehberleri icerir.



