Niepoprawne przerwania linii w TextBox Windows Forms
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.

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:

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" />
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
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.


