IronOCR ile C# kullanarak Arama Yapılabilir PDF'leri Kaydedin
IronOCR, taranmış belgeleri ve görüntüleri arama yapılabilir PDF'lere dönüştürmek için C# geliştiricilerine OCR teknolojisi sunar ve çıktıyı dosyalar, baytlar veya akışlar olarak sadece birkaç satır kod ile destekler.
Arama yapılabilir bir PDF, genellikle bir OCR (Optik Karakter Tanıma) PDF'si olarak adlandırılır, taranan görüntüleri ve makineler tarafından okunabilir metni içeren bir PDF belgesi türüdür. Bu PDF'ler, taranmış kağıt belgeleri veya görüntüler üzerinde OCR gerçekleştirerek, görüntülerdeki metni tanıyıp seçilebilir ve aranabilir metne dönüştürerek oluşturulur.
SaveAsSearchablePdf, fotoğraf ve gelişmiş belge OCR iş akışlarından aranabilir PDF oluşturmayı etkinleştirerek, ReadPhoto, ReadScreenShot ve ReadDocumentAdvanced sonuçlarında da mevcuttur. Bu özelliğin, kağıt arşivlerini dijitalleştirmede veya eski PDF'leri daha iyi belge yönetimi için aranabilir hale getirmede özellikle yararlı olduğu kanıtlanmıştır.
Hızlı Başlangıç: Tek Satırda Arama Yapılabilir PDF Dışa Aktarma
Girdinize RenderSearchablePdf = true ayarlayın, Read(...) çalıştırın ve SaveAsSearchablePdf(...) çağırın. IronOCR ile tam aranabilir bir PDF oluşturmak için bu kadar basit.
-
NuGet Paket Yöneticisi ile https://www.nuget.org/packages/IronOcr yükleyin
PM > Install-Package IronOcr -
Bu kod parçasını kopyalayıp çalıştırın.
new IronOcr.IronTesseract { Configuration = { RenderSearchablePdf = true } } .Read(new IronOcr.OcrImageInput("file.jpg")).SaveAsSearchablePdf("searchable.pdf"); -
Canlı ortamınızda test etmek için dağıtın
Bugün projenizde IronOCR kullanmaya başlayın ücretsiz deneme ile
Minimal Is Akisi (5 adimda)
- Sonuçları aranabilir PDF olarak kaydetmek için bir C# kütüphanesi indirin
- OCR için görüntü ve PDF belgesini hazırlayın
- RenderSearchablePdf özelliğini
trueolarak ayarlayın - Aranabilir bir PDF dosyası üretmek 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ım?
Sonucu aranabilir bir PDF olarak dışa aktarmak için, IronOCR kullanarak, Configuration.RenderSearchablePdf özelliğini true olarak ayarlayın, Read metodundan OCR sonuç nesnesini elde edin ve çıkış dosya yolu ile SaveAsSearchablePdf çağırın.
Girdi
TIFF dosyası olarak taranan ve OcrImageInput aracılığıyla yüklenen bir Harry Potter romanından tek bir sayfa. Sayfa, arama yapılabilir PDF metin katmanı testi için gerçekçi bir giriş olan yoğun basılı metin içerir.
potter.tiff: Görünmez bir metin katmanı ile aranabilir PDF üretmek için OCR girdisi 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: Arama yapılabilir PDF çıktısı. OCR metin katmanının doğruluğunu kontrol etmek için herhangi bir kelimeyi seçin veya arayın.
Elde edilen PDF, her tanınmış kelime üzerinde yerleştirilmiş görünmez bir metin katmanı olan orijinal taranmış sayfa görüntüsünü içerir. Metin katmanının mevcut olduğunu onaylamak için görüntüleyicide herhangi bir kelimeyi seçin veya arayın.
IronOCR, yerleştirmede özel bir yazı tipi kullanır, bu da orijinal metin boyutuna kıyasla küçük farklara neden olabilir.
Çok sayfalı TIFF dosyaları veya karmaşık belgelerle çalışırken, IronOCR tüm sayfaları otomatik olarak işler ve onları çıktıya dahil eder. Kütüphane, sayfa sırasını ve metin yerleştirme konumlarını otomatik olarak yönetir ve doğru metin-görüntü eşlemelerini sağlar.
Fotoğraflardan veya Gelişmiş Belge Taramalarından Aranabilir PDF'leri Nasıl Oluştururum?
Aranabilir PDF dışa aktarma, ReadPhoto, ReadScreenShot veya ReadDocumentAdvanced kullanıldığında da 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, ancak Enhanced hız pahasına daha iyi doğruluk sağlar.
Girdi
LoadImage aracılığıyla yüklenen, üzerinde boya ile yazı olan bir duvar resmi fotoğrafı. Sahne, gerçek dünyada yer alan çeşitli sözcükler içerdiğinden, ReadPhoto ile Enhanced modelinin pratik bir testi olur.
photo.png: Aranabilir PDF üretmek için ReadPhoto ile Yükseltilmiş model kullanılarak yüklenen duvar resmi fotoğrafı.
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.SaveAsSearchablePdf();
File.WriteAllBytes("searchable-photo.pdf", pdfBytes);
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.SaveAsSearchablePdf();
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.SaveAsSearchablePdf()
File.WriteAllBytes("searchable-photo.pdf", pdfBytes)
End Using
Çıktı
searchable-photo.pdf: ReadPhoto'dan arama yapılabilir PDF çıktısı. Metin katmanı, herhangi bir PDF görüntüleyicide tam metin aramasını destekler.
Ortaya çıkan aranabilir PDF, tanınan kelimelerin üzerine yerleşik görünmez bir metin katmanı içerir. PDF görüntüleyicide 'Süt' araması yapıldığında, orijinal fotoğraflamadan direkt çıkarılan 3 eşleşme döndürülür.
Aynı yaklaşım, bir OcrDocAdvancedResult döndüren ReadDocumentAdvanced ile çalışır:
Girdi
LoadImage üzerinden yüklenen taranmış bir fatura. Satıcı adı, sıra kalemlerinin ve toplamların Enhanced modeli ile tanınarak, aranabilir bir metin katmanı olarak ilişkilendirilmiş yapılandırılmış alanlar içerir.
invoice.png: Yükseltilmiş model ile ReadDocumentAdvanced'e geçirilen OcrInput'a yüklenen taranmış fatura.
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.SaveAsSearchablePdf();
File.WriteAllBytes("searchable-doc.pdf", docPdfBytes);
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.SaveAsSearchablePdf();
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.SaveAsSearchablePdf()
File.WriteAllBytes("searchable-doc.pdf", docPdfBytes)
End Using
Çıktı
searchable-doc.pdf: ReadDocumentAdvanced'dan gelen aranabilir PDF çıktısı. Fatura alanları seçilebilir ve aranabilir.
SaveAsSearchablePdf, ReadPassport veya ReadLicensePlate sonuçları için desteklenmez ve bir ExtensionAdvancedScanException fırlatır.
Çok Sayfalı Belgelerle Çalışma
Çok sayfalı belgelerde PDF OCR işlemleriyle uğraşırken, IronOCR her sayfayı sırayla işler ve orijinal belge yapısını korur.
Girdi
Hartwell Capital Management'tan 11 sayfalık yıllık rapor OcrPdfInput aracılığıyla yüklendi. 1-10 (dizin 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üşümü 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 sayfada tam metin araması için görünmez bir metin katmanı bulunur.
Elde edilen PDF, orijinal raporun 1-10 sayfalarını içerir ve her biri, herhangi bir PDF görüntüleyicide seçilebilir ve aranabilir hale getiren görünmez bir metin katmanına sahiptir.
Aranabilir PDF'ler Oluştururken Filtreleri Nasıl Uygularım?
SaveAsSearchablePdf ikinci parametresi, gömülü çıktıya görüntü filtrelerinin uygulanıp uygulanmayacağını kontrol eden bir bool kabul eder. Görüntü iyileştirme filtreleri kullanmak, özellikle düşük kaliteli taramalarla uğraşırken OCR doğruluğunu önemli ölçüde artırabilir.
Aşağıdaki örnek, gri tonlama filtresini uygular ve filtelenmiş görüntüyü aranabilir PDF çıktısına gömmek 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)
Optimal sonuçlar için, belirli belge türünüz için en iyi filtre kombinasyonunu otomatik olarak belirlemek üzere Filtre Sihirbazı'nı kullanmayı düşünün. Bu araç, girdisini 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 veya kopyalama yaptığınızda bozuk karakterler gösteriyorsa, sorun, aranabilir metin katmanında varsayılan 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 olmayan karakterlere sahip dilleri etkiler.
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")
Bir dördüncü parametre olarak özel bir yazı tipi adı da 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")
Bu, tüm sonuç türleri için geçerlidir: OcrResult, OcrPhotoResult ve OcrDocAdvancedResult, bu nedenle düzeltme, sonucu hangi okuma yönteminin ürettiğinden bağımsız olarak çalışır.
Bir dosya yoluna yazmanın mümkün olmadığı senaryolar için, IronOCR ayrıca arama yapılabilir PDF'yi bir bayt dizisi veya akış olarak döndürmeyi destekler.
Arama Yapılabilir PDF'leri Bayt veya Akış Olarak Nasıl Dışa Aktarabilirim?
Aranabilir PDF'nin çıktısı, SaveAsSearchablePdfBytes ve SaveAsSearchablePdfStream yöntemlerini kullanarak bayt veya akışlar olarak da ele alınabilir. Aşağıdaki kod örneği bu yöntemlerin nasıl kullanılacağını göstermektedir.
: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 çıkış seçenekleri, sınırlı dosya sistemi erişiminin olabileceği bulut depolama hizmetleri, veritabanları veya web uygulamaları ile entegre edilirken özellikle faydalıdır. Aşağıdaki örnek pratik uygulamaları göstermektedir:
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 Dikkatleri
Büyük miktarda belge işlerken, verimliliği artırmak için çoklu iş parçacıklı OCR işlemlerini uygulamayı düşünün. IronOCR eşzamanlı işlemeyi destekler ve aynı anda birden fazla belgeyi işlemenizi 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
İleri Seviye 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ı kullanabilirsiniz:
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
};
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 IronOcr
Dim advancedOcr As New IronTesseract With {
.Configuration = New TesseractConfiguration 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, SaveAsSearchablePdf, SaveAsSearchablePdfBytes ve SaveAsSearchablePdfStream üç çıkış yöntemine de eşit şekilde uygulanır. Aşağıdaki Özet, uygun çıktı formatlarıyla birlikte tam bir arama yapılabilir PDF yöntemleri dizisi toplar.
Özet
IronOCR ile arama yapılabilir PDF'ler oluşturmak basit ve esnektir. Tekli resimler, çok sayfalı belgeler, ReadPhoto aracılığıyla fotoğraflar veya ReadDocumentAdvanced aracılığıyla gelişmiş belge taramaları işlemeniz gerekip gerekmediğine bakılmaksızın, kütüphane çeşitli formatlarda aranabilir PDF'ler oluşturmak için sağlam yöntemler sunar. Doğruluk için standart ve geliştirilmiş ML modelleri arasında seçim yapmak için ModelType parametresini kullanın. Dosya, bayt veya akış olarak dışa aktarma yeteneği, masaüstü uygulamalarından bulut tabanlı hizmetlere kadar herhangi bir uygulama mimarisine uyarlanabilir hale getirir.
Daha gelişmiş OCR senaryoları için, kapsamlı kod örneklerini inceleyin veya ayrıntılı yöntem imzaları ve seçenekleri için API belgelerine bakın.
Sıkça Sorulan Sorular
Taralı görüntülerden C#'ta aranabilir bir PDF'yi nasıl oluşturabilirim?
IronOCR, taralı görüntülerden aranabilir PDF'ler oluşturmayı basit hale getirir. Yapılandırmada RenderSearchablePdf'i true olarak ayarlayın, giriş görüntünüzde Read() yöntemini kullanın ve istediğiniz çıkış yoluyla SaveAsSearchablePdf() çağrısı yapın. IronOCR, görüntüdeki OCR işlemini gerçekleştirir ve orijinal görüntü üzerinde seçilebilir, aranabilir metin içeren bir PDF oluşturur.
Hangi dosya biçimleri aranabilir PDF'lere dönüştürülebilir?
IronOCR, JPG, PNG, TIFF ve mevcut PDF belgelerini aranabilir PDF'lere dönüştürebilir. Kütüphane, tek sayfalık görüntüleri ve TIFF dosyaları gibi çok sayfalı belgeleri destekler, tüm sayfaları otomatik olarak işleyerek ve çıktıda doğru sayfa sıralamasını koruyarak aranabilir PDF oluşturur.
Aranabilir PDF'leri dosya yerine bayt dizileri veya akışlar olarak dışa aktarabilir miyim?
Evet, IronOCR çeşitli formatlarda aranabilir PDF'leri dışa aktarmayı destekler. SaveAsSearchablePdf() ile doğrudan bir dosyaya kaydetmenin yanı sıra, OCR sonuçlarını bayt dizileri veya akışlar olarak da dışa aktarabilirsiniz; bu, web uygulamaları, bulut depolama veya veritabanı sistemleriyle geçici dosyalar oluşturmadan entegrasyonunu kolaylaştırır.
Aranabilir bir PDF oluşturmak için gereken en az kod nedir?
IronOCR ile bir aranabilir PDF oluşturmak sadece bir satır kodla yapılabilir: new IronOcr.IronTesseract { Configuration = { RenderSearchablePdf = true } }.Read(new IronOcr.OcrImageInput('file.jpg')).SaveAsSearchablePdf('searchable.pdf'). Bu, IronOCR'un sadeleştirilmiş API tasarımını gösterir.
Aranabilir PDF'lerdeki görünmez metin katmanı nasıl çalışır?
IronOCR, tanınan metni PDF'nin orijinal görünümünü koruyarak seçilebilir ve aranabilir metin sağlamak için orijinal resimin üstüne görünmez bir katman olarak konumlandırmayı otomatik olarak yönetir. Kütüphane, bunun için özel yazı tipleri ve konumlandırma algoritmalarını kullanır.
Fotoğraflardan veya ekran görüntülerinden aranabilir PDF'ler oluşturabilir miyim?
Evet, SaveAsSearchablePdf ReadPhoto, ReadScreenShot ve ReadDocumentAdvanced sonuçlarında desteklenmektedir. Her yöntem, gerçek fotoğrafları, ekran görüntülerini veya karmaşık doküman taramalarını aranabilir PDF'lere dönüştürmeyi kolaylaştıran aranabilir PDF dışa aktarımını destekleyen bir sonuç türü döndürür.
ModelType parametresi ne yapar?
ModelType parametresi, OCR için hangi önceden eğitilmiş ML modelinin kullanılacağını kontrol eder. Normal, hızlı sonuçlar almak için görüntüleri 960 piksele yeniden boyutlandırarak işlem yapar ve varsayılan ayardır. Enhanced, 2560 piksele kadar olan görüntüleri destekleyerek daha yüksek çözünürlüklü girdilerde daha iyi detay ve doğruluk sağlar.
Kopyalanan veya aranan karakterler aranabilir PDF'mde neden bozulmuş görünüyor?
Bu, aranabilir metin katmanında kullanılan varsayılan yazı tipi (Times New Roman) tüm Unicode karakterlerini tam olarak desteklemediği için meydana gelir. Bunu düzeltmek için SaveAsSearchablePdf'nin üçüncü parametresi olarak Unicode uyumlu bir yazı tipi dosyası geçirin. Belgeleriniz başlangıçta Times New Roman ile ayarlanmış ve diğer yazı tiplerinde boşluk tutarsızlıkları fark ederseniz, aynı harf şekilleri ve orijinal düzeni koruyan Liberation Serif'i deneyin.

