OCR出力を読み取り、ページ番号を見つけて、それを返すプログラムに取り組んでいます。関数がシーケンスを開始する数値を見つけるたびに、次のページで前のページよりも 1 大きい数値を探します。また、欠損値を推定するために空白を追加することもできます。
どの本でも、私の関数は 1 から 100 の潜在的な配列を識別します。それが識別するシーケンスの多くはジャンクです...まったく役に立ちません。ただし、他のものは通常、より包括的なシーケンスを形成するためにつなぎ合わせることができるメイン シーケンスのサブセットです。これは私の問題です。どうすればそれらをつなぎ合わせることができますか? 現在の私の出力は次のようになります。
Index: 185 PNUM: 158
Index: 186 PNUM: 159
Index: 187 PNUM: 160
Index: 188 PNUM: 161
Index: 189 PNUM: 162
Index: -1 PNUM: blank
Index: -1 PNUM: blank
-------------------------------------------------
Index: 163 PNUM: 134
Index: 164 PNUM: 135
Index: -1 PNUM: blank
-------------------------------------------------
Index: 191 PNUM: 166
Index: 192 PNUM: 167
Index: 193 PNUM: 168
Index: 194 PNUM: 169
インデックスは、書籍の表紙からのページ数であり、伝統的に番号が付けられていないすべての著作権、献辞、目次のページが含まれます。PNUM は、alg が検出したページ番号です。ここでは、3 つの異なるシーケンスを見ることができます。その上部と下部は一緒にステッチする必要があります。お気づきのように、一番上のシーケンスのインデックスと pnum の間のオフセットは 27 ですが、一番下のシーケンスのオフセットは 25 です。オフセットの違いの最も一般的な理由は、ページが見つからないか、ページが2回スキャンイン。
Viterbi ベスト パス アルゴリズムを使用してこれらのシーケンスをつなぎ合わせるように提案されましたが、実際にはシーケンスをつなぎ合わせるだけで正確性を確認する必要がないため、それはやり過ぎのように思えます。これをどこに行けばいいのか本当にわかりません。助けていただければ幸いです。ありがとう!