tesseract是一个开源的OCR库在linux系统中我们可以很方便的开发一个简单的图片识别工具。
开发环境:QT 5.11.3
操作系统:UOS 64位(debian) 支持国产操作系统!

安装开发环境

sudo apt-get install tesseract-ocr           # tesseract
sudo apt-get install libtesseract-dev       # 安装开发包
sudo apt-get install tesseract-ocr-eng      # 安装英语
sudo apt-get install tesseract-ocr-chi-sim  # 安装中文语言包dpkg -L tesseract-ocr-eng                  # 查看语言包的安装目录,开发的时候需要配置
dpkg -L tesseract-ocr-chi-sim               # 查看语言包的安装目录,开发的时候需要配置


获取语言包的路径

/usr/share/tesseract-ocr/4.00/tessdata/

开发

1. 新建工程

新建QT工程。

我的项目中一般不使用界面文件,因此去掉勾选。

2. 开发配置

  1. 在pro文件中添加动态库。

    LIBS +=  -llept
    LIBS += -ltesseract
    
  2. 配置语言包路径
    有在识别文字的时候需要使用到语言包因此需要配置语言包的环境变量。
export TESSDATA_PREFIX=/usr/share/tesseract-ocr/4.00/tessdata/
export LC_ALL=C

3. 界面开发

布局结果大致如下:

以下代码仅是布局代码。

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>class QWidget;
class QVBoxLayout;
class QHBoxLayout;
class QLineEdit;
class QPushButton;
class QTextEdit;
class MainWindow : public QMainWindow
{Q_OBJECT
private:QWidget *m_Widgetmain;QHBoxLayout *m_layoutFileSelect;QVBoxLayout *m_layoutMain;QLineEdit *m_lineEditPath;      // 显示图片路径QPushButton *m_btnSelectFile;   // 文件选择按钮QTextEdit *m_textEditRes;       // 结果展示
public:MainWindow(QWidget *parent = 0);~MainWindow();
public slots:// 控件按钮选择文件的事件处理void slotSelectFile();
};#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QLineEdit>
#include <QTextEdit>
#include <QPushButton>
#include <QFileDialog>
#include <tesseract/baseapi.h>
#include <leptonica/allheaders.h>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent),m_Widgetmain(new QWidget),m_layoutFileSelect(new QHBoxLayout()),m_layoutMain(new QVBoxLayout()),m_lineEditPath(new QLineEdit),m_btnSelectFile(new QPushButton),m_btnOrc(new QPushButton),m_textEditRes(new QTextEdit)
{m_btnSelectFile->setText("选择文件");m_btnOrc->setText("识别");m_layoutFileSelect->addWidget(m_lineEditPath);m_layoutFileSelect->addWidget(m_btnSelectFile);m_layoutFileSelect->addWidget(m_btnOrc);m_layoutMain->addLayout(m_layoutFileSelect);m_layoutMain->addWidget(m_textEditRes);m_Widgetmain->setLayout(m_layoutMain);// 设置按钮监听事件connect(m_btnSelectFile,&QPushButton::clicked,this,&MainWindow::slotSelectFile);connect(m_btnOrc,&QPushButton::clicked,this,&MainWindow::slotGetORCRes);setCentralWidget(m_Widgetmain);resize(800,600);
}MainWindow::~MainWindow()
{}void MainWindow::slotSelectFile()
{QFileDialog fileDlg;QString file_name = QFileDialog::getOpenFileName(NULL,"标题",".","*.*");m_lineEditPath->setText(file_name);
}void MainWindow::slotGetORCRes()
{// todo
}

4. 功能开发

void MainWindow::slotGetORCRes()
{char *outText;tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI();// Initialize tesseract-ocr with English, without specifying tessdata pathif (api->Init(NULL, "chi_sim")) {fprintf(stderr, "Could not initialize tesseract.\n");exit(1);}// Open input image with leptonica libraryQString strPath = m_lineEditPath->text(); // 获取图片路径Pix *image = pixRead(strPath.toUtf8());api->SetImage(image);// Get OCR resultoutText = api->GetUTF8Text();qInfo()<<outText;printf("OCR output:\n%s", outText);// 显示结果m_textEditRes->setText(outText);// Destroy used object and release memoryapi->End();delete api;delete [] outText;pixDestroy(&image);
}

5.效果

测试图片

结果运行:

系统架构设计师历年真题2020年系统架构设计师真题( 综合题 ) 上午
2019年系统架构设计师真题 ( 综合题 ) 上午
2019年系统架构设计师真题〈 案例分析 ) 下午
2018年系统架构设计师真题( 综合题 ) 上午
2015年系统架构设计师真题( 综合题 ) 上午

源代码地址:https://gitee.com/arv000/qt-prince/tree/master/TestOCR

源代码地址:https://gitcode.net/arv002/qt/-/tree/master/TestOCR

