Windows フォームの TextBox での不正な改行

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

IronOCR で抽出されたOCRテキストは、Windows フォームの TextBox に表示されると、元の画像よりも少ない行に折りたたまれることがあります。

原因は改行の不一致です。 IronOCR は改行を裸の改行フィード ( \n ) として返しますが、Windows フォームの TextBox はキャリッジリターンの後に改行フィードが続くときにのみ改行を表示します ( \r\n )。 キャリッジリターンがない場合、コントロールは改行を無視します。

OCR は以下のようなソース画像に対して実行されます。

IronOCRに渡されたテキスト抽出のためのソース画像

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

改行が2行に折りたたまれたOCRテキストを表示するWindowsフォームアプリケーション

解決策

1. 64ビットモードでAdvancedScanを使用する

より信頼性の高い抽出のために IronOcr.Extensions.AdvancedScan パッケージをインストールし、互換性の問題を避けるためにアプリケーションを64ビットモードで実行します。

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

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
$vbLabelText   $csharpLabel

Replace("\n", "\r\n") 呼び出しは、各改行を TextBox が期待するキャリッジリターン/ 改行対に書き換えるので、表示されるテキストは元の画像と同じ行構造を保持します。

3. 出力を確認する

再度抽出を実行し、TextBox コンテンツをソース画像と比較します。 改行は元のレイアウトと一致するはずです。

 改行が正しく保存されたOCRテキストを表示するWindowsフォームアプリケーション

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

準備はできましたか?
Nuget ダウンロード 6,136,090 | バージョン: 2026.7 リリースされたばかり
Still Scrolling Icon

まだスクロールしていますか?

すぐに証拠が欲しいですか? PM > Install-Package IronOcr
サンプルを実行 あなたの画像が検索可能なテキストになるのをご覧ください。