【发布时间】:2012-07-07 07:42:30
【问题描述】:
我想将文档图像转换为 XML,并导出在页面中找到某个单词的位置。为了访问bounding box信息,可以使用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 结果并获得相应的边界框。
【问题讨论】:
标签: c++ iteration ocr tesseract bounding-box