Zum Fußzeileninhalt springen
IRONPDF NUTZEN

Wie man einen PDF-OCR-Workflow mit OCR.net und IronPDF in C# erstellt

Diagramm, das den OCRNet-Verarbeitungsfluss mit 5 Stufen zeigt: Eingabebilder, Vorverarbeitung, Merkmalsextraktion, Sequenzmodellierung mit OCRNet und Dekodierung zur Erzeugung des extrahierten Textinhalts.

OCR.net ist ein Deep Learning Framework für optische Zeichenerkennung, das in Kombination mit IronPDF Text aus PDFs extrahiert und durchsuchbare Dokumente in .NET-Anwendungen erzeugt. Dieses Tutorial zeigt Ihnen, wie Sie diese beiden Tools verbinden, sodass Ihre Anwendung gescannte Dateien verarbeiten, PDF-Seiten für OCR rasterisieren und den erkannten Text zu einem neuen durchsuchbaren PDF zusammenstellen kann.

Das OCR.net Modell zeichnet sich bei der Erkennung von Szenentexten und der Zeichenerkennung in komplexen Umgebungen aus. Wenn Sie es mit der Rendering-Engine von IronPDF kombinieren, erhalten Sie eine vollständige Pipeline: Erstellen oder laden Sie ein PDF, exportieren Sie dessen Seiten als hochauflösende Bilder, senden Sie diese Bilder an OCR.net und rekonstruieren Sie die Ergebnisse zu einem vollständig durchsuchbaren Dokument.

Starten Sie jetzt mit IronPDF.
green arrow pointer

Wie fängt man mit IronPDF an?

Vor dem Aufbau des OCR-Workflows müssen Sie IronPDF in Ihrem Projekt installieren. Der schnellste Weg ist die NuGet-Paket-Manager-Konsole:

Install-Package IronPDF

Oder fügen Sie es direkt über die NuGet-Benutzeroberfläche hinzu, indem Sie nach IronPdf suchen. Sobald es installiert ist, wenden Sie Ihren Lizenzschlüssel beim Anwendungsstart an:

using IronPdf;

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

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

Eine kostenlose Testlizenz ist verfügbar, sodass Sie den vollständigen Funktionsumfang ohne Einschränkungen testen können. IronPDF unterstützt .NET 6, 7, 8 und 10 auf Windows, Linux und macOS, was bedeutet, dass derselbe Code in Desktopanwendungen, ASP.NET Core-Webdiensten und containerisierten Bereitstellungen läuft.

Für Docker-Umgebungen bietet IronPDF einen vorkonfigurierten Linux-Bereitstellungsleitfaden und schlanke Paketvarianten, die die Bildgröße reduzieren. Wenn Sie eine Remote-Render-Architektur bevorzugen, kann der IronPDF Engine als separater Dienst mit Clients auf jeder unterstützten Plattform ausgeführt werden.

Was ist OCRNet und wie funktioniert die optische Zeichenerkennung?

OCR.net ist ein Deep-Learning-Ansatz zur optischen Zeichenerkennung (OCR), der alphanumerische Zeichen in verschiedenen Schriftarten erkennt. Das Modell verwendet eine optimierte neuronale Netzwerkarchitektur, um räumliche Merkmale aus Eingabebildern zu erfassen. In Kombination mit PDF-Erstellungskapazitäten liefern diese trainierten Modelle eine Erkennung mit hoher Präzision bei gängigen Dokumenttypen.

Das Erkennungs-Framework hinter OCR.net integriert eine Gated Recurrent Unit (GRU), um die Merkmalserkennung zu verbessern und Aufgaben zur sequenzbasierten Bilderkennung zu verarbeiten. Dieses Hybridmodell erzielt durch die verbindende zeitliche Klassifikation (CTC) eine bemerkenswerte Genauigkeit, eine Technik, die ursprünglich für die Sequenzkennzeichnung eingeführt und für Dokumenten-OCR gut anwendbar ist. Laufende Verbesserungen erweitern weiterhin die Sprachunterstützung von OCR.net, insbesondere wenn sie mit PDF-Textextraktionstools integriert werden.

