Wie man Ergebnisse als durchsuchbares PDF in C# speichert

Speichern von durchsuchbaren PDFs in C#35; mit IronOCR

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

IronOCR ermöglicht es C#-Entwicklern, gescannte Dokumente und Bilder mit Hilfe der OCR-Technologie in durchsuchbare PDFs zu konvertieren, wobei die Ausgabe als Dateien, Bytes oder Streams mit nur wenigen Codezeilen unterstützt wird.

Ein durchsuchbares PDF, oft auch als OCR-PDF (Optical Character Recognition) bezeichnet, ist ein PDF-Dokument, das sowohl gescannte Bilder als auch maschinenlesbaren Text enthält. Diese PDFs entstehen durch die Anwendung von OCR auf gescannte Papierdokumente oder Bilder, wodurch der Text in den Bildern erkannt und in auswählbaren und durchsuchbaren Text umgewandelt wird.

IronOCR bietet eine Lösung zur optischen Zeichenerkennung von Dokumenten und zum Export der Ergebnisse als durchsuchbare PDFs. Es unterstützt den Export durchsuchbarer PDFs als Dateien, Bytes und Datenströme. Diese Fähigkeit ist besonders nützlich bei der Arbeit mit gescannten Dokumenten, bei der Digitalisierung von Papierarchiven oder bei der Durchsuchung älterer PDF-Dateien für ein besseres Dokumentenmanagement.

Schnellstart: Durchsuchbares PDF in einer Zeile exportieren

Setzen Sie RenderSearchablePdf = true, führen Sie Read(...) auf Ihre Eingabe aus und rufen Sie SaveAsSearchablePdf(...) auf - das ist alles, was Sie brauchen, um mit IronOCR ein vollständig durchsuchbares PDF zu erzeugen.

Nuget IconLegen Sie jetzt mit NuGet los, um PDFs zu erstellen:

  1. Installieren Sie IronOCR mit dem NuGet-Paketmanager.

    PM > Install-Package IronOcr

  2. Kopieren Sie diesen Codeausschnitt und führen Sie ihn aus.

    new IronOcr.IronTesseract { Configuration = { RenderSearchablePdf = true } } .Read(new IronOcr.OcrImageInput("file.jpg")).SaveAsSearchablePdf("searchable.pdf");
  3. Bereitstellen zum Testen in Ihrer Live-Umgebung

    Beginnen Sie noch heute mit der Nutzung von IronOCR in Ihrem Projekt – mit einer kostenlosen Testversion.
    arrow pointer


Wie exportiere ich OCR-Ergebnisse als durchsuchbare PDF-Datei?

Hier erfahren Sie, wie Sie das Ergebnis mit IronOCR als durchsuchbare PDF-Datei exportieren können. Zuerst müssen Sie die Eigenschaft Configuration.RenderSearchablePdf auf true setzen. Nachdem Sie das OCR-Ergebnisobjekt mit der Read Methode erhalten haben, verwenden Sie die SaveAsSearchablePdf -Methode, indem Sie den Ausgabedateipfad angeben. Der untenstehende Code demonstriert die Verwendung einer Beispiel-TIFF-Datei.

:path=/static-assets/ocr/content-code-examples/how-to/searchable-pdf-searchable-pdf.cs
using IronOcr;

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

// Enable render as searchable PDF
ocrTesseract.Configuration.RenderSearchablePdf = true;

// Add image
using var imageInput = new OcrImageInput("Potter.tiff");
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);

// Export as searchable PDF
ocrResult.SaveAsSearchablePdf("searchablePdf.pdf");
Imports IronOcr

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Enable render as searchable PDF
ocrTesseract.Configuration.RenderSearchablePdf = True

' Add image
Dim imageInput = New OcrImageInput("Potter.tiff")
' Perform OCR
Dim ocrResult As OcrResult = ocrTesseract.Read(imageInput)

' Export as searchable PDF
ocrResult.SaveAsSearchablePdf("searchablePdf.pdf")
$vbLabelText   $csharpLabel

Bei der Arbeit mit mehrseitigen TIFF-Dateien oder komplexen Dokumenten verarbeitet IronOCR automatisch alle Seiten und schließt sie in die durchsuchbare PDF-Ausgabe ein. Die Bibliothek übernimmt automatisch die Seitenanordnung und die Positionierung der Texteinblendungen und gewährleistet so eine genaue Text-Bild-Zuordnung.

Unten sehen Sie einen Screenshot der Beispiel-TIFF-Datei und ein eingebettetes, durchsuchbares PDF. Versuchen Sie, den Text in der PDF-Datei auszuwählen, um seine Durchsuchbarkeit zu überprüfen. Die Auswahlmöglichkeit bedeutet auch, dass der Text in einem PDF-Viewer durchsucht werden kann.

IronOCR verwendet eine bestimmte Schriftart, um den Text auf der Bilddatei zu überlagern, was zu einigen Diskrepanzen in der Textgröße führen kann.

Page from Harry Potter book showing Chapter Eight 'The Deathday Party' with text about Harry meeting Nearly Headless Nick

Arbeiten mit mehrseitigen Dokumenten

