Comment enregistrer des résultats en tant que PDF consultable en C#

Enregistrez des PDF consultables en C# ; avec IronOCR

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

IronOCR permet aux développeurs C# de convertir des documents et des images numérisés en PDF consultables à l'aide de la technologie OCR, en prenant en charge la sortie sous forme de fichiers, d'octets ou de flux avec seulement quelques lignes de code.

Un PDF consultable, souvent appelé PDF OCR (reconnaissance optique de caractères), est un type de document PDF qui contient à la fois des images numérisées et du texte lisible par machine. Ces fichiers PDF sont créés en effectuant une reconnaissance optique de caractères (OCR) sur des documents papier ou des images numérisés, en reconnaissant le texte dans les images et en le convertissant en texte sélectionnable et consultable.

IronOCR offre une solution pour effectuer la reconnaissance optique de caractères sur des documents et exporter les résultats sous forme de PDF consultables. Il permet d'exporter des PDF consultables sous forme de fichiers, d'octets et de flux. Cette capacité est particulièrement utile lorsque l'on travaille avec des documents numérisés, que l'on numérise des archives papier ou que l'on rend les anciens PDF consultables pour une meilleure gestion des documents.

Démarrage rapide : Exporter un PDF consultable en une seule ligne

<TODO : Ajouter une image ici -->

Définissez RenderSearchablePdf = true, exécutez Read(...) sur votre entrée, et invoquez SaveAsSearchablePdf(...) - c'est tout ce qu'il faut pour générer un PDF entièrement consultable avec IronOcr.

Nuget IconCommencez dès maintenant à créer des PDF avec NuGet :

  1. Installez IronOCR avec le gestionnaire de packages NuGet

    PM > Install-Package IronOcr

  2. Copiez et exécutez cet extrait de code.

    new IronOcr.IronTesseract { Configuration = { RenderSearchablePdf = true } } .Read(new IronOcr.OcrImageInput("file.jpg")).SaveAsSearchablePdf("searchable.pdf");
  3. Déployez pour tester sur votre environnement de production.

    Commencez à utiliser IronOCR dans votre projet dès aujourd'hui grâce à un essai gratuit.
    arrow pointer


Comment exporter les résultats de l'OCR sous forme de PDF consultable?

<TODO : Ajouter une image ici -->

Voici comment exporter le résultat sous forme de PDF consultable à l'aide d'IronOCR. Vous devez d'abord définir la propriété Configuration.RenderSearchablePdf sur true . Après avoir obtenu l'objet de résultat OCR à partir de la méthode Read , utilisez la méthode SaveAsSearchablePdf en spécifiant le chemin du fichier de sortie. Le code ci-dessous illustre l'utilisation d'un exemple de fichier TIFF.

: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");
$vbLabelText   $csharpLabel

Lorsque vous travaillez avec des fichiers TIFF multipages ou des documents complexes, IronOcr traite automatiquement toutes les pages et les inclut dans la sortie PDF consultable. La bibliothèque gère automatiquement l'ordre des pages et le positionnement du texte en surimpression, ce qui garantit une correspondance précise entre le texte et l'image.

Vous trouverez ci-dessous une capture d'écran de l'exemple de fichier TIFF et un PDF consultable intégré. Essayez de sélectionner le texte dans le PDF pour confirmer qu'il est consultable. La possibilité de sélectionner du texte permet également d'effectuer une recherche dans une visionneuse PDF.

IronOcr utilise une police particulière pour superposer le texte sur le fichier image, ce qui peut entraîner quelques écarts dans la taille du texte.

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

Travailler avec des documents de plusieurs pages

Lorsqu'il s'agit d'opérations d'OCR PDF sur des documents de plusieurs pages, IronOCR traite chaque page de manière séquentielle et conserve la structure originale du document. Voici un exemple de conversion d'un PDF numérisé de plusieurs pages en un PDF interrogeable :

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");
$vbLabelText   $csharpLabel

Comment puis-je appliquer des filtres lors de la création de PDF consultables ?

La SaveAsSearchablePdf accepte également un indicateur booléen comme deuxième paramètre, permettant d'appliquer ou non des filtres à un PDF consultable, offrant ainsi aux développeurs la flexibilité de choisir. L'utilisation de filtres d'optimisation d'image peut améliorer de manière significative la précision de l'OCR, en particulier lorsqu'il s'agit de scans de mauvaise qualité.

Voici un exemple d'application du filtre d'échelle de gris et d'enregistrement du PDF avec un filtre en mettant true dans le deuxième paramètre de SaveAsSearchablePdf.

: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);
$vbLabelText   $csharpLabel

Pour des résultats optimaux, pensez à utiliser l'Assistant de filtre pour déterminer automatiquement la meilleure combinaison de filtres pour votre type de document spécifique. Cet outil analyse vos données et vous propose des étapes de prétraitement appropriées.


Comment exporter des PDF consultables sous forme d'octets ou de flux?

