OCR C++ Tesseract按单词识别字符

这个程序演示Tesseract OCR按单词识别字符。

不仅显示识别结果,还找出每个单词的bounding box(边界框/包围盒)。

输入图片:

程序运行后会在CMD里打印识别结果:

结果太长,我只截了一部分。

第一行的意思是:单词"this的置信度是94.57,对应的矩形边界框的左上角坐标是(36,92),右下角坐标是(96,116).

把前两个单词对应的矩形框绘制到输入图片里,大概就是这样:

代码:

cpp 复制代码
#include <tesseract/baseapi.h>
#include <leptonica/allheaders.h>

int main()
{
  char *outText;
  tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI();
  // Initialize tesseract-ocr with English, without specifying tessdata path
  if (api->Init(NULL, "eng")) {
      fprintf(stderr, "Could not initialize tesseract.\n");
      exit(1);
  }
  Pix *image = pixRead("phototest.tif");
  api->SetImage(image);
  api->Recognize(0);
  tesseract::ResultIterator* ri = api->GetIterator();
  tesseract::PageIteratorLevel level = tesseract::RIL_WORD;
  if (ri != 0) {
    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));
  }
  // Destroy used object and release memory
  api->End();
  delete api;
  delete [] outText;
  pixDestroy(&image);
  return 0;
}
相关推荐
cany10001 小时前
Other -- 智能取景和智能跟踪
人工智能
库克克1 小时前
【C++】多态
开发语言·c++
Shadow(⊙o⊙)1 小时前
日志与线程池
linux·c++·算法
来自内蒙古的田园蒙牛1 小时前
WebStorm 接入 Ollama:使用 Qwen2.5-Coder 在本地运行 AI 编程助手
ide·人工智能·webstorm
冷小鱼1 小时前
AI Agent 的核心算法:多智能体协作(Multi-Agent Systems)
前端·人工智能·算法·multi-agent·多智能体协作·systems
未来和明天1 小时前
领嵌iLeadE-588边缘计算盒子在智慧农业中的应用
大数据·人工智能
QN1幻化引擎1 小时前
# DalinX V8 灵鉴 V2:12维意识评测框架 —— 从 Tononi IIT 到 Friston FEP 的理论统一
数据库·人工智能·算法·机器学习·数据挖掘·agi
江畔柳前堤1 小时前
Go04-控制结构
大数据·人工智能·面试·职场和发展·go·业界资讯
FII工业富联科技服务1 小时前
灯塔工厂用例解析:AI重构研发到量产全流程 NPI 体系实践
人工智能·重构