Bei PDF OCR-Operationen auf mehrseitigen Dokumenten verarbeitet IronOCR jede Seite nacheinander und behält die ursprüngliche Dokumentstruktur bei. Hier ein Beispiel für die Konvertierung einer mehrseitigen gescannten PDF-Datei in eine durchsuchbare PDF-Datei:

using IronOcr;

// Initialize IronTesseract with configuration
var ocrTesseract = new IronTesseract
{
    Configuration = 
    {
        RenderSearchablePdf = true,
        PageSegmentationMode = TesseractPageSegmentationMode.Auto
    }
};

// Load a multi-page PDF
using var pdfInput = new OcrPdfInput("multi-page-scan.pdf");

// Optionally specify page range (e.g., pages 1-10)
pdfInput.SelectPages(1, 10);

// Perform OCR with progress tracking
OcrResult result = ocrTesseract.Read(pdfInput);

// Save as searchable PDF
result.SaveAsSearchablePdf("searchable-multi-page.pdf");

// Display total pages processed
Console.WriteLine($"Processed {result.Pages.Length} pages");
using IronOcr;

// Initialize IronTesseract with configuration
var ocrTesseract = new IronTesseract
{
    Configuration = 
    {
        RenderSearchablePdf = true,
        PageSegmentationMode = TesseractPageSegmentationMode.Auto
    }
};

// Load a multi-page PDF
using var pdfInput = new OcrPdfInput("multi-page-scan.pdf");

// Optionally specify page range (e.g., pages 1-10)
pdfInput.SelectPages(1, 10);

// Perform OCR with progress tracking
OcrResult result = ocrTesseract.Read(pdfInput);

// Save as searchable PDF
result.SaveAsSearchablePdf("searchable-multi-page.pdf");

// Display total pages processed
Console.WriteLine($"Processed {result.Pages.Length} pages");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Wie kann ich bei der Erstellung durchsuchbarer PDFs Filter anwenden?

Die SaveAsSearchablePdf akzeptiert außerdem einen booleschen Wert als zweiten Parameter, mit dem Sie Filter auf ein durchsuchbares PDF anwenden können oder nicht, wodurch Entwickler die Flexibilität erhalten, dies zu wählen. Die Verwendung von Bildoptimierungsfiltern kann die OCR-Genauigkeit erheblich verbessern, insbesondere bei Minderwertigen Scans.

Im Folgenden finden Sie ein Beispiel für die Anwendung des Graustufenfilters und das anschließende Speichern der PDF-Datei mit einem Filter, indem Sie true in den zweiten Parameter von SaveAsSearchablePdf eingeben.

:path=/static-assets/ocr/content-code-examples/how-to/image-quality-correction-searchable-pdf.cs
using IronOcr;

var ocr = new IronTesseract();
var ocrInput = new OcrInput();

// Load a PDF file
ocrInput.LoadPdf("invoice.pdf");

// Apply gray scale filter
ocrInput.ToGrayScale();
OcrResult result = ocr.Read(ocrInput);

// Save the result as a searchable PDF with filters applied
result.SaveAsSearchablePdf("outputGrayscale.pdf", true);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Um optimale Ergebnisse zu erzielen, sollten Sie den Filter-Assistenten verwenden, um automatisch die beste Kombination von Filtern für Ihren spezifischen Dokumententyp zu ermitteln. Dieses Tool analysiert Ihre Eingaben und schlägt geeignete Vorverarbeitungsschritte vor.


Wie exportiere ich durchsuchbare PDFs als Bytes oder Streams?

Die Ausgabe des durchsuchbaren PDFs kann auch als Bytes oder Streams mit den Methoden SaveAsSearchablePdfBytes bzw. SaveAsSearchablePdfStream verarbeitet werden. Das folgende Codebeispiel zeigt, wie diese Methoden angewendet werden.

:path=/static-assets/ocr/content-code-examples/how-to/searchable-pdf-searchable-pdf-byte-stream.cs
// Export searchable PDF byte
byte[] pdfByte = ocrResult.SaveAsSearchablePdfBytes();

// Export searchable PDF stream
Stream pdfStream = ocrResult.SaveAsSearchablePdfStream();
' Export searchable PDF byte
Dim pdfByte() As Byte = ocrResult.SaveAsSearchablePdfBytes()

' Export searchable PDF stream
Dim pdfStream As Stream = ocrResult.SaveAsSearchablePdfStream()
$vbLabelText   $csharpLabel

Diese Ausgabeoptionen sind besonders nützlich bei der Integration mit Cloud-Speicherdiensten, Datenbanken oder Webanwendungen, bei denen der Zugriff auf das Dateisystem eingeschränkt sein kann. Hier ist ein erweitertes Beispiel mit praktischen Anwendungen:

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
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Erwägungen zur Leistung

Bei der Verarbeitung großer Mengen von Dokumenten sollte die Implementierung von Multithreading-OCR-Operationen in Betracht gezogen werden, um den Durchsatz zu erhöhen. IronOCR unterstützt die gleichzeitige Verarbeitung, so dass Sie mehrere Dokumente gleichzeitig bearbeiten können:

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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Erweiterte Konfigurationsoptionen