Le résultat du PDF consultable peut également être traité sous forme d'octets ou de flux à l'aide des méthodes SaveAsSearchablePdfBytes et SaveAsSearchablePdfStream , respectivement. L'exemple de code ci-dessous montre comment utiliser ces méthodes.

: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();
$vbLabelText   $csharpLabel

Ces options de sortie sont particulièrement utiles lors de l'intégration avec des services de stockage en nuage, des bases de données ou des applications web où l'accès au système de fichiers peut être limité. Voici un exemple détaillé d'applications pratiques :

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
    }
}
$vbLabelText   $csharpLabel

Considérations de performance

Lorsque vous traitez de gros volumes de documents, envisagez de mettre en œuvre des opérations d'OCR multithreadées pour améliorer le débit. IronOcr prend en charge le traitement simultané, ce qui vous permet de traiter plusieurs documents simultanément :

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");
    }
}
$vbLabelText   $csharpLabel

Options de configuration avancées

Pour des scénarios plus avancés, vous pouvez utiliser configuration détaillée de Tesseract pour affiner le moteur OCR pour des types de documents ou des langues spécifiques :

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
};
$vbLabelText   $csharpLabel

Résumé

La création de PDF interrogeables avec IronOCR est simple et flexible. Qu'il s'agisse de traiter des images uniques, des documents multipages ou des opérations par lots, la bibliothèque propose des méthodes robustes pour générer des PDF consultables dans différents formats. La possibilité d'exporter sous forme de fichiers, d'octets ou de flux permet d'adapter le logiciel à toute architecture d'application, des applications de bureau aux services basés sur le cloud.

Pour des scénarios OCR plus avancés, explorez les exemples de code complets ou reportez-vous à la documentation de l'API pour obtenir des signatures de méthode et des options détaillées.

Questions Fréquemment Posées

Comment créer un PDF interrogeable à partir d'images numérisées en C# ?

IronOCR simplifie la création de PDF consultables à partir d'images numérisées. Il suffit de définir RenderSearchablePdf à true dans la configuration, d'utiliser la méthode Read() sur votre image d'entrée, et d'appeler SaveAsSearchablePdf() avec le chemin de sortie souhaité. IronOcr effectuera l'OCR sur l'image et générera un PDF avec du texte sélectionnable et consultable superposé à l'image originale.

Quels formats de fichiers peuvent être convertis en PDF interrogeables ?

IronOcr peut convertir divers formats d'image, notamment JPG, PNG, TIFF, et des documents PDF existants en PDF interrogeables. La bibliothèque prend en charge les images d'une seule page et les documents de plusieurs pages comme les fichiers TIFF, en traitant automatiquement toutes les pages et en conservant l'ordre des pages dans le PDF consultable de sortie.

Puis-je exporter des PDF consultables sous forme de tableaux d'octets ou de flux au lieu de fichiers ?

Oui, IronOcr prend en charge l'exportation de PDF consultables dans plusieurs formats. Outre l'enregistrement direct dans un fichier à l'aide de SaveAsSearchablePdf(), vous pouvez également exporter les résultats de l'OCR sous forme de tableaux d'octets ou de flux, ce qui facilite l'intégration dans des applications web, des systèmes de stockage en nuage ou des systèmes de base de données sans créer de fichiers temporaires.

Quel est le code minimum requis pour créer un PDF interrogeable ?

La création d'un PDF interrogeable avec IronOCR peut se faire en une seule ligne de code : new IronOcr.IronTesseract { Configuration = { RenderSearchablePdf = true } }.Read(new IronOcr.OcrImageInput("file.jpg")).SaveAsSearchablePdf("searchable.pdf"). Ceci démontre la conception rationalisée de l'API d'IronOCR.

Comment fonctionne la superposition de texte dans les PDF interrogeables ?

IronOcr gère automatiquement le positionnement du texte reconnu sous la forme d'une superposition invisible sur l'image originale du PDF. Cela garantit une correspondance précise entre le texte et l'image, ce qui permet aux utilisateurs de sélectionner et de rechercher du texte tout en conservant l'aspect visuel du document original. Pour ce faire, la bibliothèque utilise des polices et des algorithmes de positionnement spécialisés.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite
Revu par
Jeff Fritz
Jeffrey T. Fritz
Responsable principal du programme - Équipe de la communauté .NET
Jeff est également responsable principal du programme pour les équipes .NET et Visual Studio. Il est le producteur exécutif de la série de conférences virtuelles .NET Conf et anime 'Fritz and Friends', une diffusion en direct pour développeurs qui est diffusée deux fois par semaine où il parle de technologie et écrit du code avec les téléspectateurs. Jeff écrit des ateliers, des présentations et prévoit du contenu pour les plus grands événements de développement Microsoft, y compris Microsoft Build, Microsoft Ignite, .NET Conf et le sommet Microsoft MVP
Prêt à commencer?
Nuget Téléchargements 5,299,091 | Version : 2025.12 vient de sortir