[Tesseract]Tesseract 在 Visual Studio 2012 中的配置及调用

2023-05-16

一、Tesseract简介

Tesseract是一个开源的OCR(Optical Character Recognition,光学字符识别)引擎,可以识别多种格式的图像文件并将其转换成文本,目前已支持60多种语言(包括中文)。 Tesseract最初由HP公司开发,后来由Google维护,github地址为:https://github.com/tesseract-ocr/

二、Tesseract源码下载

1、下载tesseract-ocr-setup-3.02.02.exe

下载地址:https://sourceforge.net/projects/tesseract-ocr-alt/files/ , 点击 “tesseract-ocr-setup-3.02.02.exe” 进行下载。

下载后,双击tesseract-ocr-setup-3.02.02.exe,进行安装。

按照操作提示,点击next。

注意,在选择组件页面,勾选 Tesseract development files。 如图:

安装完成后,选择的安装目录下(D:\Program Files (x86)\Tesseract-OCR),文件夹如下:

但是,下载下来的源码是不够的。还需要下载附加lib。

2、下载tesseract-3.02.02-win32-lib-include-dirs.zip

下载地址:https://sourceforge.net/projects/tesseract-ocr-alt/files/ ,选择“tesseract-3.02.02-win32-lib-include-dirs.zip” 进行下载。

下载得到压缩包后,解压缩,目录如下:

其中,include目录中包含如下:

lib目录中包含如下:

将include 文件夹中的内容复制到 D:\Program Files (x86)\Tesseract-OCR\include 文件夹中,将lib 文件夹中的内容复制到 D:\Program Files (x86)\Tesseract-OCR\lib 文件夹中。

3、下载 tesseract_versionnumbers.props 和 leptonica_versionnumbers.props

下载地址为:https://github.com/jakesays/tesseract-vs2012/tree/master/include,将项目中包含的 tesseract_versionnumbers.props 和 leptonica_versionnumbers.props 复制到D:\Program Files (x86)\Tesseract-OCR\include 文件夹中。

至此,我们需要的资源就准备齐全了。

备注:我之前也是走了一些弯路,这是总结出来的完整资源的获得方式。以上所需要的资源的必要性,在后面Tesseract 与 VS2012 相结合的时候会提到。


三、Tesseract 在 Visual Studio 2012 中的配置

1、新建win32控制台项目

注意在附加选项中,勾选“空项目”。

2、引入头文件

在“解决方案资源管理器” 窗口,右键 “MyFirstTesseractProject”工程  -> “属性(R)” ->“C/C++”->“常规”->“附加包含目录”中,添加如下内容:

D:\Program Files (x86)\Tesseract-OCR\include

D:\Program Files (x86)\Tesseract-OCR\include\leptonica

D:\Program Files (x86)\Tesseract-OCR\include\tesseract

如图所示:

3、引入库文件

1)添加属性表

首先将“D:\Program Files (x86)\Tesseract-OCR\include”目录 拷贝到 本地工程“MyFirstTesseractProject\MyFirstTesseractProject”目录下,如图所示:

然后进行以下设置: 
在“解决方案管理器”所在区域,切换到“属性管理器”窗口; 
右键“MyFirstTesseractProject”工程下面的“Debug|Win32”文件夹 –>“添加现有属性表(E)…”–>在“MyFirstTesseractProject\MyFirstTesseractProject\include”目录下找到“tesseract_versionnumbers.props”–>“打开”; 
如图所示:

添加后如图所示:

2)配置库文件

在“解决方案管理器”窗口–>右键“MyFirstTesseractProject”工程–>“属性(R)”–>“配置属性”–>“链接器”–>“常规”–>“附加库目录”中添加如下内容:

D:\Program Files (x86)\Tesseract-OCR\lib

如图所示:

4、添加预定义


在“解决方案管理器”窗口–>右键“MyFirstTesseractProject”工程–>“属性(R)”–>“配置属性”–>“C/C++”–>“预处理器”–>“预处理器定义”–>中添加”如下列表中的“预定义”内容:

_WINDOWS 
NDEBUG 
USE_STD_NAMESPACE

如下图: 

5、添加附加库

在“解决方案管理器”窗口–>右键“MyFirstTesseractProject”工程–>“属性(R)”–>“配置属性”–>“链接器”–>“输入”–>“附加依赖项”–>中“添加”如下列表中的“附加库”内容:

libtesseract302.lib
libtesseract302d.lib
liblept168.lib
liblept168d.lib

如图所示:

6、其他添加

