Niepoprawne przerwania linii w TextBox Windows Forms

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

Wyodrębniony tekst OCR za pomocą IronOCR może tracić swoje przerwania linii, gdy jest wyświetlany w @TextBox@ Windows Forms, zlewając się na mniej linii niż obraz źródłowy.

Spowodowane jest to niezgodnością znaków nowej linii. IronOCR zwraca przerwania linii jako samodzielny znak końca linii (\n@), ale TextBox@ Windows Forms wyświetla łamanie linii tylko, gdy widzi powrót karetki przed znakiem końca linii (\r\n). Bez powrotu karetki, element ignoruje przerwanie.

OCR jest uruchamiany przeciwko obrazowi źródłowemu jak poniżej.

Obraz źródłowy przekazany do IronOCR w celu wyodrębnienia tekstu

Bezpośrednie przypisanie wyniku surowego OCR bezpośrednio do elementu spowoduje, że tekst złoży się do kilku linii zamiast zachowywać oryginalny rozkład:

Aplikacja Windows Forms pokazująca tekst OCR z jego przerwaniami linii złożonymi na dwie linie

Rozwiązanie

1. Użyj AdvancedScan w trybie 64-bitowym

Zainstaluj IronOcr.Extensions.AdvancedScan pakiet dla bardziej niezawodnego wyodrębniania i uruchom aplikację w trybie 64-bitowym, aby uniknąć problemów z kompatybilnością.

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

2. Normalizuj zakończenia linii

Zastąp każdy \n w wyniku \r\n

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

Wywołanie Replace("\n", "\r\n") przepisało każdy znak końca linii na parę powroty karetki/końce linii, których oczekuje TextBox

3. Zweryfikuj wynik

Ponownie uruchom proces wyodrębniania i porównaj TextBox zawartość z obrazem źródłowym. Przerwania linii powinny teraz pasować do oryginalnego rozkładu.

Aplikacja Windows Forms pokazująca tekst OCR z poprawnie zachowanymi przerwaniami linii

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 6,136,090 | Wersja: 2026.7 właśnie wydany
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronOcr
uruchom próbkę obserwuj, jak twój obraz staje się tekstem z możliwością wyszukiwania.