IronOCR ile C# İçinde Aranabilir PDF'ler Kaydedin
IronOCR, C# geliştiricilerine, taranmış belgeleri ve görselleri OCR teknolojisi kullanarak aranabilir PDF'lere dönüştürmelerine olanak tanır, dosya, bayt veya akış olarak çıkış destekler, birkaç satır kod ile.
Aranabilir PDF, genellikle bir OCR (Optik Karakter Tanıma) PDF'si olarak adlandırılan, hem taranmış görseller hem de makine tarafından okunabilir metin içeren bir PDF belgesi türüdür. Bu PDF'ler, taranmış kağıt belgeler veya görseller üzerinde OCR işlemi gerçekleştirerek, görsellerdeki metni tanıyıp seçilebilir ve aranabilir metne dönüştürerek oluşturulur.
SaveAsSearchablePdf, ReadPhoto, ReadScreenShot ve ReadDocumentAdvanced'dan elde edilen sonuçlar üzerinde de mevcuttur ve fotoğraftan ve ileri düzey belge OCR iş akışlarından aranabilir PDF oluşturulmasına olanak tanır. Bu özellik, kağıt arşivleri dijitalleştirmek veya daha iyi belge yönetimi sağlamak için eski PDF'leri aranabilir hale getirmek adına özellikle kullanışlıdır.
Hızlı Başlangıç: Bir Satırda Aranabilir PDF Dışa Aktarma
RenderSearchablePdf = true ayarlayın, girdiniz üzerinde Read(...) çalıştırın ve SaveAsSearchablePdf(...) çağırın. IronOCR ile tamamen aranabilir bir PDF oluşturmak için tek yapmanız gereken bu.
-
IronOCR aşağıdaki NuGet Paket Yöneticisi ile yükleyin
-
Bu kod parçacığını kopyalayın ve çalıştırın.
new IronOcr.IronTesseract { Configuration = { RenderSearchablePdf = true } } .Read(new IronOcr.OcrImageInput("file.jpg")).SaveAsSearchablePdf("searchable.pdf"); -
Canlı ortamınızda test için dağıtım yapın
Ücretsiz deneme ile bugün projenizde IronOCR kullanmaya başlayın
Asgari İş Akışı (5 adım)
- Sonuçları aranabilir PDF olarak kaydetmek için bir C# kütüphanesi indirin
- Görseli ve PDF belgesini OCR için hazırlayın
- RenderSearchablePdf özelliğini
trueolarak ayarlayın - Aranabilir bir PDF dosyası çıkışı için
SaveAsSearchablePdfyöntemini kullanın - Aranabilir PDF'yi bayt ve akış olarak dışa aktarın
OCR Sonuçlarını Aranabilir PDF Olarak Nasıl Dışa Aktarırım?
IronOCR kullanarak sonucu aranabilir bir PDF olarak dışa aktarmak için Configuration.RenderSearchablePdf özelliğini true olarak ayarlayın, OCR sonuç nesnesini Read metodundan elde edin ve çıktı dosya yolu ile SaveAsSearchablePdf çağırın.
Giriş
Bir Harry Potter romanından, TIFF dosyası olarak taranan ve OcrImageInput üzerinden yüklenen tek bir sayfa. Sayfa, aranabilir PDF metin katmanı için gerçekçi bir girdi olan yoğun basılı metin içeriyor.
potter.tiff: Görünmeyen bir metin katmanına sahip aranabilir PDF üretmek için OCR girdi olarak kullanılan taranmış roman sayfası.
:path=/static-assets/ocr/content-code-examples/how-to/searchable-pdf-searchable-pdf.cs
using IronOcr;
// Create the OCR engine: defaults to English with balanced speed and accuracy
IronTesseract ocrTesseract = new IronTesseract();
// Required: without this flag the text overlay layer is not built, and SaveAsSearchablePdf produces a plain image PDF
ocrTesseract.Configuration.RenderSearchablePdf = true;
// Wrap the TIFF in OcrImageInput: handles DPI detection and page layout automatically
using var imageInput = new OcrImageInput("Potter.tiff");
// Run OCR; returns a result containing the recognized text and spatial layout data
OcrResult ocrResult = ocrTesseract.Read(imageInput);
// Write the output: the original scanned image is preserved with an invisible text layer on top
ocrResult.SaveAsSearchablePdf("searchablePdf.pdf");
Imports IronOcr
' Create the OCR engine: defaults to English with balanced speed and accuracy
Dim ocrTesseract As New IronTesseract()
' Required: without this flag the text overlay layer is not built, and SaveAsSearchablePdf produces a plain image PDF
ocrTesseract.Configuration.RenderSearchablePdf = True
' Wrap the TIFF in OcrImageInput: handles DPI detection and page layout automatically
Using imageInput As New OcrImageInput("Potter.tiff")
' Run OCR; returns a result containing the recognized text and spatial layout data
Dim ocrResult As OcrResult = ocrTesseract.Read(imageInput)
' Write the output: the original scanned image is preserved with an invisible text layer on top
ocrResult.SaveAsSearchablePdf("searchablePdf.pdf")
End Using
Çıktı
searchablePdf.pdf: Aranabilir PDF çıktısı. OCR metin katmanını doğrulamak için herhangi bir kelimeyi seçin ya da arayın.
Oluşan PDF, tanınan her kelimenin üzerine yerleştirilmiş görünmez bir metin katmanı ile orijinal taranan sayfa görüntüsünü gömer. Metin katmanının bulunduğunu doğrulamak için izleyicide herhangi bir kelimeyi seçin veya arayın.
IronOCR, örtüşme için özel bir yazı tipi kullanır, bu da metin boyutunun orijinaline göre biraz farklılık göstermesine neden olabilir.
Çok sayfalı TIFF dosyaları veya karmaşık belgelerle çalışırken, IronOCR tüm sayfaları otomatik olarak işler ve bunları çıktıya dahil eder. Kütüphane, sayfa sıralamasını ve metin örtüşme konumlandırmasını otomatik olarak işler, böylece doğru metin-görüntü eşlemesi sağlar.
Fotoğraflardan veya Gelişmiş Belge Taramalarından Aranabilir PDF'leri Nasıl Oluştururum?
Aranabilir PDF dışa aktarımı, ReadPhoto, ReadScreenShot veya ReadDocumentAdvanced kullanılırken de mevcuttur. Bu yöntemlerin her biri, SaveAsSearchablePdf destekleyen bir sonuç türü döndürür.
Bu yöntemleri çağırırken isteğe bağlı olarak bir ModelType geçebilirsiniz. Varsayılan Normal'dir, oysa Enhanced daha iyi doğruluk sağlar, ancak hızdan ödün verir.
Giriş
Duvara boyanmış bir metni olan bir duvar resmi fotoğrafı, LoadImage yoluyla yüklendi. Sahne, gerçek dünyadaki bir ortamda gömülü birçok kelime içeriyor ve bu, ReadPhoto ve Enhanced modeli için pratik bir test yapıyor.
photo.png: ReadPhoto üzerinden Enhanced modeliyle yüklenmiş duvar duvarı fotoğrafı ve aranabilir PDF üretmek için kullanıldı.
:path=/static-assets/ocr/content-code-examples/how-to/searchable-pdf-3.cs
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("photo.png");
// ReadPhoto with Enhanced model
OcrPhotoResult photoResult = ocr.ReadPhoto(input, ModelType.Enhanced);
Console.WriteLine(photoResult.Text);
// Save as searchable PDF
byte[] pdfBytes = photoResult.SaveAsSearchablePdfBytes();
File.WriteAllBytes("searchable-photo.pdf", pdfBytes);
Imports IronOcr
Dim ocr As New IronTesseract()
Using input As New OcrInput()
input.LoadImage("photo.png")
' ReadPhoto with Enhanced model
Dim photoResult As OcrPhotoResult = ocr.ReadPhoto(input, ModelType.Enhanced)
Console.WriteLine(photoResult.Text)
' Save as searchable PDF
Dim pdfBytes As Byte() = photoResult.SaveAsSearchablePdfBytes()
File.WriteAllBytes("searchable-photo.pdf", pdfBytes)
End Using
Çıktı
searchable-photo.pdf: ReadPhoto'dan elde edilen aranabilir PDF çıktısı. Metin katmanı, herhangi bir PDF izleyicisi aracılığıyla tam metin aramasını destekler.
Elde edilen aranabilir PDF, tanınan kelimeler üzerinde görünmez bir metin katmanı içerir. PDF izleyicisinde 'Milk' araması, orijinal fotoğraftaki boyalı metinden doğrudan çıkarılan 3 eşleşme döndürür.
Aynı yaklaşım, bir OcrDocAdvancedResult döndüren ReadDocumentAdvanced ile çalışır:
Giriş
Tarama yoluyla yüklenen bir fatura, LoadImage. Satıcı adı, satır öğeleri ve toplamlar gibi yapılandırılmış alanlar içerir; ReadDocumentAdvanced ile Enhanced modeli tanır ve aranabilir bir metin katmanı olarak gömer.
invoice.png: OcrInput'a yüklenmiş ve Enhanced model ile ReadDocumentAdvanced'e geçirilmiş taranmış fatura.
:path=/static-assets/ocr/content-code-examples/how-to/searchable-pdf-4.cs
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("invoice.png");
// ReadDocumentAdvanced with Enhanced model
OcrDocAdvancedResult docResult = ocr.ReadDocumentAdvanced(input, ModelType.Enhanced);
byte[] docPdfBytes = docResult.SaveAsSearchablePdfBytes();
File.WriteAllBytes("searchable-doc.pdf", docPdfBytes);
Imports IronOcr
Dim ocr As New IronTesseract()
Using input As New OcrInput()
input.LoadImage("invoice.png")
' ReadDocumentAdvanced with Enhanced model
Dim docResult As OcrDocAdvancedResult = ocr.ReadDocumentAdvanced(input, ModelType.Enhanced)
Dim docPdfBytes As Byte() = docResult.SaveAsSearchablePdfBytes()
File.WriteAllBytes("searchable-doc.pdf", docPdfBytes)
End Using
Çıktı
searchable-doc.pdf: ReadDocumentAdvanced'den elde edilen aranabilir PDF çıktısı. Fatura alanları seçilebilir ve aranabilir.
SaveAsSearchablePdf, ReadPassport veya ReadLicensePlate sonuçları için desteklenmez ve bir ExtensionAdvancedScanException atar.
Çok Sayfalı Belgelerle Çalışma
Çok sayfalı belgeler üzerindeki PDF OCR işlemleriyle çalışırken, IronOCR her sayfayı ardışık olarak işler ve orijinal belge yapısını korur.
Giriş
Hartwell Capital Management'ten, OcrPdfInput ile yüklenen 11 sayfalık yıllık rapor. 1-10 (indeksler 0-9) sayfaları PageIndices aralığı kullanılarak seçilir ve tek bir Read çağrısında işlenir.
multi-page-scan.pdf: Çok sayfalı aranabilir PDF dönüştürme için giriş olarak kullanılan 11 sayfalık Hartwell Capital Management yıllık raporu.
:path=/static-assets/ocr/content-code-examples/how-to/searchable-pdf-multi-page.cs
using IronOcr;
// Create the OCR engine. RenderSearchablePdf is false by default; no need to set it when using OcrPdfInput directly
var ocrTesseract = new IronTesseract();
// Load pages 1–10 (indices 0–9) only; PageIndices avoids loading and OCR-ing the full document unnecessarily
using var pdfInput = new OcrPdfInput("multi-page-scan.pdf", PageIndices: Enumerable.Range(0, 10));
// Run OCR across all selected pages in order
OcrResult result = ocrTesseract.Read(pdfInput);
// Write the searchable PDF; true = apply the input's image filters to the embedded page images in the output
result.SaveAsSearchablePdf("searchable-multi-page.pdf", true);
Imports IronOcr
' Create the OCR engine. RenderSearchablePdf is false by default; no need to set it when using OcrPdfInput directly
Dim ocrTesseract As New IronTesseract()
' Load pages 1–10 (indices 0–9) only; PageIndices avoids loading and OCR-ing the full document unnecessarily
Using pdfInput As New OcrPdfInput("multi-page-scan.pdf", PageIndices:=Enumerable.Range(0, 10))
' Run OCR across all selected pages in order
Dim result As OcrResult = ocrTesseract.Read(pdfInput)
' Write the searchable PDF; true = apply the input's image filters to the embedded page images in the output
result.SaveAsSearchablePdf("searchable-multi-page.pdf", True)
End Using
Çıktı
searchable-multi-page.pdf: 10 sayfalık aranabilir PDF çıktısı. Her sayfa, tam metin araması için görünmez bir metin katmanına sahiptir.
Elde edilen PDF, orijinal raporun (sayfalar 1-10) 10 sayfasını içerir ve her biri çıkarılan içeriği seçilebilir ve herhangi bir PDF izleyicisinde aranabilir yapan görünmez bir metin katmanına sahiptir.
Aranabilir PDF Oluştururken Filtreleri Nasıl Uygularım?
SaveAsSearchablePdf ikinci parametre, gömülü çıkışa görüntü filtrelerinin uygulanıp uygulanmayacağını kontrol eden bir boole kabul eder. Görüntü optimizasyon filtrelerini kullanmak, özellikle düşük kaliteli taramalar ile çalışırken OCR doğruluğunu önemli ölçüde artırabilir.
Aşağıdaki örnek, gri tonlama filtresini uygular ve filtrelenmiş resmi gömülü aranabilir PDF çıktısına eklemek için ikinci argüman olarak true geçirir.
:path=/static-assets/ocr/content-code-examples/how-to/image-quality-correction-searchable-pdf.cs
using IronOcr;
// Create OCR engine: filters are applied at the OcrInput level, so no configuration changes are needed here
var ocr = new IronTesseract();
var ocrInput = new OcrInput();
// Load the scanned PDF as the OCR source
ocrInput.LoadPdf("invoice.pdf");
// Convert to grayscale: removes color noise that can reduce OCR accuracy on color-printed documents
ocrInput.ToGrayScale();
// Run OCR on the preprocessed input
OcrResult result = ocr.Read(ocrInput);
// Write the searchable PDF; true = embed the grayscale-filtered image rather than the original color scan
result.SaveAsSearchablePdf("outputGrayscale.pdf", true);
Imports IronOcr
' Create OCR engine: filters are applied at the OcrInput level, so no configuration changes are needed here
Dim ocr As New IronTesseract()
Dim ocrInput As New OcrInput()
' Load the scanned PDF as the OCR source
ocrInput.LoadPdf("invoice.pdf")
' Convert to grayscale: removes color noise that can reduce OCR accuracy on color-printed documents
ocrInput.ToGrayScale()
' Run OCR on the preprocessed input
Dim result As OcrResult = ocr.Read(ocrInput)
' Write the searchable PDF; True = embed the grayscale-filtered image rather than the original color scan
result.SaveAsSearchablePdf("outputGrayscale.pdf", True)
En iyi sonuçlar için, belgenizin türü için en iyi filtre kombinasyonunu otomatik olarak belirlemek için Filtre Sihirbazını kullanmayı düşünün. Bu araç, girişinizi analiz eder ve uygun ön işleme adımlarını önerir.
Aranabilir PDF'lerde Yanlış Karakterleri Nasıl Düzeltirim?
Metin PDF'de görsel olarak doğru görünüyorsa ancak arama yaparken veya kopyalarken bozuk karakterler gösteriyorsa, sorun, aranabilir metin katmanında varsayılan olarak kullanılan yazı tipinden kaynaklanmaktadır. Varsayılan olarak, SaveAsSearchablePdf tüm Unicode karakterlerini tam olarak desteklemeyen Times New Roman kullanır. Bu, aksanlı veya ASCII dışı karakterlerle dillere etki eder.
Bunu düzeltmek için üçüncü parametre olarak Unicode uyumlu bir yazı tipi dosyası sağlayın:
result.SaveAsSearchablePdf("output.pdf", false, "Fonts/LiberationSerif-Regular.ttf");
result.SaveAsSearchablePdf("output.pdf", false, "Fonts/LiberationSerif-Regular.ttf");
result.SaveAsSearchablePdf("output.pdf", False, "Fonts/LiberationSerif-Regular.ttf")
Ayrıca dördüncü bir parametre olarak özel bir yazı tipi adı belirtebilirsiniz:
result.SaveAsSearchablePdf("output.pdf", false, "Fonts/LiberationSerif-Regular.ttf", "MyFont");
result.SaveAsSearchablePdf("output.pdf", false, "Fonts/LiberationSerif-Regular.ttf", "MyFont");
result.SaveAsSearchablePdf("output.pdf", False, "Fonts/LiberationSerif-Regular.ttf", "MyFont")
OcrResult, OcrPhotoResult ve OcrDocAdvancedResult dahil olmak üzere tüm sonuç türleri için geçerlidir, bu nedenle hangi okuma yöntemi sonucunuzu üretmiş olursa olsun düzeltme çalışır.
Bu, başlangıçta Times New Roman fontu ile dizilmiş belgeler için Liberation Serif önerilir çünkü orijinal boşlukları ve düzeni metrik olarak korur. Genel amaçlı çok dilli kullanım için, Noto Sans veya DejaVu Sans iyi alternatiflerdir.
Bir dosya yoluna yazmanın mümkün olmadığı senaryolar için, IronOCR aranabilir PDF'yi bir bayt dizisi veya akış olarak geri döndürmeyi de destekler.
Aranabilir PDF'leri Bayt veya Akış Olarak Nasıl Dışa Aktarırım?
Aranabilir PDF çıktısı, SaveAsSearchablePdfBytes ve SaveAsSearchablePdfStream yöntemleri kullanılarak byte veya akış olarak da işlenebilir. Aşağıdaki kod örneği, bu yöntemlerin nasıl kullanılacağını gösterir.
:path=/static-assets/ocr/content-code-examples/how-to/searchable-pdf-searchable-pdf-byte-stream.cs
// Return as a byte array: suited for storing in a database or sending in an HTTP response body
byte[] pdfByte = ocrResult.SaveAsSearchablePdfBytes();
// Return as a stream: suited for uploading to cloud storage or piping to another I/O operation without buffering the full file
Stream pdfStream = ocrResult.SaveAsSearchablePdfStream();
' Return as a byte array: suited for storing in a database or sending in an HTTP response body
Dim pdfByte As Byte() = ocrResult.SaveAsSearchablePdfBytes()
' Return as a stream: suited for uploading to cloud storage or piping to another I/O operation without buffering the full file
Dim pdfStream As Stream = ocrResult.SaveAsSearchablePdfStream()
Bu çıktı seçenekleri, dosya sistemi erişiminin sınırlı olabileceği bulut depolama hizmetleri, veritabanları veya web uygulamalarıyla entegre olurken özellikle kullanışlıdır. Aşağıdaki örnek pratik uygulamaları gösterir:
using IronOcr;
using System.IO;
public class SearchablePdfExporter
{
public async Task ProcessAndUploadPdf(string inputPath)
{
var ocr = new IronTesseract
{
Configuration = { RenderSearchablePdf = true }
};
// Process the input
using var input = new OcrImageInput(inputPath);
var result = ocr.Read(input);
// Option 1: Save to database as byte array
byte[] pdfBytes = result.SaveAsSearchablePdfBytes();
// Store pdfBytes in database BLOB field
// Option 2: Upload to cloud storage using stream
using (Stream pdfStream = result.SaveAsSearchablePdfStream())
{
// Upload stream to Azure Blob Storage, AWS S3, etc.
await UploadToCloudStorage(pdfStream, "searchable-output.pdf");
}
// Option 3: Return as web response
// return File(pdfBytes, "application/pdf", "searchable.pdf");
}
private async Task UploadToCloudStorage(Stream stream, string fileName)
{
// Cloud upload implementation
}
}
using IronOcr;
using System.IO;
public class SearchablePdfExporter
{
public async Task ProcessAndUploadPdf(string inputPath)
{
var ocr = new IronTesseract
{
Configuration = { RenderSearchablePdf = true }
};
// Process the input
using var input = new OcrImageInput(inputPath);
var result = ocr.Read(input);
// Option 1: Save to database as byte array
byte[] pdfBytes = result.SaveAsSearchablePdfBytes();
// Store pdfBytes in database BLOB field
// Option 2: Upload to cloud storage using stream
using (Stream pdfStream = result.SaveAsSearchablePdfStream())
{
// Upload stream to Azure Blob Storage, AWS S3, etc.
await UploadToCloudStorage(pdfStream, "searchable-output.pdf");
}
// Option 3: Return as web response
// return File(pdfBytes, "application/pdf", "searchable.pdf");
}
private async Task UploadToCloudStorage(Stream stream, string fileName)
{
// Cloud upload implementation
}
}
Imports IronOcr
Imports System.IO
Imports System.Threading.Tasks
Public Class SearchablePdfExporter
Public Async Function ProcessAndUploadPdf(inputPath As String) As Task
Dim ocr As New IronTesseract With {
.Configuration = New TesseractConfiguration With {
.RenderSearchablePdf = True
}
}
' Process the input
Using input As New OcrImageInput(inputPath)
Dim result = ocr.Read(input)
' Option 1: Save to database as byte array
Dim pdfBytes As Byte() = result.SaveAsSearchablePdfBytes()
' Store pdfBytes in database BLOB field
' Option 2: Upload to cloud storage using stream
Using pdfStream As Stream = result.SaveAsSearchablePdfStream()
' Upload stream to Azure Blob Storage, AWS S3, etc.
Await UploadToCloudStorage(pdfStream, "searchable-output.pdf")
End Using
' Option 3: Return as web response
' Return File(pdfBytes, "application/pdf", "searchable.pdf")
End Using
End Function
Private Async Function UploadToCloudStorage(stream As Stream, fileName As String) As Task
' Cloud upload implementation
End Function
End Class
Performans Hususları
Büyük belge hacimlerini işlerken, geçirgenliği artırmak için çok iş parçacıklı OCR işlemleri uygulamayı düşünün. IronOCR, eşzamanlı işlemeyi destekler ve böylece birden fazla belgeyi aynı anda yapabilmenizi sağlar:
using IronOcr;
using System.Threading.Tasks;
using System.Collections.Concurrent;
public class BatchPdfProcessor
{
private readonly IronTesseract _ocr;
public BatchPdfProcessor()
{
_ocr = new IronTesseract
{
Configuration =
{
RenderSearchablePdf = true,
// Configure for optimal performance
Language = OcrLanguage.English
}
};
}
public async Task ProcessBatchAsync(string[] filePaths)
{
var results = new ConcurrentBag<(string source, string output)>();
await Parallel.ForEachAsync(filePaths, async (filePath, ct) =>
{
using var input = new OcrImageInput(filePath);
var result = _ocr.Read(input);
string outputPath = Path.ChangeExtension(filePath, ".searchable.pdf");
result.SaveAsSearchablePdf(outputPath);
results.Add((filePath, outputPath));
});
Console.WriteLine($"Processed {results.Count} files");
}
}
using IronOcr;
using System.Threading.Tasks;
using System.Collections.Concurrent;
public class BatchPdfProcessor
{
private readonly IronTesseract _ocr;
public BatchPdfProcessor()
{
_ocr = new IronTesseract
{
Configuration =
{
RenderSearchablePdf = true,
// Configure for optimal performance
Language = OcrLanguage.English
}
};
}
public async Task ProcessBatchAsync(string[] filePaths)
{
var results = new ConcurrentBag<(string source, string output)>();
await Parallel.ForEachAsync(filePaths, async (filePath, ct) =>
{
using var input = new OcrImageInput(filePath);
var result = _ocr.Read(input);
string outputPath = Path.ChangeExtension(filePath, ".searchable.pdf");
result.SaveAsSearchablePdf(outputPath);
results.Add((filePath, outputPath));
});
Console.WriteLine($"Processed {results.Count} files");
}
}
Imports IronOcr
Imports System.Threading.Tasks
Imports System.Collections.Concurrent
Public Class BatchPdfProcessor
Private ReadOnly _ocr As IronTesseract
Public Sub New()
_ocr = New IronTesseract With {
.Configuration = New OcrConfiguration With {
.RenderSearchablePdf = True,
' Configure for optimal performance
.Language = OcrLanguage.English
}
}
End Sub
Public Async Function ProcessBatchAsync(filePaths As String()) As Task
Dim results As New ConcurrentBag(Of (source As String, output As String))()
Await Task.Run(Sub()
Parallel.ForEach(filePaths, Sub(filePath)
Using input As New OcrImageInput(filePath)
Dim result = _ocr.Read(input)
Dim outputPath As String = Path.ChangeExtension(filePath, ".searchable.pdf")
result.SaveAsSearchablePdf(outputPath)
results.Add((filePath, outputPath))
End Using
End Sub)
End Sub)
Console.WriteLine($"Processed {results.Count} files")
End Function
End Class
Gelişmiş Yapılandırma Seçenekleri
Daha gelişmiş senaryolar için, belirli belge türleri veya diller için OCR motorunu ince ayar yapmak amacıyla ayrıntılı Tesseract yapılandırmasını kullanabilirsiniz:
:path=/static-assets/ocr/content-code-examples/how-to/searchable-pdf-12.cs
var advancedOcr = new IronTesseract
{
Configuration =
{
RenderSearchablePdf = true,
TesseractVariables = new Dictionary<string, object>
{
{ "preserve_interword_spaces", 1 },
{ "tessedit_char_whitelist", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" }
},
PageSegmentationMode = TesseractPageSegmentationMode.SingleColumn
},
Language = OcrLanguage.EnglishBest
};
Imports System.Collections.Generic
Dim advancedOcr = New IronTesseract With {
.Configuration = New IronTesseractConfiguration With {
.RenderSearchablePdf = True,
.TesseractVariables = New Dictionary(Of String, Object) From {
{"preserve_interword_spaces", 1},
{"tessedit_char_whitelist", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"}
},
.PageSegmentationMode = TesseractPageSegmentationMode.SingleColumn
},
.Language = OcrLanguage.EnglishBest
}
Bu yapılandırma seçenekleri, üç çıkış yöntemi için de eşit olarak geçerlidir: SaveAsSearchablePdf, SaveAsSearchablePdfBytes ve SaveAsSearchablePdfStream. Aşağıdaki Özette, uygun çıktı formatlarıyla aranabilir PDF yöntemlerinin tam seti toplanmaktadır.
Özet
IronOCR ile aranabilir PDF'ler oluşturmak basit ve esnektir. Tekil görüntüleri, çok sayfalı belgeleri, ReadPhoto yoluyla fotoğrafları veya ReadDocumentAdvanced yoluyla ileri düzey belge taramalarını işlemek isteyip istemediğinizden bağımsız olarak, kütüphane çeşitli formatlarda aranabilir PDF'ler oluşturmak için sağlam yöntemler sağlar. Doğruluk için standart ve geliştirilmiş ML modelleri arasında seçim yapmak üzere ModelType parametresini kullanın. Dosyalar, baytlar veya akışlar olarak dışa aktarma yeteneği, masaüstü uygulamalardan bulut tabanlı hizmetlere kadar tüm uygulama mimarilerine uyum sağlar.
Daha gelişmiş OCR senaryoları için, kapsamlı kod örneklerini keşfedin veya ayrıntılı metod imzaları ve seçenekler için API belgelerine başvurun.
Sıkça Sorulan Sorular
Taranmış görüntülerden C# ile nasıl aranabilir bir PDF oluşturabilirim?
IronOCR kullanarak taranmış görüntülerden aranabilir PDF'ler oluşturmak basittir. Yapılandırmada RenderSearchablePdf'i true olarak ayarlayın, giriş görüntünüzde Read() yöntemini kullanın ve istediğiniz çıktı yolu ile SaveAsSearchablePdf() çağrısı yapın. IronOCR, görüntü üzerinde OCR yaparak orijinal görüntü üzerine seçilebilir, aranabilir metin içeren bir PDF oluşturacaktır.
Hangi dosya formatları aranabilir PDF'lere dönüştürülebilir?
IronOCR, JPG, PNG, TIFF ve mevcut PDF belgeleri dahil çeşitli görüntü formatlarını aranabilir PDF'lere dönüştürebilir. Kütüphane, tek sayfalık görüntüler ve çok sayfalı belgeler (örneğin TIFF dosyaları) gibi belgeleri otomatik olarak işler ve çıkan aranabilir PDF'de doğru sayfa sıralamasını korur.
Aranabilir PDF'leri dosyalar yerine bayt dizileri veya akışlar olarak dışa aktarabilir miyim?
Evet, IronOCR, aranabilir PDF'leri birden fazla formatta dışa aktarmayı destekler. SaveAsSearchablePdf() yöntemiyle doğrudan bir dosyaya kaydetmenin yanı sıra, OCR sonuçlarını bayt dizileri veya akışlar olarak da dışa aktarabilirsiniz; bu sayede geçici dosyalar oluşturmadan web uygulamaları, bulut depolama veya veritabanı sistemleriyle entegrasyon kolaylaşır.
Aranabilir bir PDF oluşturmak için gereken en az kod nedir?
IronOCR ile aranabilir bir PDF oluşturmak sadece bir satır kod ile yapılabilir: new IronOcr.IronTesseract { Configuration = { RenderSearchablePdf = true } }.Read(new IronOcr.OcrImageInput('file.jpg')).SaveAsSearchablePdf('searchable.pdf'). Bu, IronOCR'nin yalın API tasarımını göstermektedir.
Aranabilir PDF'lerde görünmez metin katmanı nasıl çalışır?
IronOCR, tanınan metni, PDF'deki orijinal görüntünün üzerine görünmez bir katman olarak konumlandırmayı otomatik olarak ele alır. Bu, kullanıcıların metni seçmesi ve araması için doğru metin-görüntü eşlemeyi sağlar ve orijinal belgenin görsel görünümünü korur. Kütüphane, bu süreçte özel yazı tipleri ve konumlandırma algoritmaları kullanır.
Fotoğraflardan veya ekran görüntülerinden aranabilir PDF'ler oluşturabilir miyim?
Evet, SaveAsSearchablePdf ReadPhoto, ReadScreenShot ve ReadDocumentAdvanced sonuçları için desteklenir. Her yöntem, aranabilir PDF dışa aktarmasını destekleyen bir sonuç türü döndürür, bu sayede gerçek dünya fotoğrafları, ekran görüntüleri veya karmaşık belge taramalarını aranabilir PDF'lere dönüştürmek kolaylaşır.
ModelType parametresi ne işe yarar?
ModelType parametresi, OCR için hangi önceden eğitilmiş ML modelinin kullanılacağını kontrol eder. Normal varsayılan olarak görüntüleri hızlı sonuçlar için 960 piksele küçültür. Enhanced 2560 piksele kadar görüntüleri destekleyerek daha detaylı ve yüksek çözünürlüklü girdiler için doğruluğu artırır.
Neden aranabilir PDF'deki kopyaladığım veya aradığım karakterler bozulmuş görünüyor?
Bu durum, aranabilir metin katmanında kullanılan varsayılan font (Times New Roman) tüm Unicode karakterlerini tam olarak desteklemediği için ortaya çıkar. Bunu düzeltmek için SaveAsSearchablePdf yönteminin üçüncü parametresi olarak Unicode uyumlu bir font dosyası geçin. Eğer belgeleriniz Times New Roman ile dizayn edilmişse ve diğer yazı tipleriyle aralık tutarsızlıkları fark ederseniz, aynı glyf ölçütlerini paylaşan ve orijinal düzeni koruyan Liberation Serif'i deneyin.
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.

