Falsche Zeilenumbrüche in einem Windows Forms TextBox

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

Der mit IronOCR extrahierte OCR-Text kann seine Zeilenumbrüche verlieren, wenn er in einem Windows Forms TextBox angezeigt wird, und auf weniger Zeilen als im Originalbild zusammenbrechen.

Die Ursache ist eine Diskrepanz bei Zeilenumbrüchen. IronOCR gibt Zeilenumbrüche als einfachen Zeilenvorschub (\n) zurück, aber ein Windows Forms TextBox rendert einen Umbruch nur, wenn es einen Wagenrücklauf gefolgt von einem Zeilenvorschub (\r\n) sieht. Ohne den Wagenrücklauf ignoriert das Steuerelement den Umbruch.

Die OCR wird anhand eines Quellbildes wie dem unten ausgeführt:

Quellbild, das IronOCR zur Textextraktion zugeführt wird

Die Bindung des Roh-OCR-Ergebnisses direkt an das Steuerelement lässt den Text auf ein paar Zeilen zusammenbrechen, anstatt das ursprüngliche Layout beizubehalten:

Windows Forms-Anwendung, die OCR-Text mit seinen auf zwei Zeilen zusammengebrochenen Zeilenumbrüchen zeigt

Lösung

1. Verwenden Sie AdvancedScan im 64-Bit-Modus

Installieren Sie das IronOcr.Extensions.AdvancedScan-Paket für eine verlässlichere Extraktion und führen Sie die Anwendung im 64-Bit-Modus aus, um Kompatibilitätsprobleme zu vermeiden.

<PackageReference Include="IronOcr.Extensions.AdvancedScan" />
<PackageReference Include="IronOcr.Extensions.AdvancedScan" />
XML

2. Normalisieren Sie die Zeilenenden

Ersetzen Sie jedes \n im Ergebnis durch \r\n, bevor Sie den Text dem Steuerelement zuweisen.

ocr.Language = OcrLanguage.ChineseSimplifiedBest;
using (var ocrInput = new OcrInput())
{
    ocrInput.LoadImage(txtPath.Text);
    ocrInput.Deskew();
    var result = ocr.ReadScreenShot(ocrInput);
    // Replace line feed with carriage return and line feed
    string ocrText = result.Text.Replace("\n", "\r\n");
    // Display the corrected text in a TextBox
    textBox1.Text = ocrText;
}
ocr.Language = OcrLanguage.ChineseSimplifiedBest;
using (var ocrInput = new OcrInput())
{
    ocrInput.LoadImage(txtPath.Text);
    ocrInput.Deskew();
    var result = ocr.ReadScreenShot(ocrInput);
    // Replace line feed with carriage return and line feed
    string ocrText = result.Text.Replace("\n", "\r\n");
    // Display the corrected text in a TextBox
    textBox1.Text = ocrText;
}
Imports System

ocr.Language = OcrLanguage.ChineseSimplifiedBest
Using ocrInput As New OcrInput()
    ocrInput.LoadImage(txtPath.Text)
    ocrInput.Deskew()
    Dim result = ocr.ReadScreenShot(ocrInput)
    ' Replace line feed with carriage return and line feed
    Dim ocrText As String = result.Text.Replace(vbLf, vbCrLf)
    ' Display the corrected text in a TextBox
    textBox1.Text = ocrText
End Using
$vbLabelText   $csharpLabel

Der Replace("\n", "\r\n")-Aufruf schreibt jeden Zeilenvorschub in das Wagenrücklauf/Zeilenvorschub-Paar um, das die TextBox erwartet, damit der angezeigte Text die gleiche Zeilenstruktur wie das ursprüngliche Bild beibehält.

3. Überprüfen Sie die Ausgabe

Führen Sie die Extraktion erneut durch und vergleichen Sie die TextBox-Inhalte mit dem Quellbild. Die Umbrüche sollten jetzt mit dem ursprünglichen Layout übereinstimmen.

Windows Forms-Anwendung, die den OCR-Text mit korrekt beibehaltenen Zeilenumbrüchen zeigt

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
Bereit anzufangen?
Nuget Downloads 6,136,090 | Version: 2026.7 gerade veröffentlicht
Still Scrolling Icon

Scrollst du immer noch?

Sie brauchen schnell einen Beweis? PM > Install-Package IronOcr
Führen Sie ein Beispiel aus und beobachten Sie, wie Ihr Bild zu durchsuchbarem Text wird.