手把手教你开发图片识别(QT篇)相关推荐

  1. 【玩转华为云】手把手教你利用ModelArts识别偶像的声音

    本篇推文共计2000个字,阅读时间约3分钟. 华为云-华为公司倾力打造的云战略品牌,2011年成立,致力于为全球客户提供领先的公有云服务,包含弹性云服务器.云数据库.云安全等云计算服务,软件开发服务, ...

  2. python学习之手把手教你将图片变成黑白或彩色字符画(骚操作)

    文章目录 前言 一.字符画的实现原理 二.黑白字符画实现代码 三.彩色字符画生成 代码实现: 总结 前言 字符画这个话题,似乎早在贴吧时代就已经被玩烂了.在百度图片随便一搜索,就能够看到非常多.然后在 ...

  3. 实战三:手把手教你实现物体识别

                                 实战三:手把手教你实现物体识别 一.基于Haad+Adaboost实现人脸识别 1.原理介绍(参考下面的博客文章) http://www.cn ...

  4. java 注册探探账号_零基础手把手教你开发探探类社交软件Tinder

    原标题:零基础手把手教你开发探探类社交软件Tinder 目录介绍 1.关于项目App整体架构 1.1项目整体架构 1.1.1 目前项目使用架构 1.1.2 目前常见的架构 1.1.3 MVP架构优点及 ...

  5. 解放前端工程师——手把手教你开发自己的自定义列表和自定义表单系列之二接口

    前言 阅读前请按照顺序参看系列文章,效果更佳! Vue中路由到一个公共组件,然后根据路径中是否存在文件动态加载组件 解放前端工程师--手把手教你开发自己的自定义列表和自定义表单系列之一缘起 据说系列文 ...

  6. 手把手教你开发Pro/TOOLKIT应用程序(一)

    前言 本教程采用VS2008 + Pro/E Wildfire5.0来讲解怎样开发Pro/TOOLKIT应用程序. 开发Pro/TOOLKIT应用程序时,Pro/E和Visual Studio的版本需 ...

  7. 物联网全栈教程--手把手教你开发一个智能浇花器

    下面来说一下课程的安排,本教程可以分为三大章节,30个小章节,在1-10章节,手把手讲解了如何实现一个定时/实时控制的浇花器,可以对浇花器电量进行显示,可以进行定时设置,以及实时控制,低功耗模式等等, ...

  8. 手把手教你编写游戏模拟器 - Chip8篇(1)

    转自 http://www.cnblogs.com/YiranXie/p/3439934.html 手把手教你编写游戏模拟器 - Chip8篇(1) 手把手教你编写游戏模拟器 - Chip8篇 翻译整 ...

  9. ppt怎么把图片做成翻书效果_手把手教你做图片翻书效果.ppt

    手把手教你做图片翻书效果 第六张幻灯片 (第2张翻第3张的动画过程) 第七张幻灯片 (右边超链接到自定义放映中的"第3张翻第4张" , 左边超链接到自定义放映中的"第3张 ...

  10. 手把手教你开发photoshop面板插件(附demo和工具)

    手把手教你开发photoshop面板插件(附demo和工具) 一.前言 二.插件演示 三.目录文件介绍 3.1 插件安装 3.2 开启ps开发模式 3.3 插件文件介绍 3.4 manifest 文件 ...

最新文章

  1. 发布一个嘿嘿嘿的技术方案 —— 商用群发p2p网络
  2. python.freelycode.com-Python日期时间处理: datestuff
  3. 网站转移到新服务器后显示乱码,请问在国内制作的英文网站放到国外的服务器后在国外打开怎么全是乱码?...
  4. json中omitempty字段的使用
  5. 查询数据库 收集 (如某个字段不是中文)
  6. Java --- 基础学习Ⅱ
  7. linux 恢复数据
  8. 教你如何做一次真正有价值的业务数据分析
  9. linux slf4j找不到,slf4j+log4j2在tomcat8 下无日志输出
  10. 云计算,SDN,虚拟化三者关系
  11. 《Java编程思想》读后感
  12. vue 数字正则表达式详解
  13. Python每日一记179文氏图绘制
  14. 今日头条给我发工资744.53元 坚持原创终于有了回报
  15. 内外兼修:Oracle ACED熊军谈Oracle学习
  16. 3999 元起,小米 13 正式发布:骁龙 8 Gen 2、IP68、超窄边框直屏、徕卡三摄
  17. C++ 文件的读写(fin fout)
  18. 2021-2027全球与中国家庭影院AV接收器市场现状及未来发展趋势
  19. Layui框架table组件使用
  20. 51单片机制作花式流水灯的三种方式总结与仿真运行

热门文章

  1. java 7下载地址
  2. Unix操作系统基础:Unix文件系统之文件权限
  3. 计算机键盘操作指法 考试题,计算机键盘指法练习图计算机键盘指法练习介绍...
  4. mac上iphone4刷机与越狱(一)
  5. 不知为不知--信息论和最大熵原则
  6. ESP32 LVGL8.1 ——Roller 滚动 (Roller 24)
  7. 用什么软件测试电视盒子真假,网络机顶盒哪个好?专业盒子测评告诉你哪款最值得买...
  8. 产品原型图设计Axure教程-CSDN就业班-专题视频课程
  9. radius服务器连接无线网络,验证RADIUS服务器连接用测验AAA RADIUS命令
  10. 小米8刷Magisk工具详细教程以及问题的解决方案