Texterkennung Ergebnisse visualisieren – IronOCR OCR Software in C
Die HighlightTextAndSaveAsImages-Methode von IronOCR visualisiert Texterkennung-Ergebnisse, indem sie Begrenzungsrahmen um erkannten Text (Zeichen, Wörter, Zeilen oder Absätze) zeichnet und diese als Diagnosebilder speichert. So können Entwickler die Genauigkeit der OCR Software überprüfen.
Die Visualisierung von OCR-Ergebnissen beinhaltet das Rendern von Begrenzungsrahmen um bestimmte Textelemente, die die Engine in einem Bild erkannt hat. Bei diesem Verfahren werden die genauen Positionen einzelner Zeichen, Wörter, Zeilen oder Absätze hervorgehoben, so dass eine klare Karte des erkannten Inhalts entsteht.
Dieses visuelle Feedback ist entscheidend für die Fehlersuche und die Überprüfung der Genauigkeit der OCR-Ausgabe, da es zeigt, was die Software erkannt hat und wo sie Fehler gemacht hat. Bei der Arbeit mit komplexen Dokumenten oder der Behebung von Erkennungsproblemen wird die visuelle Hervorhebung zu einem wichtigen Diagnoseinstrument.
Dieser Artikel demonstriert die Diagnosefähigkeiten von IronOCR anhand der Methode HighlightTextAndSaveAsImages. Diese Funktion hebt bestimmte Textabschnitte hervor und speichert sie als Bilder zur Überprüfung. Ob beim Aufbau eines Dokumentenverarbeitungssystems, bei der Implementierung von Qualitätskontrollmaßnahmen oder bei der Validierung Ihrer OCR-Implementierung - diese Funktion bietet eine sofortige visuelle Rückmeldung darüber, was die OCR-Engine erkennt.
Schnellstart: Wörter in Ihrem PDF sofort hervorheben
Dieses Snippet demonstriert die Verwendung von IronOCR: Laden Sie ein PDF-Dokument und markieren Sie jedes Wort im Dokument, um das Ergebnis als Bild zu speichern. Nur eine Zeile, um eine visuelle Rückmeldung über Ihre OCR-Ergebnisse zu erhalten.
-
Installieren Sie IronOCR mit NuGet Package Manager
PM > Install-Package IronOcr -
Kopieren Sie diesen Codeausschnitt und führen Sie ihn aus.
new IronOcr.OcrInput().LoadPdf("document.pdf").HighlightTextAndSaveAsImages(new IronOcr.IronTesseract(), "highlight_page_", IronOcr.ResultHighlightType.Word); -
Bereitstellen zum Testen in Ihrer Live-Umgebung
Beginnen Sie noch heute, IronOCR in Ihrem Projekt zu verwenden, mit einer kostenlosen Testversion
Minimaler Arbeitsablauf (5 Schritte)
- C#-Bibliothek herunterladen zum Erkennen von Seitenrotation
- OCR-Engine instanziieren
- Laden Sie das PDF-Dokument mit `LoadPdf`
- Mit `HighlightTextAndSaveAsImages` Textabschnitte hervorheben und als Bilder speichern
Wie kann ich Text markieren und als Bild speichern?
Das Hervorheben von Text und das Speichern als Bild ist mit IronOCR ganz einfach. Laden Sie eine vorhandene PDF-Datei mit LoadPdf und rufen Sie dann die Methode HighlightTextAndSaveAsImages auf, um Textabschnitte hervorzuheben und als Bilder zu speichern. Diese Technik prüft die OCR-Genauigkeit und behebt Texterkennungsprobleme in Ihren Dokumenten.
Die Methode benötigt drei Parameter: die IronTesseract OCR-Engine , ein Präfix für den Ausgabedateinamen und eine Aufzählung aus ResultHighlightType, die den Typ des hervorzuhebenden Textes angibt. Dieses Beispiel verwendet ResultHighlightType.Paragraph, um Textblöcke als Absätze hervorzuheben.
In diesem Beispiel wird eine PDF-Datei mit drei Absätzen verwendet.
Wie sieht die Eingabe-PDF aus?
Wie implementiere ich den Hervorhebungscode?
Der nachstehende Beispielcode zeigt die grundlegende Implementierung unter Verwendung der OcrInput-Klasse.
:path=/static-assets/ocr/content-code-examples/how-to/highlight-texts-as-images.cs
using IronOcr;
IronTesseract ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();
ocrInput.LoadPdf("document.pdf");
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_page_", ResultHighlightType.Paragraph);
Imports IronOcr
Private ocrTesseract As New IronTesseract()
Private ocrInput = New OcrInput()
ocrInput.LoadPdf("document.pdf")
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_page_", ResultHighlightType.Paragraph)
Was zeigen die Ausgabebilder?
Wie im obigen Ausgabebild zu sehen ist, wurden alle drei Absätze mit einem hellroten Kasten hervorgehoben. Diese visuelle Darstellung hilft Entwicklern, schnell zu erkennen, wie die OCR-Engine das Dokument in lesbare Blöcke unterteilt.
Was sind die verschiedenen Optionen von ResultHighlightType?
Im obigen Beispiel wurde ResultHighlightType.Paragraph verwendet, um Textblöcke hervorzuheben. IronOCR bietet zusätzliche Hervorhebungsoptionen durch dieses Enum. Im Folgenden finden Sie eine vollständige Liste der verfügbaren Typen, die jeweils unterschiedlichen Diagnosezwecken dienen.
Zeichen: Zeichnet einen Begrenzungsrahmen um jedes einzelne von der OCR-Engine erkannte Zeichen. Nützlich für die Fehlersuche bei der Zeichenerkennung oder bei speziellen Schriftarten, insbesondere bei der Arbeit mit angepassten Sprachdateien.
Wort: Hebt jedes vollständige Wort hervor, das von der Engine erkannt wird. Ideal für die Validierung von Wortgrenzen und die korrekte Worterkennung, insbesondere bei der Implementierung von Barcode- und QR-Lesen neben der Texterkennung.
Line: Hebt jede erkannte Textzeile hervor. Nützlich für Dokumente mit komplexem Layout, die eine Überprüfung der Zeilenerkennung erfordern, z. B. bei der Verarbeitung gescannter Dokumente.
Paragraph: Hebt ganze Textblöcke hervor, die als Absätze gruppiert sind. Perfekt für das Verständnis des Dokumentenlayouts und die Überprüfung der Segmentierung von Textblöcken, besonders nützlich bei der Arbeit mit Tabellenextraktion.
Wie vergleiche ich verschiedene Highlight-Typen?
Dieses umfassende Beispiel demonstriert die Erstellung von Hervorhebungen für alle verschiedenen Typen desselben Dokuments, so dass Sie die Ergebnisse vergleichen können:
using IronOcr;
using System;
// Initialize the OCR engine with custom configuration
IronTesseract ocrTesseract = new IronTesseract();
// Configure for better accuracy if needed
ocrTesseract.Configuration.ReadBarCodes = false; // Disable if not needed for performance
ocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;
// Load the PDF document
using var ocrInput = new OcrInput();
ocrInput.LoadPdf("document.pdf");
// Generate highlights for each type
Console.WriteLine("Generating character-level highlights...");
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_character_", ResultHighlightType.Character);
Console.WriteLine("Generating word-level highlights...");
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_word_", ResultHighlightType.Word);
Console.WriteLine("Generating line-level highlights...");
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_line_", ResultHighlightType.Line);
Console.WriteLine("Generating paragraph-level highlights...");
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_paragraph_", ResultHighlightType.Paragraph);
Console.WriteLine("All highlight images have been generated successfully!");
using IronOcr;
using System;
// Initialize the OCR engine with custom configuration
IronTesseract ocrTesseract = new IronTesseract();
// Configure for better accuracy if needed
ocrTesseract.Configuration.ReadBarCodes = false; // Disable if not needed for performance
ocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;
// Load the PDF document
using var ocrInput = new OcrInput();
ocrInput.LoadPdf("document.pdf");
// Generate highlights for each type
Console.WriteLine("Generating character-level highlights...");
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_character_", ResultHighlightType.Character);
Console.WriteLine("Generating word-level highlights...");
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_word_", ResultHighlightType.Word);
Console.WriteLine("Generating line-level highlights...");
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_line_", ResultHighlightType.Line);
Console.WriteLine("Generating paragraph-level highlights...");
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_paragraph_", ResultHighlightType.Paragraph);
Console.WriteLine("All highlight images have been generated successfully!");
Imports IronOcr
Imports System
' Initialize the OCR engine with custom configuration
Dim ocrTesseract As New IronTesseract()
' Configure for better accuracy if needed
ocrTesseract.Configuration.ReadBarCodes = False ' Disable if not needed for performance
ocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd
' Load the PDF document
Using ocrInput As New OcrInput()
ocrInput.LoadPdf("document.pdf")
' Generate highlights for each type
Console.WriteLine("Generating character-level highlights...")
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_character_", ResultHighlightType.Character)
Console.WriteLine("Generating word-level highlights...")
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_word_", ResultHighlightType.Word)
Console.WriteLine("Generating line-level highlights...")
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_line_", ResultHighlightType.Line)
Console.WriteLine("Generating paragraph-level highlights...")
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_paragraph_", ResultHighlightType.Paragraph)
End Using
Console.WriteLine("All highlight images have been generated successfully!")
Wie gehe ich mit mehrseitigen Dokumenten um?
Bei der Verarbeitung mehrseitiger PDFs oder Multi-Frame-TIFF-Dateien behandelt die Hervorhebungsfunktion automatisch jede Seite einzeln. Dies ist besonders nützlich bei der Implementierung von PDF OCR Textextraktion Workflows:
using IronOcr;
using System.IO;
IronTesseract ocrTesseract = new IronTesseract();
// Load a multi-page document
using var ocrInput = new OcrInput();
ocrInput.LoadPdf("multi-page-document.pdf");
// Create output directory if it doesn't exist
string outputDir = "highlighted_pages";
Directory.CreateDirectory(outputDir);
// Generate highlights for each page
// Files will be named: highlighted_pages/page_0.png, page_1.png, etc.
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract,
Path.Combine(outputDir, "page_"),
ResultHighlightType.Word);
// Count generated files for verification
int pageCount = Directory.GetFiles(outputDir, "page_*.png").Length;
Console.WriteLine($"Generated {pageCount} highlighted page images");
using IronOcr;
using System.IO;
IronTesseract ocrTesseract = new IronTesseract();
// Load a multi-page document
using var ocrInput = new OcrInput();
ocrInput.LoadPdf("multi-page-document.pdf");
// Create output directory if it doesn't exist
string outputDir = "highlighted_pages";
Directory.CreateDirectory(outputDir);
// Generate highlights for each page
// Files will be named: highlighted_pages/page_0.png, page_1.png, etc.
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract,
Path.Combine(outputDir, "page_"),
ResultHighlightType.Word);
// Count generated files for verification
int pageCount = Directory.GetFiles(outputDir, "page_*.png").Length;
Console.WriteLine($"Generated {pageCount} highlighted page images");
Imports IronOcr
Imports System.IO
Dim ocrTesseract As New IronTesseract()
' Load a multi-page document
Using ocrInput As New OcrInput()
ocrInput.LoadPdf("multi-page-document.pdf")
' Create output directory if it doesn't exist
Dim outputDir As String = "highlighted_pages"
Directory.CreateDirectory(outputDir)
' Generate highlights for each page
' Files will be named: highlighted_pages/page_0.png, page_1.png, etc.
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract,
Path.Combine(outputDir, "page_"),
ResultHighlightType.Word)
' Count generated files for verification
Dim pageCount As Integer = Directory.GetFiles(outputDir, "page_*.png").Length
Console.WriteLine($"Generated {pageCount} highlighted page images")
End Using
Was sind die besten Praktiken für die Leistung?
Beachten Sie bei der Verwendung der Hervorhebungsfunktion die folgenden Best Practices:
-
Dateigröße: Hervorgehobene Bilder können groß sein, insbesondere bei hochauflösenden Dokumenten. Berücksichtigen Sie bei der Verarbeitung großer Stapel den verfügbaren Speicherplatz im Ausgabeverzeichnis. Tipps zur Optimierung finden Sie in unserem fast OCR configuration guide.
-
Leistungsfähigkeit: Das Erzeugen von Hervorhebungen ist mit einem zusätzlichen Verarbeitungsaufwand verbunden. Für Produktionssysteme, in denen Highlights nur gelegentlich benötigt werden, sollten sie als separater Diagnoseprozess und nicht als Teil des Hauptarbeitsablaufs implementiert werden. Erwägen Sie die Verwendung von Multithreaded OCR für die Stapelverarbeitung.
- Fehlerbehandlung: Implementieren Sie immer eine angemessene Fehlerbehandlung, wenn Sie mit Dateioperationen arbeiten:
try
{
using var ocrInput = new OcrInput();
ocrInput.LoadPdf("document.pdf");
// Apply image filters if needed for better recognition
ocrInput.Deskew(); // Correct slight rotations
ocrInput.DeNoise(); // Remove background noise
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_", ResultHighlightType.Word);
}
catch (Exception ex)
{
Console.WriteLine($"Error during highlighting: {ex.Message}");
// Log error details for debugging
}
try
{
using var ocrInput = new OcrInput();
ocrInput.LoadPdf("document.pdf");
// Apply image filters if needed for better recognition
ocrInput.Deskew(); // Correct slight rotations
ocrInput.DeNoise(); // Remove background noise
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_", ResultHighlightType.Word);
}
catch (Exception ex)
{
Console.WriteLine($"Error during highlighting: {ex.Message}");
// Log error details for debugging
}
Imports System
Try
Using ocrInput As New OcrInput()
ocrInput.LoadPdf("document.pdf")
' Apply image filters if needed for better recognition
ocrInput.Deskew() ' Correct slight rotations
ocrInput.DeNoise() ' Remove background noise
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_", ResultHighlightType.Word)
End Using
Catch ex As Exception
Console.WriteLine($"Error during highlighting: {ex.Message}")
' Log error details for debugging
End Try
Wie lässt sich die Hervorhebung in die OCR-Ergebnisse integrieren?
Die Hervorhebungsfunktion arbeitet nahtlos mit den Ergebnisobjekten von IronOCR zusammen und ermöglicht es Ihnen, visuelle Hervorhebungen mit extrahierten Textdaten zu korrelieren. Dies ist besonders nützlich, wenn Sie track OCR progress bestimmte Abschnitte des erkannten Textes überprüfen oder validieren müssen. Die Klasse OcrResult liefert detaillierte Informationen zu jedem erkannten Element, die direkt den von dieser Methode erzeugten visuellen Hervorhebungen entsprechen.
Was ist, wenn ich auf Probleme stoße?
Bei Problemen mit der Hervorhebungsfunktion finden Sie in der Allgemeinen Anleitung zur Fehlerbehebung allgemeine Lösungen. Für spezifische Probleme im Zusammenhang mit Hervorhebungen:
- Leere Ausgabebilder: Stellen Sie sicher, dass das Eingabedokument lesbaren Text enthält und dass die OCR-Engine ordnungsgemäß für Ihren Dokumententyp konfiguriert ist. Möglicherweise müssen Sie Bildoptimierungsfilter oder
fixing image orientationanwenden, um die Erkennung zu verbessern. - Fehlende Highlights: Einige Dokumenttypen erfordern möglicherweise eine spezielle Vorverarbeitung. Versuchen Sie, Bildfilter oder
fixing image orientationanzuwenden, um die Erkennung zu verbessern. - Leistungsprobleme : Bei großen Dokumenten sollten Sie die Implementierung von
multithreadingin Betracht ziehen, um die Verarbeitungsgeschwindigkeit zu verbessern. Lesen Sie außerdem unseren Leitfaden zur Beseitigung von Scans geringer Qualität, wenn Sie mit minderwertigen Eingaben arbeiten.
Wie kann ich dies für das Debugging in der Produktion verwenden?
Die Hervorhebungsfunktion dient als hervorragendes Debugging-Tool für die Produktion. In Verbindung mit Abbruch-Tokens für lang laufende Operationen und Timeouts können Sie ein robustes Diagnosesystem erstellen. Erwägen Sie die Implementierung eines Debug-Modus in Ihrer Anwendung:
public class OcrDebugger
{
private readonly IronTesseract _tesseract;
private readonly bool _debugMode;
public OcrDebugger(bool enableDebugMode = false)
{
_tesseract = new IronTesseract();
_debugMode = enableDebugMode;
}
public OcrResult ProcessDocument(string filePath)
{
using var input = new OcrInput();
input.LoadPdf(filePath);
// Apply preprocessing
input.Deskew();
input.DeNoise();
// Generate debug highlights if in debug mode
if (_debugMode)
{
string debugPath = $"debug_{Path.GetFileNameWithoutExtension(filePath)}_";
input.HighlightTextAndSaveAsImages(_tesseract, debugPath, ResultHighlightType.Word);
}
// Perform actual OCR
return _tesseract.Read(input);
}
}
public class OcrDebugger
{
private readonly IronTesseract _tesseract;
private readonly bool _debugMode;
public OcrDebugger(bool enableDebugMode = false)
{
_tesseract = new IronTesseract();
_debugMode = enableDebugMode;
}
public OcrResult ProcessDocument(string filePath)
{
using var input = new OcrInput();
input.LoadPdf(filePath);
// Apply preprocessing
input.Deskew();
input.DeNoise();
// Generate debug highlights if in debug mode
if (_debugMode)
{
string debugPath = $"debug_{Path.GetFileNameWithoutExtension(filePath)}_";
input.HighlightTextAndSaveAsImages(_tesseract, debugPath, ResultHighlightType.Word);
}
// Perform actual OCR
return _tesseract.Read(input);
}
}
Imports System.IO
Public Class OcrDebugger
Private ReadOnly _tesseract As IronTesseract
Private ReadOnly _debugMode As Boolean
Public Sub New(Optional enableDebugMode As Boolean = False)
_tesseract = New IronTesseract()
_debugMode = enableDebugMode
End Sub
Public Function ProcessDocument(filePath As String) As OcrResult
Using input As New OcrInput()
input.LoadPdf(filePath)
' Apply preprocessing
input.Deskew()
input.DeNoise()
' Generate debug highlights if in debug mode
If _debugMode Then
Dim debugPath As String = $"debug_{Path.GetFileNameWithoutExtension(filePath)}_"
input.HighlightTextAndSaveAsImages(_tesseract, debugPath, ResultHighlightType.Word)
End If
' Perform actual OCR
Return _tesseract.Read(input)
End Using
End Function
End Class
Wo soll ich als nächstes hin?
Jetzt, wo Sie wissen, wie Sie die Hervorhebungsfunktion verwenden können, können Sie sie erkunden:
- Erstellung durchsuchbarer PDFs aus Ihren OCR-Ergebnissen
- Lesen bestimmter Dokumenttypen wie Pässe oder Lizenzen
- Einrichten von IronOCR in Ihrer Entwicklungsumgebung mit unseren Einführungsanleitungen
- Implementierung von 125 internationaler Sprachunterstützung für globale Anwendungen
- Verwendung des Filter-Assistenten zur Optimierung der Bildverarbeitung
Für den produktiven Einsatz müssen Sie eine Lizenz erwerben, um Wasserzeichen zu entfernen und die volle Funktionalität zu nutzen.
Häufig gestellte Fragen
Wie kann ich OCR-Ergebnisse in meiner C#-Anwendung visualisieren?
IronOCR bietet die HighlightTextAndSaveAsImages-Methode, die OCR-Ergebnisse durch das Zeichnen von Begrenzungsrahmen um erkannte Textelemente (Zeichen, Wörter, Zeilen oder Absätze) visualisiert und sie als Diagnosebilder speichert. Diese Funktion hilft Entwicklern, die OCR-Genauigkeit zu überprüfen und Erkennungsprobleme zu beheben.
Wie lassen sich Wörter in einem PDF-Dokument am einfachsten hervorheben?
Mit IronOCR können Sie Wörter in einem PDF mit nur einer Zeile Code hervorheben: new IronOcr.OcrInput().LoadPdf("document.pdf").HighlightTextAndSaveAsImages(new IronOcr.IronTesseract(), "highlight_page_", IronOcr.ResultHighlightType.Word). Dies lädt die PDF-Datei und erzeugt Bilder mit hervorgehobenen Wörtern.
Welche Parameter benötigt die Methode HighlightTextAndSaveAsImages?
Die Methode HighlightTextAndSaveAsImages in IronOCR erfordert drei Parameter: die Instanz der IronTesseract OCR-Engine, einen Präfix-String für den Ausgabedateinamen und einen Enum-Wert ResultHighlightType, der angibt, welche Textelemente hervorgehoben werden sollen (Zeichen, Wort, Zeile oder Absatz).
Wie werden die Ausgabebilder bei der Verwendung von Texthervorhebungen benannt?
IronOCR benennt die Ausgabebilder automatisch, indem es das von Ihnen angegebene Präfix mit einer Seitenkennung kombiniert. Wenn Sie z. B. "highlight_page_" als Präfix verwenden, erzeugt die Methode Dateien mit den Namen "highlight_page_0", "highlight_page_1" usw. für jede Seite in Ihrem Dokument.
Warum ist die visuelle Hervorhebung für die OCR-Entwicklung wichtig?
Die visuelle Hervorhebung in IronOCR liefert wichtiges diagnostisches Feedback, indem sie genau anzeigt, welchen Text die OCR-Engine erkannt hat und wo mögliche Fehler auftreten. Diese visuelle Darstellung hilft Entwicklern, Erkennungsprobleme zu beheben, die OCR-Genauigkeit zu überprüfen und Probleme in komplexen Dokumenten zu beheben.
Kann ich neben Wörtern auch andere Arten von Textelementen hervorheben?
Ja, IronOCR's ResultHighlightType enum ermöglicht es Ihnen, verschiedene Textelemente hervorzuheben, einschließlich einzelner Zeichen, Wörter, Zeilen oder ganzer Absätze. Geben Sie einfach den gewünschten Typ an, wenn Sie die Methode HighlightTextAndSaveAsImages aufrufen, um verschiedene Ebenen der Texterkennung zu visualisieren.

