Bir Windows Forms Metin Kutusundaki Hatalı Satır Başlangıçları
IronOCR kullanılarak çıkarılan OCR metni, bir Windows Forms TextBox içinde gösterildiğinde satır aralıklarını kaybedebilir ve kaynak görüntüden daha az satıra sıkışabilir.
Sebep bir satır sonu uyumsuzluğudur. IronOCR, satır aralıklarını çıplak satır beslemesi (\n) olarak döndürür, ancak bir Windows Forms TextBox sadece bir taşıma satırı ve ardından bir satır beslemesi (\r\n) gördüğünde bir kesme çizer. Taşıma dönüşü olmazsa, kontrol kesmeyi görmezden gelir.
OCR, aşağıdaki gibi bir kaynak görüntüye karşı çalıştırılır:

Ham OCR sonucunu kontrolle birleştirmek, metni orijinal düzeni korumak yerine birkaç satıra indirir:

Çözüm
1. 64-bit Modunda AdvancedScan Kullan
Daha güvenilir bir çıkarım için IronOcr.Extensions.AdvancedScan paketini yükleyin ve uyumluluk sorunlarından kaçınmak için uygulamayı 64-bit modda çalıştırın.
<PackageReference Include="IronOcr.Extensions.AdvancedScan" />
<PackageReference Include="IronOcr.Extensions.AdvancedScan" />
2. Satır Sonlarını Normalleştir
Metni kontrole atamadan önce, sonuçtaki her \n öğesini \r\n ile değiştirin.
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
Replace("\n", "\r\n") çağrısı her satır beslemesini, TextBox tarafından beklenen taşıma/satır beslemesi çiftine yeniden yazar, böylece görüntülenen metin, orijinal görüntüyle aynı satır yapısını korur.
3. Çıktıyı Doğrula
Çıkarımı tekrar çalıştırın ve TextBox içeriğini kaynak görüntüyle karşılaştırın. Kesmeler artık orijinal düzenle aynı hizaya gelmelidir.


