首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在iphone中获取tesseract Ocr中的文本位置

在iphone中获取tesseract Ocr中的文本位置
EN

Stack Overflow用户
提问于 2012-09-03 12:52:12
回答 2查看 2K关注 0票数 2

使用tesseract,我已经提取了文本,iPhone.Now想要提取文本以及文本在xml中的位置。我使用GetHocrText来检索HTML语言中的文本。

例如:-

代码语言:javascript
复制
<span class='ocr_word' id='word_3_28' title="bbox 55 226 123 243">
<span class='ocrx_word' id='xword_3_28' title="x_wconf -5">Beverage</span>
</span>

在tesseract OCR中有没有其他方法可以提取XML格式的文本?

在广告中感谢

Srividya

EN

回答 2

Stack Overflow用户

发布于 2014-08-21 02:20:07

更好的方法是使用ResultIterator;您可以使用tesseract::RIL_BLOCK、tesseract::RIL_PARA、tesseract::RIL_TEXTLINE、tesseract::RIL_WORD或tesseract::RIL_SYMBOL

来自https://code.google.com/p/tesseract-ocr/wiki/APIExample

代码语言:javascript
复制
tesseract::TessBaseAPI api;
// tesseract.Init here
api.SetVariable("save_blob_choices", "T");
// tesseract.SetImage/tesseract.SetRectangle here
api.Recognize(NULL);

tesseract::ResultIterator* ri = api.GetIterator();
tesseract::PageIteratorLevel level = tesseract::RIL_WORD;
if (ri) {
  do {
    const char* word = ri->GetUTF8Text(level);
    float conf = ri->Confidence(level);
    int x1, y1, x2, y2;
    ri->BoundingBox(level, &x1, &y1, &x2, &y2);
    printf("word: '%s';  \tconf: %.2f; BoundingBox: %d,%d,%d,%d;\n",
           word, conf, x1, y1, x2, y2);
    delete[] word;
  } while (ri->Next(level));
}
票数 3
EN

Stack Overflow用户

发布于 2013-05-18 08:45:45

它不是xml,但这是获取每个字符位置的一种方法:

代码语言:javascript
复制
tesseract::TessBaseAPI tesseract;
// tesseract.Init here
tesseract.SetVariable("save_blob_choices", "T"); // for character-level confidence
// tesseract.SetImage/tesseract.SetRectangle here
char *results_as_text = tesseract.GetBoxText(0);  // characters without spaces/newlines artificially embedded
std::istringstream results_as_stream(results_as_text);
std::string result;
char letter;
int x1, y1, x2, y2;
while (std::getline(results_as_stream,result)) {
    std::istringstream result_stream(result);
    result_stream >> letter;
    result_stream >> x1;
    result_stream >> y1;
    result_stream >> x2;
    result_stream >> y2;
    std::cout << letter << " ((" << x1 << "," << y1 << "),(" << x2 << "," << y2 << "))" << std::endl;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12242147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档