Passer au contenu du pied de page
UTILISATION DE IRONPDF

Comment construire un flux de travail OCR PDF avec OCR.net et IronPDF en C#

Diagramme montrant le flux de traitement OCRNet avec 5 étapes : images d'entrée, prétraitement, extraction de caractéristiques, modélisation de séquence avec OCRNet et décodage pour produire le contenu textuel extrait.

OCR.net est un framework d'apprentissage profond pour la reconnaissance optique de caractères qui se couple avec IronPDF pour extraire le texte des PDF et produire des documents consultables dans les applications .NET. Ce tutoriel vous montre comment connecter ces deux outils pour que votre application puisse traiter les fichiers numérisés, rasteriser les pages PDF pour l'OCR et réassembler le texte reconnu dans un nouveau PDF consultable.

Le modèle OCR.net excelle dans la détection de texte de scène et la reconnaissance de caractères dans des environnements complexes. Lorsque vous le combinez avec le moteur de rendu d'IronPDF, vous obtenez une chaîne complète : générer ou charger un PDF, exporter ses pages comme images haute résolution, envoyer ces images à OCR.net, et reconstruire les résultats comme un document entièrement consultable.

Commencez avec IronPDF maintenant.
green arrow pointer

Comment commencer avec IronPDF ?

Avant de construire le workflow OCR, vous devez installer IronPDF dans votre projet. Le moyen le plus rapide est la console du gestionnaire de packages NuGet :

Install-Package IronPDF

Ou ajoutez-le directement via l'interface utilisateur de NuGet en recherchant IronPdf. Une fois installé, appliquez votre clé de licence au démarrage de l'application :

using IronPdf;

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
using IronPdf;

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
$vbLabelText   $csharpLabel

Une licence d'essai gratuite est disponible afin que vous puissiez tester l'ensemble des fonctionnalités sans aucune restriction. IronPDF prend en charge .NET 6, 7, 8, et 10 sur Windows, Linux et macOS, ce qui signifie que le même code s'exécute dans les applications de bureau, les services web ASP.NET Core et les déploiements conteneurisés.

Pour les environnements Docker, IronPDF fournit un guide de déploiement Linux pré-configuré et des variantes de package slim qui réduisent la taille de l'image. Si vous préférez une architecture de rendu à distance, le moteur IronPDF peut fonctionner comme un service distinct avec des clients sur toute plateforme prise en charge.

Qu'est-ce qu'OCRNet et comment fonctionne la reconnaissance optique de caractères ?

OCR.net est une approche d'apprentissage profond pour la reconnaissance optique de caractères (OCR) qui reconnaît les caractères alphanumériques à travers différents styles de police. Le modèle utilise une architecture de réseau neuronal optimisée pour capturer les caractéristiques spatiales des images d'entrée. Combinés avec les capacités de génération de PDF, ces modèles entraînés offrent une reconnaissance avec une forte précision sur les types de document courants.

Le framework de reconnaissance derrière OCR.net incorpore une unité récurrente à portes (GRU) pour améliorer l'apprentissage des caractéristiques et traiter les tâches de reconnaissance de séquence basée sur l'image. Ce modèle hybride atteint une précision notable grâce à la classification temporelle connexionniste (CTC), une technique introduite à l'origine pour l'étiquetage de séquences qui se transfère bien à l'OCR de documents. Les améliorations continues continuent d'élargir le support linguistique d'OCR.net, surtout lorsqu'il est intégré avec les outils d'extraction de texte PDF.

Les composants clés d'une chaîne OCR moderne incluent :

  • Détection de Texte : Identification des régions de contenu textuel dans une image à l'aide de modèles entraînés
  • Détection de Texte de Scène : Localisation du texte dans des arrière-plans complexes et des environnements dynamiques
  • Reconnaissance de Caractères Alphanumériques : Utilisation de modèles entraînés pour reconnaître les caractères avec une précision de validation élevée
  • Reconnaissance de Motifs : Application de techniques de traitement d'images pour une reconnaissance légère de texte de scène