在“MyFirstTesseractProject” 目录下新建 “Debug”文件夹,将“libtesseract302.dll” 和 “libtesseract302d.dll” 拷贝到 “Debug” 文件夹下面。如图所示:

三、运行Tesseract实例

#include <baseapi.h>
#include <allheaders.h>
#include <iostream>
 
using namespace std;
 
int main(void)
{
 
    tesseract::TessBaseAPI api;
    api.Init("", "eng", tesseract::OEM_DEFAULT);
    api.SetPageSegMode(static_cast<tesseract::PageSegMode>(7));
    api.SetOutputName("out");
 
    cout<<"File name:";
    char image[256];
    cin>>image;
    PIX   *pixs = pixRead(image);
 
    STRING text_out;
    api.ProcessPages(image, NULL, 0, &text_out);
 
    cout<<text_out.string();
 
    system("pause");
}


运行成功,运行结果如下:

给定测试图片,如图:


输入图片路径,得到结果:

正确率有待提高。

四、总结

至此,成功在VS2012中配置了Tesseract。网上的资料比较少,下载下来的库并不完整,经过实践,总结出了在我这里可行的一套办法。我的系统是win7,64位。

同时,在实验的过程中,参考了以下博文。我觉得最大的收获是,在遇到博文上说的办法不可行的时候,根据实际情况作出了调整,并且成功跑通。

感谢:

【Tesseract】Tesseract API在VS 2013中的配置以及调用

Tutorial: How to Install Tesseract OCR 3.02.02 for Visual Studios 2008 on Windows Vista
--------------------- 
原文:https://blog.csdn.net/u013250416/article/details/77871203 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[Tesseract]Tesseract 在 Visual Studio 2012 中的配置及调用 的相关文章

  • 如何使用 Tesseract-android-Tools

    我有 tesseract android tools 1 00 请帮助我使用 TessBaseAPI 接口 我只想将一个 jpg 图像传递给一个 Android 应用程序 该应用程序将一些文本作为图像的一部分 然后通过这个超立方体引擎我想将
  • 如何设置和运行适用于 PHP 的 Tesseract OCR(开源)?

    我已经根据GitHUb上提供的文档通过MacPorts安装了Tesseract OCR 并且安装成功 并且 但是 我正在尝试使用 Tesseract OCR for PHP https github com thiagoalessio te
  • 使用 uwsgi-nginx-flask-docker 中的 Tesseract 4 - Docker 容器

    我的 python 项目在本地运行 并且它可以工作 我将 python 中的 tesseract 与 subprocess 包一起使用 然后我部署了我的项目 因为我使用 Flask 所以我安装了tiangolo uwsgi flask ng
  • OSError: [WinError 740] 请求的操作需要提升

    我有一个简单的代码 其中有一个名为 try png 的图像 我想使用 pytesseract 将其从图像转换为文本 但我的代码遇到了一些问题 import cv2 import pytesseract pytesseract pytesse
  • 使用 OpenCV 和 Tesseract 的摩洛哥车牌识别 (LPR)

    我正在开展一个关于识别摩洛哥车牌的项目 如下图所示 摩洛哥车牌 请问我如何使用 OpenCV 切出车牌并使用 Tesseract 读取中间的数字和阿拉伯字母 我研究过这篇研究论文 https www researchgate net pub
  • 根据 ocr 图像结尾的段落将字符串拆分为列

    我正在开发一个项目 将打字机写的战争日记笔记从 PDF 扫描转换为文本 我可以成功地 对于原始的未调整大小的文件 可能是 90 提取我首先裁剪的主要文本 Reprex 数据 您可以从头开始尝试使用图像或我在下面提供的文本 我的挑战是保持文本
  • Tesseract 混淆两个数字

    我正在编写一个应用程序来扫描图像中的数字 这些数字使用 OCR B 字体 并且还可能包含 and gt 人物 这是我的源图像 即使将字符集限制为上述字符 使用 Tesseract 的扫描效果也不是很好 由于我没有找到 Tesseract 的
  • 用于 Tesseract 和 OpenCV 的 CMake

    我是 Linux 编程新手 我正在尝试创建一个 OCR 应用程序Ubuntu 12 10 using 超立方体 http code google com p tesseract ocr E2 80 8E and OpenCV http ww
  • Tesseract OCR:解析表格单元格

    我正在使用 cmd 中的 Tesseract OCR v4 0 0 alpha 从如下所示的表格的 png 中提取文本 我希望 Tesseract OCR 能够解析一个单元格中的内容 然后再转到下一个单元格 我不想继续 行 中的下一个单词
  • 如何减小tesseract生成的PDF的大小?

    我的 网络 应用程序的设置如下 我获取用户上传的 PDF 文件 对它们运行 OCR 并向他们显示 OCRed PDF 由于一切都在线 因此最小化生成的 PDF 文件的大小是减少用户加载和等待时间的关键 我从用户那里收到的文件是sample
  • 超正方体的替代方案

    Python 或 OpenCV 中是否有替代软件或任何库可以替代 Tesseract 进行字符识别 有什么建议的可以用Python实现的字符识别方法吗 Thanks This site https github com kba awesom
  • Android OCR 仅使用流行的 tessercat fork tess-two 检测数字

    我正在使用流行的 OCR tessercat fork for android tess twohttps github com rmtheis tess two https github com rmtheis tess two 我整合了
  • 目录:资产/tessdata

    我从 github 下载了 OCR 文本识别器 我的问题是 我想在不在线的情况下启动我的应用程序 但每次我在手机上安装 apk 时 它都会开始下载英语和 tesseract OCR 引擎 我找到了一个在线指南 其中说我必须在资产文件夹中创建
  • 超立方体错误:警告。分辨率 0 dpi 无效。使用 70 代替

    Error was reported when running tesseract on a image image attached tesseract rsa out jpg stdout Warning Invalid resolut
  • 文本二值化

    I d like to binarize this image to use it with tesseract ocr Currently I managed to get this But I need clear image with
  • 使用 OCR 识别上标字符

    我已经开始了一个简单的项目 其中它必须获取包含带有上标的文本的图像 然后通过使用 OCR 目前我使用的是 tesseract 它必须识别上标字符 普通字符 例如 我们有一个化学方程式 例如 Cl 但是当我使用超立方体识别它时 它给出了 Cl
  • android ndk-构建错误

    我正在尝试为 Android 构建 tesseract 我已将 tesseract 放入示例文件夹中 C Android NDK android ndk r8 samples tesseract之内tesseract我有的文件夹tesser
  • Tess-2 OCR 不工作

    我试图在 Android 上使用 tess two 从图像中获取文本 但这给了我一个非常糟糕的结果 01 16 12 00 25 339 I Tesseract native 29038 Initialized Tesseract API
  • c# OCR无法识别数字(tesseract 2)

    I m trying to extract digits from the following 它失败了 我得到了 作为回报 我正在使用 google 的 tesseract 2 使用 C 开源 c 包装器 现在我想知道 这个图像是否太糟糕
  • 有没有办法在 venv/web 服务器中安装 Tesseract OCR?

    我制作了一个执行 OCR 功能的 Python 脚本 然后回收了该脚本并使用 Flask 制作了一个 Web 应用程序 Web 应用程序及其库位于 virtualenv 中 但该应用程序使用操作系统 Windows 中安装的 Tessera

