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;
}
相关推荐
知了一笑5 小时前
AI也没想到,三年红透半边天
人工智能·ai·互联网·aigc·职场
zwd20055 小时前
Mac 上写英文遇到不会的词,有哪些工具?输入法、翻译软件、写作助手怎么选
人工智能·macos·效率工具·英语写作·输入法·deepl·翻译工具
Easy88AI5 小时前
DeepSeek-V4.1-Flash 接入实战:从官方 API 到聚合网关(以 Easy88AI 为例)
人工智能·深度学习
WUYOUGYLU5 小时前
大模型时代:人工智能如何重塑我们的工作与生活
人工智能
衡石科技5 小时前
多源数据分析的工程路径:连接、建模、同步与加速
大数据·人工智能·chatbi
光锥智能6 小时前
手机存量时代,vivo能用Harness让用户换机吗?
人工智能
比奥利奥还傲.8 小时前
哪吒监控面板实战:部署 Dashboard、接入 Agent、钉钉告警,再配置固定公网访问
网络·人工智能·分布式·1024程序员节
云泽8088 小时前
从零搭建 WSL2 + Ubuntu C/C++ 开发环境:原理、实践与底层架构解析
linux·c++·windows·ubuntu·wsl2
FII工业富联科技服务8 小时前
从人机共舞到工业精密操作:机器人如何突破动作控制与场景适应?
人工智能·机器人·机器翻译模型
serdes219 小时前
56G PAM4 SerDes RX 32 路时间交织 SAR ADC 顶层与采样前端
人工智能