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;
}
相关推荐
刘一说12 小时前
AI科技热点日报 | 2026年08月04日
人工智能·科技
如此这般英俊12 小时前
手搓Claude Code-第十章 system_prompt
数据结构·人工智能·python·语言模型·自然语言处理·prompt
云端漫步198712 小时前
HarmonyOS NEXT AI 智能生活助手:AI 日程规划
人工智能·华为·生活·harmonyos
孙启超12 小时前
【AI应用开发】怎么降低 Agent 幻觉?有几种可行方案?
大数据·人工智能·llm·agent·rag·幻觉·ai应用开发
丘丘用户思思澪12 小时前
生产环境下优化 Agent Token 成本的系统化实战指南
人工智能
我是大卫12 小时前
图解RAG,一张图理解检索增强生成
人工智能
淡忘suuda12 小时前
生产级 AI Agent 评测体系实战:从数据集构建到自动回归与质量门禁
人工智能·数据挖掘·回归
spider_xcxc12 小时前
生产级AI智能体的可观测性实战:从指标监控到LLM评估
大数据·人工智能
高洁0112 小时前
VLA:驱动具身智能迈向通用的关键引擎
人工智能·python·深度学习·transformer·知识图谱
数智化管理手记12 小时前
元数据和业务数据有什么区别?元数据价值体现在什么地方?
大数据·人工智能·数据挖掘·云计算