随机推荐

  • C# 解决窗体假死的状态 非常有用!且非常重要!

    异步调用是CLR为开发者提供的一种重要的编程手段 xff0c 它也是构建高性能 可伸缩应用程序的关键 在多核CPU越来越普及的今天 xff0c 异步编程允许使用非常少的线程执行很多操作 我们通常使用异步完成许多计算型 IO型的复杂 耗时操作
  • C# Message 消息处理

    一 消息概述 Windows下应用程序的执行是通过消息驱动的 消息是整个应用程序的工作引擎 xff0c 我们需要理解掌握我们使用的编程语言是如何封装消息的原理 C 自定义消息通信往往采用事件驱动的方式实现 xff0c 但有时候我们不得不采用
  • C++new和delete实现原理(汇编解释)

    new和delete最终调用malloc和free xff0c 关于malloc和free实现原理参见这篇文章 xff1a http blog csdn net passion wu128 article details 38964045
  • c++中创建类型测试

    OpenVCTest cpp 定义控制台应用程序的入口点 include 34 stdafx h 34 class A public int a 61 10 class B public B int a b 61 a B int b 61
  • 离散卷积

    离散卷积 是两个离散序列 f n 和 h n 之间按照一定的规则将它们的有关序列值分别两两相乘再相加的一种特殊的运算 具体可用公式表示为 xff1a 离散函数 png 简记为 g n 61 f n h n 其中 xff1a g n 是经过卷
  • 最容易理解的对卷积(convolution)的解释

    啰嗦开场白 读本科期间 xff0c 信号与系统里面经常讲到卷积 convolution xff0c 自动控制原理里面也会经常有提到卷积 硕士期间又学了线性系统理论与数字信号处理 xff0c 里面也是各种大把大把卷积的概念 至于最近大火的深度
  • 高斯滤波

    高斯滤波 高斯滤波的含义 xff1a 高斯滤波就是对整幅图像进行加权平均的过程 xff0c 每一个像素点的值 xff0c 都由其本身和邻域内的其他像素值经过加权平均后得到 高斯滤波的作用 xff1a 高斯滤波是一种线性平滑滤波 xff0c
  • OpenCV:详解掩膜mask

    在OpenCV中我们经常会遇到一个名字 Mask 掩膜 很多函数都使用到它 xff0c 那么这个Mask到底什么呢 xff1f 一开始我接触到Mask这个东西时 xff0c 我还真是一头雾水啊 xff0c 也对无法理解Mask到底有什么用
  • 图像卷积和图像滤波的一些知识

    转自 http blog csdn net zouxy09 article details 49080029 一 线性滤波与卷积的基本概念 线性滤波可以说是图像处理最基本的方法 xff0c 它可以允许我们对图像进行处理 xff0c 产生很多
  • No MDI forms are currently active 的解决方法

    描述一下运行环境 几个存放MDI Child 子窗体的DLL和一个管理这些子窗体MDI主程序 在主程序中动态调入DLL子窗体 首先 xff0c DLL中的Application和MDI主程序中的Application是不同样的 要将MDI主
  • 图像处理中腐蚀与膨胀的原理

    腐蚀的原理 xff1a 二值图像前景物体为1 xff0c 背景为0 假设原图像中有一个前景物体 xff0c 那么我们用一个结构元素去腐蚀原图的过程是这样的 xff1a 遍历原图像的每一个像素 xff0c 然后用结构元素的中心点对准当前正在遍
  • 卷积为什么如此强大?一文全解深度学习中的卷积

    卷积为什么如此强大 xff1f 一文全解深度学习中的卷积 2018年05月10日 15 52 41 七月在线实验室 阅读数 xff1a 17112 作者 xff1a Tim Dettmers xff08 Understanding Conv
  • 一维卷积详细解释(转载+自己笔记)

    一 定义 离散信号f n g n 的定义如下 xff1a N 为信号f n 的长度 s n 为卷积结果序列 长度为len f n 43 len g n 1 以3个元素的信号为例 xff1a f n 61 1 2 3 g n 61 2 3 1
  • 深度学习---图像卷积与反卷积(最完美的解释)

    转自 xff1a 卷积神经网络CNN xff08 1 xff09 图像卷积与反卷积 xff08 后卷积 xff0c 转置卷积 xff09 动态图 1 前言 传统的CNN网络只能给出图像的LABLE xff0c 但是在很多情况下需要对识别的物
  • 直观理解深度学习卷积部分

    转载自https www leiphone com news 201807 RQ4sBWYqLkGV4ZAW html 有删节 嵌牛导读 xff1a 在本文中 xff0c 我们将逐步分解卷积操作的原理 xff0c 将他与标准的全连接网络联系
  • 边缘检测(5)Canny算法

    边缘检测 1 Sobel 2 Laplace 3 Roberts 4 Canny Canny canny对边缘检测质量进行分析时 xff0c 有3个原则 xff1a 1 信噪比准则 2 定位精度准则 3 单边缘响应准则 canny边缘检测的
  • C++ OpenCV 图像转换,识别图像轮廓,画矩形

    1 include 34 ReadIDCard h 34 include 34 stdafx h 34 include lt iostream gt include lt stdio h gt include lt opencv2 open
  • 一阶导数概念

    定义 一般定义 设有定义域和取值都在实数域中的函数y 61 f x 若f x 在点 的某个邻域内有定义 xff0c 则当自变量x在x0处取得增量 xff08 点 仍在该邻域内 xff09 时 xff0c 相应地y取得增量 xff1b 如果
  • 使用Opencv进行轮廓检测,字符提取,简单的直方图字符识别!

    一 使用Opencv进行轮廓检测 xff01 所需函数 xff1a 1 cvFindContours 函数功能 xff1a 从二值图像中检索轮廓 xff0c 并返回检测到的轮廓的个数 函数原型 xff1a int cvFindContour
  • [Tesseract]Tesseract 在 Visual Studio 2012 中的配置及调用

    一 Tesseract简介 Tesseract是一个开源的OCR xff08 Optical Character Recognition xff0c 光学字符识别 xff09 引擎 xff0c 可以识别多种格式的图像文件并将其转换成文本 x