ドキュメントの画像を XML に変換し、ページ内で特定の単語が見つかった場所をエクスポートしたいと考えています。境界ボックス情報にアクセスするには、tesseract のレイアウト分析を使用できます。
tess.SetImage(...);
tess.SetPageSegMode( tesseract::PSM_AUTO_OSD);
tesseract::PageIterator* it = tess.AnalyseLayout();
while(it->Next(tesseract::RIL_WORD)
{
int top, bottom, left, right;
it->BoundingBox(tesseract::RIL_WORD, &left, &top, &right, &bottom);
}
ただし、その時点では境界ボックスの実際の内容はわかりません。次のコードを実行すると、現在の画像に対して OCR が実行されるためtext
、ページのテキスト全体が含まれます。
tess.Recognize(0);
std::string text = tess.GetUTF8Text();
現在、すべてのバウンディング ボックスを一時的にvector
. ボックスごとに、元のサブイメージからサブイメージを切り取り、境界ボックスごとに OCR を実行します。基本的にはこれでうまくいきますが、結果を Tesseract コマンド ライン ツールと比較すると、はるかに多くの OCR エラーが発生します。
したがって、OCR結果を単語ごとに反復処理して、対応する境界ボックスを取得する方法を知りたいです。