L'architecture basée sur le GRU et la classification temporelle connexionniste permettent une utilisation efficace des ressources dans les environnements conteneurisés, faisant d'OCR.net un choix pratique pour les déploiements Kubernetes où les contraintes de mémoire et de CPU sont importantes. L'architecture légère garde les tailles des images Docker gérables tout en maintenant une forte précision de reconnaissance.

Quand Devriez-vous Utiliser OCR.net au Lieu des Bibliothèques OCR Traditionnelles ?

OCR.net est le meilleur choix lors du traitement de textes de scène complexes, de documents manuscrits ou de contenus multilingues où l'OCR basé sur des templates échoue. Il fonctionne particulièrement bien dans les applications conteneurisées qui nécessitent des performances cohérentes à travers les configurations matérielles sans dépendances externes. Le modèle gère l'encodage UTF-8 proprement, ce qui est important pour le support des langues internationales.

Les systèmes OCR traditionnels basés sur des expressions régulières ou sur des correspondances de templates échouent sur les polices variables, l'écriture manuscrite, ou les images avec un éclairage inégal. L'approche neuronale d'OCR.net se généralise mieux dans ces scénarios parce qu'elle apprend des caractéristiques plutôt que de correspondre à des templates fixes. Ceci dit, si vos documents sont propres, tapés à la machine avec un formatage cohérent, une bibliothèque plus légère peut être plus rapide et suffisante.

Quels Sont les Besoins en Ressources Courants pour OCR.net en Production ?

Les déploiements en production ont généralement besoin de 2 à 4 cœurs CPU et de 4 à 8 Go de RAM pour obtenir des performances solides. L'accélération GPU fournit un gain de vitesse significatif pour le traitement par lots dans les environnements conteneurisés utilisant l'exécution Docker NVIDIA. Ces exigences s'adaptent bien aux Azure App Service et aux déploiements AWS Lambda, bien que la limite de mémoire de Lambda signifie que vous devriez tester les tailles de vos documents spécifiques avant de vous engager.

Comment IronPDF Crée-t-il des Documents PDF pour le Traitement OCR ?

IronPDF donne aux développeurs .NET un contrôle total sur la génération de PDF. La bibliothèque peut rendre des chaînes HTML, des URL et des entrées de fichiers en PDFs soignés grâce à son moteur de rendu basé sur Chrome. Pour les workflows OCR, la fonctionnalité critique est RasterizeToImageFiles(), qui exporte les pages PDF comme images haute résolution adaptées à la reconnaissance.

using IronPdf;

// Create a PDF document with IronPDF
var renderer = new ChromePdfRenderer();

// Set 300 DPI for OCR accuracy -- higher DPI preserves text sharpness
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.DPI = 300;
renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;

