Windows Forms TextBox에서 잘못된 줄 바꿈
IronOCR로 추출된 OCR 텍스트는 Windows Forms TextBox에 표시될 때 줄 바꿈을 잃고 원본 이미지보다 적은 줄에 압축될 수 있습니다.
원인은 새줄 일치 오류입니다. IronOCR은 줄 바꿈을 단순한 줄바꾸기 (\n)로 반환하지만, Windows Forms TextBox은 줄바캐리지 리턴이 줄바꾸기족에 이어질 때만 줄 바꿈을 렌더링합니다 (\r\n). 캐리지 리턴이 없으면, 제어기는 줄 바꿈을 무시합니다.
OCR은 아래와 같은 소스 이미지에 대해 실행됩니다:

원시 OCR 결과를 바로 컨트롤에 바인딩하면 텍스트가 몇 줄로 압축되어 원본 레이아웃을 유지하지 않습니다:

해결책
1. 64비트 모드에서 AdvancedScan 사용
보다 신뢰성 있는 추출을 위해 IronOcr.Extensions.AdvancedScan 패키지를 설치하고, 호환성 문제를 피하기 위해 앱을 64비트 모드에서 실행하십시오.
<PackageReference Include="IronOcr.Extensions.AdvancedScan" />
<PackageReference Include="IronOcr.Extensions.AdvancedScan" />
2. 줄 끝 정상화
결과 내의 모든 \n을 \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
Replace("\n", "\r\n") 호출은 각 줄바꾸기를 TextBox이 기대하는 캐리지 리턴/줄바꾸기 쌍으로 재작성하므로, 표시된 텍스트는 원본 이미지와 동일한 줄 구조를 유지합니다.
3. 출력 확인
추출을 다시 수행하고 TextBox 내용을 소스 이미지와 비교하십시오. 이제 줄 바꿈이 원본 레이아웃과 맞아야 합니다.