Für fortgeschrittene Szenarien können Sie die detaillierte Tesseract-Konfiguration nutzen, um die OCR-Engine für bestimmte Dokumenttypen oder Sprachen feinabzustimmen:

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
};
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Zusammenfassung

Die Erstellung durchsuchbarer PDFs mit IronOCR ist einfach und flexibel. Unabhängig davon, ob Sie einzelne Bilder, mehrseitige Dokumente oder Stapelverarbeitungsvorgänge verarbeiten müssen, bietet die Bibliothek robuste Methoden zur Erzeugung durchsuchbarer PDFs in verschiedenen Formaten. Durch die Möglichkeit, als Dateien, Bytes oder Streams zu exportieren, kann das Dokument an jede Anwendungsarchitektur angepasst werden, von Desktop-Anwendungen bis hin zu Cloud-basierten Diensten.

Für fortgeschrittene OCR-Szenarien können Sie die umfassenden Code-Beispiele oder die API-Dokumentation für detaillierte Methodensignaturen und Optionen nutzen.

Häufig gestellte Fragen

Wie erstelle ich eine durchsuchbare PDF-Datei aus gescannten Bildern in C#?

IronOCR macht es einfach, durchsuchbare PDFs aus gescannten Bildern zu erstellen. Setzen Sie einfach RenderSearchablePdf in der Konfiguration auf true, verwenden Sie die Read()-Methode für Ihr Eingabebild und rufen Sie SaveAsSearchablePdf() mit Ihrem gewünschten Ausgabepfad auf. IronOCR führt eine OCR auf dem Bild durch und erzeugt eine PDF-Datei mit auswählbarem, durchsuchbarem Text, der über das Originalbild gelegt wird.

Welche Dateiformate können in durchsuchbare PDFs konvertiert werden?

IronOCR kann verschiedene Bildformate wie JPG, PNG, TIFF und bestehende PDF-Dokumente in durchsuchbare PDFs konvertieren. Die Bibliothek unterstützt sowohl einseitige Bilder als auch mehrseitige Dokumente wie TIFF-Dateien, wobei alle Seiten automatisch verarbeitet werden und die korrekte Seitenreihenfolge in der durchsuchbaren PDF-Ausgabe beibehalten wird.

Kann ich durchsuchbare PDF-Dateien als Byte-Arrays oder Streams anstelle von Dateien exportieren?

Ja, IronOCR unterstützt den Export von durchsuchbaren PDFs in mehreren Formaten. Neben dem direkten Speichern in eine Datei mit SaveAsSearchablePdf() können Sie die OCR-Ergebnisse auch als Byte-Arrays oder Streams exportieren, was die Integration in Webanwendungen, Cloud-Speicher oder Datenbanksysteme erleichtert, ohne dass temporäre Dateien erstellt werden müssen.

Welcher Code ist mindestens erforderlich, um eine durchsuchbare PDF-Datei zu erstellen?

Die Erstellung einer durchsuchbaren PDF-Datei mit IronOCR kann in nur einer Codezeile erfolgen: new IronOcr.IronTesseract { Configuration = { RenderSearchablePdf = true } }.Read(new IronOcr.OcrImageInput("file.jpg")).SaveAsSearchablePdf("searchable.pdf"). Dies demonstriert das schlanke API-Design von IronOCR.

Wie funktioniert das Text-Overlay in durchsuchbaren PDFs?

IronOCR sorgt automatisch für die Positionierung des erkannten Textes als unsichtbare Überlagerung über dem Originalbild in der PDF-Datei. Dies gewährleistet eine genaue Text-Bild-Zuordnung, so dass der Benutzer Text auswählen und suchen kann, ohne dass das visuelle Erscheinungsbild des Originaldokuments beeinträchtigt wird. Die Bibliothek verwendet spezielle Schriftarten und Positionierungsalgorithmen, um dies zu erreichen.

Chaknith Bin
Software Ingenieur
Chaknith arbeitet an IronXL und IronBarcode. Er hat umfassende Expertise in C# und .NET und hilft, die Software zu verbessern und Kunden zu unterstützen. Seine Einblicke aus Benutzerinteraktionen tragen zu besseren Produkten, Dokumentationen und einem insgesamt besseren Erlebnis bei.
Rezensiert von
Jeff Fritz
Jeffrey T. Fritz
Principal Program Manager - .NET Community Team
Jeff ist außerdem Principal Program Manager für das .NET- und Visual Studio-Team. Er ist der ausführende Produzent der .NET Conf Virtual Conference Series und moderiert ‚Fritz and Friends‘, einen Livestream für Entwickler, der zweimal wöchentlich ausgestrahlt wird. Dort spricht er über Technik und schreibt gemeinsam mit den Zuschauern Code. Jeff schreibt Workshops, Präsentationen und plant Inhalte für die größten Microsoft-Entwicklerveranstaltungen, einschließlich Microsoft Build, Microsoft Ignite, .NET Conf und dem Microsoft MVP Summit.
Bereit anzufangen?
Nuget Downloads 5,246,844 | Version: 2025.12 gerade veröffentlicht