Wesentliche Bestandteile einer modernen OCR-Pipeline umfassen:

  • Texterkennung: Identifizierung textueller Inhaltsbereiche innerhalb eines Bildes mit trainierten Modellen
  • Erkennung von Szenentexten: Auffinden von Text in komplexen Hintergründen und dynamischen Umgebungen
  • Alphanumerische Zeichenerkennung: Verwendung trainierter Modelle zur Erkennung von Zeichen mit hoher Validierungsgenauigkeit
  • Mustererkennung: Anwendung von Bildverarbeitungstechniken zur leichten Erkennung von Szenentexten

Die auf GRU basierende Architektur und die verbindende zeitliche Klassifikation ermöglichen eine effiziente Ressourcennutzung in containerisierten Umgebungen, was OCR.net zu einer praktikablen Wahl für Kubernetes-Bereitstellungen macht, in denen Speicher- und CPU-Beschränkungen von Bedeutung sind. Die leichte Architektur hält die Docker-Bildgrößen handhabbar und behält dennoch eine starke Erkennungsgenauigkeit.

Wann sollten Sie OCR.net anstelle traditioneller OCR-Bibliotheken verwenden?

OCR.net ist die bessere Wahl bei der Verarbeitung komplexer Szenentexte, handgeschriebener Dokumente oder mehrsprachiger Inhalte, bei denen vorlagenbasierte OCR versagt. Es leistet besonders gute Arbeit in containerisierten Anwendungen, die konsistente Leistung über Hardwarekonfigurationen hinweg ohne externe Abhängigkeiten benötigen. Das Modell verarbeitet UTF-8-Codierung einwandfrei, was für die Unterstützung internationaler Sprachen von Bedeutung ist.

Traditionelle regex- oder vorlagenbasierte OCR-Systeme scheitern an variablen Schriftarten, Handschriften oder Bildern mit ungleichmäßiger Beleuchtung. Der neuronale Ansatz von OCR.net generalisiert besser über diese Szenarien hinweg, da er Merkmale lernt, anstatt feste Vorlagen zu vergleichen. Das bedeutet, dass wenn Ihre Dokumente sauber sind, maschinengeschriebener Text mit konsistenter Formatierung, eine leichtere Bibliothek möglicherweise schneller und ausreichend ist.

Was sind die häufigsten Ressourcenanforderungen für OCR.net in der Produktion?

Produktionsbereitstellungen benötigen in der Regel 2-4 CPU-Kerne und 4-8 GB RAM für solide Leistung. GPU-Beschleunigung bietet einen erheblichen Geschwindigkeitsvorteil für die Stapelverarbeitung in containerisierten Umgebungen mit dem NVIDIA Docker-Laufzeit. Diese Anforderungen passen gut zu Azure App Service und AWS Lambda-Bereitstellungen, obwohl die Speichergrenze von Lambda bedeutet, dass Sie Ihre spezifischen Dokumentgrößen vor der Verpflichtung benchmarken sollten.

Wie erstellt IronPDF PDF-Dokumente zur OCR-Verarbeitung?

IronPDF gibt .NET-Entwicklern die vollständige Kontrolle über die PDF-Erstellung. Die Bibliothek kann HTML-Strings, URLs und Datei-Eingaben in polierte PDFs über seine Chrome-basierte Rendering-Engine rendern. Für OCR-Workflows ist die kritische Funktion RasterizeToImageFiles(), die PDF-Seiten als hochauflösende Bilder exportiert, die zur Erkennung geeignet sind.

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

Die RasterizeToImageFiles()-Methode konvertiert PDF-Seiten zu PNG-Bildern bei der angegebenen DPI. Bei 300 DPI bleiben die Textkanten scharf genug, damit das OCR-Modell ähnlich aussehende Zeichen unterscheiden kann. Bei 150 DPI oder darunter fällt die Erkennungsgenauigkeit bei Serifen-Schriftarten und kleinem Druck deutlich ab. Nach dem Export laden Sie die PNG-Dateien in OCR.net hoch oder geben Sie sie direkt an ein lokales Modell weiter.

Screenshot eines PDF-Dokuments, das in einem Bildbetrachter angezeigt wird, zeigt die Kopfzeile 'OCR.net Dokumentenbericht' mit Untertiteltext zur Integration von Szenentexten und Texterkennung.

Warum beeinflusst die DPI-Einstellung die OCR-Genauigkeit?