var pdf = renderer.RenderHtmlAsPdf(@"
    <h1>Document Report</h1>
    <p>Scene text integration for computer vision analysis.</p>
    <p>Text detection results for dataset and model analysis.</p>");

// Tag the document with searchable metadata
pdf.MetaData.Author = "OCR Processing Pipeline";
pdf.MetaData.Keywords = "OCR, Text Recognition, Computer Vision";
pdf.MetaData.ModifiedDate = DateTime.Now;

pdf.SaveAs("document-for-ocr.pdf");

// Export pages as PNG images for OCR.net -- 300 DPI is the recommended minimum
pdf.RasterizeToImageFiles("page-*.png", IronPdf.Imaging.ImageType.Png, 300);
using IronPdf;

// Create a PDF document with IronPDF
var renderer = new ChromePdfRenderer();

// Set 300 DPI for OCR accuracy -- higher DPI preserves text sharpness
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.DPI = 300;
renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;

var pdf = renderer.RenderHtmlAsPdf(@"
    <h1>Document Report</h1>
    <p>Scene text integration for computer vision analysis.</p>
    <p>Text detection results for dataset and model analysis.</p>");

// Tag the document with searchable metadata
pdf.MetaData.Author = "OCR Processing Pipeline";
pdf.MetaData.Keywords = "OCR, Text Recognition, Computer Vision";
pdf.MetaData.ModifiedDate = DateTime.Now;

pdf.SaveAs("document-for-ocr.pdf");

// Export pages as PNG images for OCR.net -- 300 DPI is the recommended minimum
pdf.RasterizeToImageFiles("page-*.png", IronPdf.Imaging.ImageType.Png, 300);
$vbLabelText   $csharpLabel

La méthode RasterizeToImageFiles() convertit les pages PDF en images PNG à la résolution DPI spécifiée. À 300 DPI, les bords du texte restent suffisamment nets pour que le modèle OCR puisse distinguer les caractères ayant un aspect similaire. À 150 DPI ou en dessous, la précision de la reconnaissance chute sensiblement sur les polices serif et les petits caractères. Après l'exportation, téléchargez les fichiers PNG sur OCR.net ou passez-les directement à un modèle local.

Capture d'écran d'un document PDF affiché dans un visualiseur d'images montrant l'en-tête 'Rapport Document OCR.net' avec un texte sous-titre sur l'intégration du texte de scène et la détection de texte.

Pourquoi le Réglage DPI A-t-il un Impact sur la Précision de l'OCR ?

Des réglages DPI plus élevés (300-600) préservent la clarté du texte dont le modèle OCR a besoin pour distinguer les caractères avec précision. Le compromis est la taille des fichiers et le temps de traitement. À 300 DPI, une seule page A4 produit environ un PNG de 2-3 MB. À 600 DPI, cela passe à 8-12 MB. Pour la plupart des documents, 300 DPI est le juste équilibre. Les options de rendu vous permettent d'ajuster ce paramètre selon le type de document, tandis que les techniques de compression aident à optimiser les tailles de fichiers une fois l'OCR terminé.

Comment IronPDF Gère-t-il les Environnements Conteneurisés ?

Le moteur natif d'IronPDF assure un rendu cohérent à travers les conteneurs Linux, Windows et macOS. Pour les services à haute disponibilité, IronPDF s'intègre aux points de vérification de santé ASP.NET Core pour implémenter des vérifications de préparation et de vivacité qui vérifient que le rendu PDF est opérationnel avant de diriger le trafic vers une instance de conteneur.

using IronPdf;

// Kubernetes-compatible health check endpoint
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/health/ready", async () =>
{
    try
    {
        var renderer = new ChromePdfRenderer();
        var testPdf = await renderer.RenderHtmlAsPdfAsync("<p>Health check</p>");
        return testPdf.PageCount > 0 ? Results.Ok() : Results.Problem();
    }
    catch
    {
        return Results.Problem("PDF rendering unavailable");
    }
});

await app.RunAsync();
using IronPdf;

// Kubernetes-compatible health check endpoint
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/health/ready", async () =>
{
    try
    {
        var renderer = new ChromePdfRenderer();
        var testPdf = await renderer.RenderHtmlAsPdfAsync("<p>Health check</p>");
        return testPdf.PageCount > 0 ? Results.Ok() : Results.Problem();
    }
    catch
    {
        return Results.Problem("PDF rendering unavailable");
    }
});

await app.RunAsync();
$vbLabelText   $csharpLabel

Utilisez la journalisation personnalisée avec ce point de terminaison pour capturer les temps de rendu et identifier les conteneurs qui se dégradent avant qu'ils ne tombent complètement.

Comment OCR.net extrait-il du texte à partir d'images PDF ?

Une fois que vous avez les exportations PNG d'IronPDF, vous les téléchargez sur OCR.net pour la reconnaissance de texte. La chaîne OCR.net traite les images et retourne une sortie textuelle normalisée à travers divers styles de police. Elle gère à la fois le texte imprimé et manuscrit et prend en charge plus de 60 langues de documents.

Utilisation d'OCR.net Online:

  1. Naviguer vers https://ocr.net/
  2. Téléchargez l'image PNG ou JPG (maximum 2 MB) exportée d'IronPDF
  3. Sélectionnez la langue du document parmi les plus de 60 options disponibles
  4. Choisissez le format de sortie : Texte simple ou PDF consultable
  5. Cliquez sur "Convertir maintenant" pour traiter l'image avec les modèles OCR.net

Interface web d'OCR.net montrant le téléchargement de fichier pour page-1.png avec la sélection de langue définie sur Anglais et le format de sortie défini sur Texte

