Windows フォームの TextBox での不正な改行
IronOCR で抽出されたOCRテキストは、Windows フォームの TextBox に表示されると、元の画像よりも少ない行に折りたたまれることがあります。
原因は改行の不一致です。 IronOCR は改行を裸の改行フィード ( \n ) として返しますが、Windows フォームの TextBox はキャリッジリターンの後に改行フィードが続くときにのみ改行を表示します ( \r\n )。 キャリッジリターンがない場合、コントロールは改行を無視します。
OCR は以下のようなソース画像に対して実行されます。

生のOCR結果をコントロールに直接バインディングすると、元のレイアウトを保持する代わりにテキストが2行に折りたたまれます。

解決策
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 コンテンツをソース画像と比較します。 改行は元のレイアウトと一致するはずです。