Höhere DPI-Einstellungen (300-600) bewahren die Textklarheit, die das OCR-Modell benötigt, um Zeichen genau zu unterscheiden. Der Kompromiss besteht in der Dateigröße und der Verarbeitungszeit. Bei 300 DPI erzeugt eine einzelne A4-Seite ungefähr ein 2-3 MB großes PNG. Bei 600 DPI wächst das auf 8-12 MB. Für die meisten Dokumente ist 300 DPI das richtige Gleichgewicht. Rendering-Optionen ermöglichen es Ihnen, dies für jeden Dokumenttyp anzupassen, während Kompressionstechniken helfen, Dateigrößen nach Abschluss der OCR zu optimieren.

Wie verarbeitet IronPDF containerisierte Umgebungen?

Der native Engine von IronPDF sorgt für eine konsistente Rendering-Qualität in Linux-, Windows- und macOS-Containern. Für hochverfügbare Dienste integriert sich IronPDF mit ASP.NET Core-Health-Check-Endpunkten, sodass Sie Bereitschafts- und Lebensdauersonden implementieren können, die sicherstellen, dass das PDF-Rendering betriebsbereit ist, bevor der Datenverkehr an eine Container-Instanz geleitet wird.

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

Verwenden Sie benutzerdefiniertes Logging zusammen mit diesem Endpunkt, um Renderzeiten zu erfassen und Container zu identifizieren, die ein Leistungsabfall aufweisen, bevor sie vollständig ausfallen.

Wie extrahiert OCR.net Text aus PDF-Bildern?

Sobald Sie PNG-Exporte von IronPDF haben, laden Sie diese zur Texterkennung in OCR.net hoch. Die OCR.net-Pipeline verarbeitet Bilder und gibt normalisierten Text in verschiedenen Schriftstilen zurück. Es verarbeitet sowohl gedruckten als auch handgeschriebenen Text und unterstützt über 60 Dokumentensprachen.

Verwendung von OCR.net Online:

  1. Navigieren Sie zu https://ocr.net/
  2. Laden Sie das PNG- oder JPG-Bild (maximal 2 MB) hoch, das aus IronPDF exportiert wurde.
  3. Wählen Sie die Dokumentsprache aus den über 60 verfügbaren Optionen aus.
  4. Wählen Sie das Ausgabeformat: reiner Text oder durchsuchbares PDF.
  5. Klicken Sie auf "Jetzt konvertieren", um das Bild mit den OCR.net-Modellen zu verarbeiten.

Weboberfläche von OCR.net, die den Datei-Upload für page-1.png mit Spracheinstellung auf Englisch und Ausgabeformat auf Text zeigt

OCR.net bietet auch eine API für die automatische Verarbeitung. Kostenlose Konten sind auf 50 Anfragen pro Stunde begrenzt, was eine kritische Einschränkung für automatisierte Pipelines darstellt. Entwerfen Sie Ihre Integration, um Ratenbegrenzungsantworten mit exponentiellem Rückfall anstelle eines harten Fehlers elegant zu behandeln:

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

Für Zugänglichkeits-Workflows ermöglicht die OCR-Textextraktion sehbehinderten Benutzern, Audiofeedback von Dokumenten zu erhalten, die zuvor nur aus Bildern bestanden. Die Kombination des OCR.net-Ausgangs mit PDF/UA-Compliance durch IronPDF schafft Dokumente, die von unterstützenden Technologien effektiv navigiert werden können.

Wie erstellen Sie einen vollständigen Workflow mit IronPDF und OCR.net?

Die Verbindung von IronPDF mit OCR.net erzeugt End-to-End-Dokumentlösungen. Der Workflow umfasst drei Stufen: PDF-Seiten als Bilder exportieren, Bilder an OCR.net zur Texterkennung senden und den erkannten Text zu einem neuen durchsuchbaren PDF rekonstruieren.

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

Diese Pipeline ist absichtlich einfach gehalten. Stufe 1 erzeugt nummerierte PNG-Dateien. Stufe 2 sendet jede Datei an OCR.net und sammelt die zurückgegebenen Textzeichenfolgen. Stufe 3 umschließt diese Zeichenfolgen in HTML und verwendet IronPDF, um ein endgültiges PDF zu rendern, in dem der Text vollständig auswählbar und durchsuchbar ist. Sie können Stufe 3 erweitern, um PDF-Metadaten für die Dokumentenverwaltung oder Sicherheitseinstellungen für die Zugriffskontrolle anzuwenden.