OCR.net fournit également une API pour le traitement automatisé. Les comptes gratuits sont limités à 50 requêtes par heure, ce qui est une contrainte critique pour les chaînes automatisées. Concevez votre intégration pour gérer les réponses aux limites de taux avec une stratégie d'attente exponentielle plutôt que d'échouer brutalement :

using System;
using System.Net.Http;
using System.Threading.Tasks;

// Queue-based OCR processing with exponential backoff retry
async Task<string> ProcessOcrWithRetry(string imagePath, int maxRetries = 3)
{
    for (int attempt = 0; attempt < maxRetries; attempt++)
    {
        try
        {
            // Replace with your actual OCR.net API call
            return await CallOcrNetApi(imagePath);
        }
        catch (HttpRequestException ex) when (ex.Message.Contains("429"))
        {
            if (attempt == maxRetries - 1) throw;
            var delay = TimeSpan.FromSeconds(Math.Pow(2, attempt));
            await Task.Delay(delay);
        }
    }
    throw new InvalidOperationException("OCR processing failed after all retries");
}
using System;
using System.Net.Http;
using System.Threading.Tasks;

// Queue-based OCR processing with exponential backoff retry
async Task<string> ProcessOcrWithRetry(string imagePath, int maxRetries = 3)
{
    for (int attempt = 0; attempt < maxRetries; attempt++)
    {
        try
        {
            // Replace with your actual OCR.net API call
            return await CallOcrNetApi(imagePath);
        }
        catch (HttpRequestException ex) when (ex.Message.Contains("429"))
        {
            if (attempt == maxRetries - 1) throw;
            var delay = TimeSpan.FromSeconds(Math.Pow(2, attempt));
            await Task.Delay(delay);
        }
    }
    throw new InvalidOperationException("OCR processing failed after all retries");
}
$vbLabelText   $csharpLabel

Pour les workflows d'accessibilité, l'extraction de texte OCR permet aux utilisateurs malvoyants de recevoir des retours audio à partir de documents qui étaient auparavant uniquement des images. Associer la sortie d'OCR.net à la conformité PDF/UA via IronPDF crée des documents que les technologies d'assistance peuvent naviguer efficacement.

Comment Construire un Workflow Complet IronPDF et OCR.net ?

Connecter IronPDF avec OCR.net produit des solutions de document de bout en bout. Le workflow comprend trois étapes : exporter les pages PDF comme images, envoyer les images à OCR.net pour l'extraction de texte, et reconstruire le texte reconnu en un nouveau PDF consultable.

using IronPdf;
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

// --- Stage 1: Export PDF pages as images for OCR ---
var scannedPdf = PdfDocument.FromFile("input-document.pdf");
var imageFiles = scannedPdf.RasterizeToImageFiles(
    "scan-page-{0}.png",
    IronPdf.Imaging.ImageType.Png,
    300 // 300 DPI -- minimum for reliable OCR accuracy
);

// --- Stage 2: Process each image through OCR.net ---
var ocrResults = new List<string>();
foreach (var imageFile in imageFiles)
{
    // Replace this placeholder with your actual OCR.net API integration
    string ocrText = await SendImageToOcrNet(imageFile);
    ocrResults.Add(ocrText);
}

