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;
}
相关推荐
财迅通Ai13 小时前
AI布局全面深化,赤子城科技上半年创新业务收入大幅增长41.2%
人工智能·科技·赤子城科技
冬奇Lab13 小时前
Code Agent 解剖(11):Harness 设计之一——控制流
人工智能·开源
码视野13 小时前
基于 Vue3 + Element Plus 的【智慧新能源汽车充电桩运维调度与分时共享租赁系统】设计与实现(附完整源码与PRD)
运维·人工智能·汽车·vue3
冬奇Lab13 小时前
开源项目第198期:Omarchy — DHH 打造的「意见鲜明」Linux 桌面系统
人工智能·开源·操作系统
zww894911113 小时前
AI智能商城APP定制开发实战:从需求到上线完整指南
大数据·人工智能
wangjialelele13 小时前
RAG 检索增强生成全面解析:从知识库构建到检索、重排序与生成优化
人工智能·ai·agent·rag·检索增强生成
从零开始学习人工智能13 小时前
Labelme AI-Points 功能背后的ONNX模型:下载、配置与使用解析
人工智能
招财小梗14 小时前
沈阳商贸公司AI企业服务优势几何?
大数据·人工智能·python
ZKKLLY14 小时前
生成式引擎优化赛道崛起,优质GEO服务商该如何筛选评估
大数据·人工智能
IT古董14 小时前
FDE(Forward Deployed Engineer)详解:AI时代正在崛起的新型工程师
大数据·人工智能·数据挖掘