Screenshot, der zwei PDF-Betrachter-Fenster nebeneinander vergleicht - links zeigt ein gescanntes PDF über 'Was ist ein PDF?' und rechts zeigt OCR.net-Ergebnisse, die denselben Textinhalt erfolgreich extrahiert haben.

Welche Docker-Konfiguration funktioniert am besten für diesen Workflow?

Multi-Stage-Docker-Builds halten das Endbild klein, während alle zur Laufzeit erforderlichen Abhängigkeiten auf Linux enthalten sind, die IronPDF benötigt:

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"]

Für Produktionsskalierungen ziehen Sie Kubernetes-Jobs für Batch-OCR-Operationen in Betracht. Kubernetes-Jobs bieten automatisches Wiederholen, Parallelitätskontrolle und Ressourcenisolation, sodass fehlgeschlagene Dokumentenaufgaben andere Dienste nicht beeinflussen. Setzen Sie parallelism, um Ihrer OCR.net-API-Stufe zu entsprechen, und backoffLimit, um zu steuern, wie oft ein fehlgeschlagenes Pod erneut versucht, bevor der Job die Aufgabe als fehlgeschlagen markiert.

Wie überwachen Sie Leistungsmetriken in der Produktion?

Die Verfolgung der OCR-Verarbeitungszeiten und Erfolgsraten hilft, Engpässe zu identifizieren, bevor sie die Endnutzer beeinträchtigen. Prometheus mit benutzerdefinierten Metriken ist ein praktischer Ansatz:

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

Kombinieren Sie diese Metriken mit den Logging-Funktionen von IronPDF, um Renderzeiten mit OCR-Dauern zu korrelieren. Wenn die OCR-Dauer ansteigt, ohne dass es zu einem Anstieg der Renderzeit kommt, liegt der Engpass im OCR.net-API-Aufruf oder in Ihrem Netzwerkpfad zu diesem, nicht im Schritt der PDF-Erstellung.

Was sind Ihre nächsten Schritte?

OCR.net in Kombination mit IronPDF bietet Ihnen einen praktischen Weg zur Textextraktion und Erzeugung durchsuchbarer PDFs in .NET. Die Pipeline deckt die wichtigsten Anwendungsfälle ab: Erstellen von PDFs aus HTML, Exportieren von Seiten in OCR-kompatibler Auflösung, Senden von Bildern an OCR.net und Neuassemblieren der Ergebnisse zu einem vollständig durchsuchbaren Dokument.

Wichtige Überlegungen bei der Umstellung auf die Produktion:

  • Container-Setup: Verwenden Sie IronPDF-Slim-Pakete und Multi-Stage-Docker-Builds, um die Bildgrößen handhabbar zu halten
  • Ressourcenplanung: Konfigurieren Sie Speichergrenzen, die zu Ihren Dokumentgrößen und dem Ziel des gleichzeitigen Zugriffs passen
  • Überwachung: Implementieren Sie Prometheus-Metriken neben der IronPDF-Logging, um Beeinträchtigungen frühzeitig zu erkennen
  • Durchsatz: Verwenden Sie asynchrone Operationen und das Management von Batch-Warteschlangen, um innerhalb der Ratenbegrenzungen von OCR.net zu arbeiten
  • Zuverlässigkeit: Entwickeln Sie eine Backoff-Rückfalllogik mit exponentiellem Ansatz und Leistungsschaltern um den OCR.net-API-Aufruf

Beginnen Sie mit der kostenlosen Testlizenz, um den vollständigen Workflow von Anfang bis Ende zu testen, bevor Sie sich für eine Produktionslizenz entscheiden. Die Testversion entfernt das Wasserzeichen und entsperrt alle Funktionen, sodass Ihre Benchmark-Ergebnisse das Produktionsverhalten genau widerspiegeln. Wenn Sie bereit sind, den Einsatz zu starten, überprüfen Sie die IronPDF-Lizenzoptionen, um die Stufe zu finden, die Ihrem Nutzungsmuster entspricht.

Häufig gestellte Fragen

Was macht OCR.net und wie verbindet es sich mit IronPDF?

