我想将文档图像转换为 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 结果并获得相应的边界框。
最佳答案
tess.Recognize(0);
PAGE_RES_IT resultIter(page_res_);
for (resultIter.start_page(false); resultIter.block() != NULL; resultIter.forward())
{
WERD_RES* wordResult = resultIter.word();
WERD_CHOICE* word = wordResult->best_choice;
TBOX& box = wordResult->word->bounding_box();
}
关于c++ - Tesseract:如何导出文本和边界框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11369126/