次のことを行ってみませんか。下から、最初の空でない行が見つかるまで上に移動します(OCRがどのように機能するかはわかりません…おそらく、一番下の行は常に空ではありません。この場合、これは冗長です)。次のステップでは、最初の空の行まで上に移動します。真ん中のテキストは出版社です。
そのために必要はありませんStringReader
:
Dim lines As String() = txtOCR.Text.Split(Environment.NewLine)
Dim bottom As Integer = lines.Length - 1
' Find bottom-most non-empty line.
Do While String.IsNullOrWhitespace(lines(bottom))
bottom -= 1
Loop
' Find empty line above that
Dim top As Integer = bottom - 1
Do Until String.IsNullOrWhitespace(lines(top))
top -= 1
Loop
Dim publisherSubset As New String(bottom - top)()
Array.Copy(lines, top + 1, publisherSubset, 0, bottom - top)
Dim publisher As String = String.Join(Environment.NewLine, publisherSubset)
しかし、正直なところ、これは特に良いアプローチではないと思います。柔軟性がなく、予期しないフォーマットにうまく対応できません。代わりに、正規表現を使用して、発行元の文字列(およびそのコンテキスト)がどのように見えるかを記述します。そして、それでも十分ではないかもしれません。ページ全体を説明することを考えて、どのビットが発行者であるかを推定する必要があります。