OCR.net ist ein Deep-Learning-OCR-Dienst, der Bilddaten entgegennimmt und erkannten Text zurückgibt. IronPDF erzeugt PDFs und exportiert deren Seiten als Bilder. Die beiden Werkzeuge verbinden sich auf der Bildebene: IronPDF exportiert Seiten mit RasterizeToImageFiles(), diese Bilder gehen zu OCR.net für die Textextraktion, und IronPDF setzt die Ergebnisse als durchsuchbares PDF zusammen.

Welche DPI sollten Sie beim Exportieren von PDF-Seiten für OCR verwenden?

300 DPI ist das standardmäßige Minimum für zuverlässige OCR-Genauigkeit. Bei 300 DPI sind Textkanten scharf genug, damit das Modell ähnliche Zeichen unterscheiden kann. Bei 150 DPI oder weniger sinkt die Genauigkeit bei Serifenschriften und kleinem Druck. Verwenden Sie 600 DPI nur, wenn die Quelldokumente sehr kleinen oder beschädigten Text enthalten, da jede Seite bei 600 DPI Dateien produziert, die 4-5 Mal größer sind.

Wie gehen Sie in der Produktion mit OCR.net API-Rate-Limits um?

Kostenlose OCR.net-Konten erlauben 50 Anfragen pro Stunde. Bauen Sie eine exponentielle Backoff-Retry-Logik in Ihren OCR-Aufruf ein: Fangen Sie die Antwort 429 ab, warten Sie Math.Pow(2, attempt) Sekunden, und versuchen Sie es bis zu einem konfigurierten Maximum erneut. Für höheren Durchsatz, upgraden Sie zu einem bezahlten OCR.net-Plan oder stellen Sie Anfragen mit einem Hintergrundarbeiter in die Warteschlange.

Kann IronPDF innerhalb eines Docker-Containers unter Linux laufen?

Ja. Fügen Sie libgdiplus, libc6-dev und libx11-dev zur Laufzeitstufe Ihrer Dockerfile hinzu. Verwenden Sie Multi-Stage-Builds, um das endgültige Image klein zu halten. Die IronPDF Slim-Paketvariante reduziert die Bildgröße weiter, indem sie gebündelte Browser-Binärdateien ausschließt, wenn Sie IronPDF Engine als separaten Dienst ausführen.

Wie erstellen Sie ein durchsuchbares PDF aus OCR-Ergebnissen?

Sammeln Sie die Textstrings, die von OCR.net zurückgegeben werden, wickeln Sie sie in HTML mit einer Seitenumbruch-Klasse pro Dokumentseite ein und geben Sie das HTML an ChromePdfRenderer.RenderHtmlAsPdfAsync() weiter. Das resultierende PDF enthält auswählbaren, durchsuchbaren Text, den Benutzer und Suchmaschinen indexieren können.

Unterstützt dieser Workflow mehrsprachige Dokumente?

Ja. OCR.net unterstützt über 60 Sprachen. Wählen Sie die Zielsprache in der OCR.net-Schnittstelle oder dem API-Aufruf, bevor die Verarbeitung beginnt. IronPDF verarbeitet UTF-8-Ausgabe nativ, sodass Sprachen mit nicht-lateinischen Schriften im rekonstruierten durchsuchbaren PDF korrekt dargestellt werden.

Wie überwachen Sie die Leistung der OCR-Pipeline in der Produktion?

Fügen Sie Prometheus-Zähler, Histogramme und Pegel ein, um Ihre Bearbeitungsdienste zu verfolgen, einschließlich der gesamten Anfragen, Dauerverteilungen und aktiver Jobs. Kombinieren Sie Prometheus-Metriken mit IronPDFs benutzerdefiniertem Logging, um die Renderzeiten mit der OCR-API-Latenz zu korrelieren und Engpässe zu identifizieren.

Was ist der Unterschied zwischen OCR.net und IronOCR?

OCR.net ist ein externer Webdienst, der Bilder verarbeitet, die Sie über die API hochladen. IronOCR ist eine .NET-Bibliothek von Iron Software, die OCR-Verarbeitung lokal innerhalb Ihrer Anwendung ohne externe API-Aufrufe durchführt. IronOCR ist besser geeignet für Offline-Umgebungen oder wenn Sie geringere Latenz und mehr Kontrolle über die OCR-Engine benötigen.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen

Iron Support Team

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