// --- Stage 3: Reassemble recognized text as a searchable PDF ---
var htmlBuilder = new StringBuilder();
htmlBuilder.Append(@"<!DOCTYPE html><html><head>
    <style>body{font-family:Arial,sans-serif;margin:40px;}
    .page{page-break-after:always;} pre{white-space:pre-wrap;}</style>
    </head><body>");

for (int i = 0; i < ocrResults.Count; i++)
{
    htmlBuilder.AppendFormat(
        "<div class='page'><h2>Page {0}</h2><pre>{1}</pre></div>",
        i + 1,
        System.Web.HttpUtility.HtmlEncode(ocrResults[i])
    );
}
htmlBuilder.Append("</body></html>");

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.DPI = 300;
renderer.RenderingOptions.EnableJavaScript = false;

var searchablePdf = await renderer.RenderHtmlAsPdfAsync(htmlBuilder.ToString());
searchablePdf.MetaData.Title = "OCR Processed Document";
searchablePdf.MetaData.Subject = "Searchable PDF from OCR";
searchablePdf.MetaData.CreationDate = DateTime.UtcNow;
searchablePdf.SecuritySettings.AllowUserPrinting = true;
searchablePdf.SecuritySettings.AllowUserCopyPasteContent = true;

searchablePdf.SaveAs("searchable-document.pdf");
using IronPdf;
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

// --- Stage 1: Export PDF pages as images for OCR ---
var scannedPdf = PdfDocument.FromFile("input-document.pdf");
var imageFiles = scannedPdf.RasterizeToImageFiles(
    "scan-page-{0}.png",
    IronPdf.Imaging.ImageType.Png,
    300 // 300 DPI -- minimum for reliable OCR accuracy
);

// --- Stage 2: Process each image through OCR.net ---
var ocrResults = new List<string>();
foreach (var imageFile in imageFiles)
{
    // Replace this placeholder with your actual OCR.net API integration
    string ocrText = await SendImageToOcrNet(imageFile);
    ocrResults.Add(ocrText);
}

// --- Stage 3: Reassemble recognized text as a searchable PDF ---
var htmlBuilder = new StringBuilder();
htmlBuilder.Append(@"<!DOCTYPE html><html><head>
    <style>body{font-family:Arial,sans-serif;margin:40px;}
    .page{page-break-after:always;} pre{white-space:pre-wrap;}</style>
    </head><body>");

for (int i = 0; i < ocrResults.Count; i++)
{
    htmlBuilder.AppendFormat(
        "<div class='page'><h2>Page {0}</h2><pre>{1}</pre></div>",
        i + 1,
        System.Web.HttpUtility.HtmlEncode(ocrResults[i])
    );
}
htmlBuilder.Append("</body></html>");

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.DPI = 300;
renderer.RenderingOptions.EnableJavaScript = false;

var searchablePdf = await renderer.RenderHtmlAsPdfAsync(htmlBuilder.ToString());
searchablePdf.MetaData.Title = "OCR Processed Document";
searchablePdf.MetaData.Subject = "Searchable PDF from OCR";
searchablePdf.MetaData.CreationDate = DateTime.UtcNow;
searchablePdf.SecuritySettings.AllowUserPrinting = true;
searchablePdf.SecuritySettings.AllowUserCopyPasteContent = true;

searchablePdf.SaveAs("searchable-document.pdf");
$vbLabelText   $csharpLabel

Ce pipeline est intentionnellement simple. L'étape 1 produit des fichiers PNG numérotés. L'étape 2 envoie chaque fichier à OCR.net et collecte les chaînes de texte renvoyées. L'étape 3 enveloppe ces chaînes dans du HTML et utilise IronPDF pour rendre un PDF final où le texte est entièrement sélectionnable et consultable. Vous pouvez étendre l'étape 3 pour appliquer des métadonnées PDF pour la gestion de documents ou des paramètres de sécurité pour le contrôle d'accès.

Capture d'écran comparant deux fenêtres de visionnage PDF côte à côte - la gauche montrant un PDF scanné sur 'Qu'est-ce qu'un PDF ?' et la droite montrant les résultats d'OCR.net qui ont réussi à extraire le même contenu textuel.

Quelle Configuration Docker Convient le Mieux pour Ce Workflow ?

Des builds Docker multi-étapes gardent l'image finale petite tout en incluant toutes les dépendances d'exécution dont IronPDF a besoin sur Linux :

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /app

COPY *.csproj ./
RUN dotnet restore

COPY . ./
RUN dotnet publish -c Release -o out

FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app

# IronPDF Linux runtime dependencies
RUN apt-get update && apt-get install -y \
    libgdiplus \
    libc6-dev \
    libx11-dev \
    && rm -rf /var/lib/apt/lists/*

COPY --from=build /app/out .

HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
  CMD curl -f http://localhost:8080/health/ready || exit 1

ENTRYPOINT ["dotnet", "OcrWorkflow.dll"]

Pour une échelle de production, envisagez les Jobs Kubernetes pour les opérations OCR par lots. Les Jobs Kubernetes fournissent des retentatives automatiques, un contrôle du parallélisme et une isolation des ressources pour que les tâches documentaires échouées n'affectent pas les autres services. Définissez parallelism pour correspondre à votre niveau API OCR.net et backoffLimit pour contrôler combien de fois un pod échoué retente avant que le Job ne marque la tâche comme échouée.

Comment Surveiller les Indicateurs de Performance en Production ?

Suivre les temps de traitement OCR et les taux de succès aide à identifier les goulets d'étranglement avant qu'ils n'affectent les utilisateurs finaux. Prometheus avec des métriques personnalisées est une approche pratique :

using Prometheus;
using System;
using System.Threading.Tasks;

// Prometheus metrics for OCR pipeline observability
var ocrRequestsTotal = Metrics
    .CreateCounter("ocr_requests_total", "Total OCR requests processed");

var ocrDuration = Metrics
    .CreateHistogram("ocr_duration_seconds", "OCR processing duration in seconds",
        new HistogramConfiguration
        {
            Buckets = Histogram.LinearBuckets(0.1, 0.1, 10)
        });

var activeOcrJobs = Metrics
    .CreateGauge("ocr_active_jobs", "Currently active OCR jobs");

// Wrapper that tracks every OCR operation automatically
async Task<t> TrackOcrOperation<t>(Func<Task<t>> operation)
{
    using (ocrDuration.NewTimer())
    {
        activeOcrJobs.Inc();
        try
        {
            var result = await operation();
            ocrRequestsTotal.Inc();
            return result;
        }
        finally
        {
            activeOcrJobs.Dec();
        }
    }
}
using Prometheus;
using System;
using System.Threading.Tasks;

// Prometheus metrics for OCR pipeline observability
var ocrRequestsTotal = Metrics
    .CreateCounter("ocr_requests_total", "Total OCR requests processed");

var ocrDuration = Metrics
    .CreateHistogram("ocr_duration_seconds", "OCR processing duration in seconds",
        new HistogramConfiguration
        {
            Buckets = Histogram.LinearBuckets(0.1, 0.1, 10)
        });

var activeOcrJobs = Metrics
    .CreateGauge("ocr_active_jobs", "Currently active OCR jobs");

// Wrapper that tracks every OCR operation automatically
async Task<t> TrackOcrOperation<t>(Func<Task<t>> operation)
{
    using (ocrDuration.NewTimer())
    {
        activeOcrJobs.Inc();
        try
        {
            var result = await operation();
            ocrRequestsTotal.Inc();
            return result;
        }
        finally
        {
            activeOcrJobs.Dec();
        }
    }
}
$vbLabelText   $csharpLabel

Associez ces métriques aux capacités de journalisation d'IronPDF pour corréler les temps de rendu avec les durées OCR. Lorsque la durée OCR augmente sans une augmentation correspondante du temps de rendu, le goulot d'étranglement se situe dans l'appel API OCR.net ou votre chemin réseau vers celui-ci, et non dans l'étape de génération PDF.

Quelles sont vos prochaines étapes ?

OCR.net combiné avec IronPDF vous offre un chemin pratique pour l'extraction de texte et la génération de PDF consultables dans .NET. Le pipeline couvre les cas d'utilisation principaux : créer des PDFs à partir de HTML, exporter les pages à une résolution compatible OCR, envoyer les images à OCR.net et réassembler les résultats dans un document entièrement consultable.

Considérations clés lors du passage à la production :

  • Configuration des conteneurs : Utilisez les packages IronPDF Slim et des builds Docker multi-étapes pour garder les tailles d'image gérables
  • Planification des ressources : Configurez les limites de mémoire appropriées à vos tailles de document et à votre objectif de simultanéité
  • Surveillance : Implémentez des métriques Prometheus aux côtés de la journalisation IronPDF pour détecter les dégradations tôt
  • Débit : Utilisez des opérations asynchrones et une gestion de file d'attente par lots pour travailler dans les limites de taux d'OCR.net
  • Fiabilité : Construisez une logique de retentative avec attente exponentielle et des coupe-circuits autour de l'appel API OCR.net

Commencez avec la licence d'essai gratuite pour tester l'ensemble du workflow de bout en bout avant de vous engager à une licence de production. L'essai supprime le filigrane et débloque toutes les fonctionnalités, donc vos résultats de benchmark reflètent précisément le comportement en production. Lorsque vous êtes prêt à déployer, consultez les options de licence IronPDF pour trouver le niveau qui correspond à votre modèle d'utilisation.

Questions Fréquemment Posées

Que fait OCR.net et comment se connecte-t-il avec IronPDF ?

OCR.net est un service de reconnaissance optique de caractères basé sur l'apprentissage profond qui accepte des entrées d'image et renvoie le texte reconnu. IronPDF génère des PDF et exporte leurs pages sous forme d'images. Les deux outils se connectent au niveau des images : IronPDF exporte des pages avec RasterizeToImageFiles(), ces images vont à OCR.net pour l'extraction de texte, et IronPDF réassemble les résultats en un PDF consultable.

Quelle résolution DPI devez-vous utiliser lors de l'exportation de pages PDF pour OCR ?

300 DPI est le minimum standard pour une précision OCR fiable. À 300 DPI, les bords du texte sont suffisamment nets pour que le modèle distingue des caractères similaires. À 150 DPI ou moins, la précision diminue sur les polices à empattement et les petits caractères. Utilisez 600 DPI uniquement lorsque les documents sources contiennent du texte très petit ou dégradé, car chaque page à 600 DPI produit des fichiers 4-5 fois plus volumineux.

Comment gérer les limites de taux d'API OCR.net en production ?

Les comptes gratuits d'OCR.net permettent 50 requêtes par heure. Construisez une logique de nouvelle tentative avec retour exponentiel dans votre appel OCR : interceptez la réponse 429, attendez Math.Pow(2, attempt) secondes, et réessayez jusqu'à un maximum configuré. Pour un débit plus élevé, passez à un plan OCR.net payant ou mettez en file d'attente les requêtes avec un service de travailleur en arrière-plan.

IronPDF peut-il fonctionner dans un conteneur Docker sur Linux ?

Oui. Ajoutez libgdiplus, libc6-dev, et libx11-dev à l'étape d'exécution de votre Dockerfile. Utilisez des builds multi-étapes pour garder l'image finale petite. Le variant du package IronPDF Slim réduit encore la taille de l'image en excluant les binaires de navigateur intégrés lorsque vous exécutez IronPDF Engine en tant que service distinct.

Comment créer un PDF consultable à partir des résultats OCR ?

Recueillez les chaînes de texte renvoyées par OCR.net, entourez-les dans du HTML avec une classe de saut de page par page de document, et passez le HTML à ChromePdfRenderer.RenderHtmlAsPdfAsync(). Le PDF résultant contient du texte sélectionnable, consultable que les utilisateurs et les moteurs de recherche peuvent indexer.

Ce flux de travail prend-il en charge les documents multilingues ?

Oui. OCR.net prend en charge plus de 60 langues. Sélectionnez la langue cible dans l'interface OCR.net ou l'appel d'API avant le traitement. IronPDF gère la sortie UTF-8 de manière native, de sorte que les langues avec des scripts non latins se rendent correctement dans le PDF consultable reconstruit.

Comment surveiller les performances du pipeline OCR en production ?

Ajoutez des compteurs, histogrammes et jauges Prometheus à votre service de traitement pour suivre les demandes totales, les distributions de durée et les travaux actifs. Associez les métriques Prometheus à la journalisation personnalisée d'IronPDF pour corréler les temps de rendu avec la latence de l'API OCR et identifier où les goulots d'étranglement se produisent.

Quelle est la différence entre OCR.net et IronOCR ?

OCR.net est un service web externe qui traite les images que vous téléchargez via l'API. IronOCR est une bibliothèque .NET de Iron Software qui exécute le traitement OCR localement dans votre application sans appels API externes. IronOCR est mieux adapté aux environnements hors ligne ou lorsque vous avez besoin d'une latence plus faible et d'un meilleur contrôle sur le moteur OCR.

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

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me