一,记录我目前在win10 X64和VS2017的环境下成功编译Tesseract5.0的方式;

二,记录在VS2017 C++工程中调用Tesseract4.0的方法;

三,记录编译和调用Tesseract4.0过程中踩到的坑和相应的解决方案或看法。

最终结果:

识别为:

=======================================================================================================================

一、资料准备

下载最新的CPPAN版本。解压缩后,将cppan.exe所在的路径添加到系统变量中;

CPPAN是跨平台的C / C++ 依赖管理器。它建立在 CMake 的基础之上,并具有构建系统的能力。CPPAN 支持快速的脚本式编码和原型制作,以及处理大型项目。查找,共享和重用库,发布您的项目。把时间花在你的代码上,而不是管理依赖关系。CPPAN为您降低包时间到几秒钟!它支持简单的交叉编译,继承和推送你自己的设置,标志到每个依赖。

链接为 https://cppan.org/client/

编译过程中相应的支持库是由cppan下载的,我们需要下载cppan并设置其环境变量

解压后 在系统变量里面选择PATH变量,将cppan.exe所在的文件路径作为环境变量的值  ,或者也可以将cppan.exe放置在path包含的目录下

下载cmakehttps://cmake.org/download/,本文用的是cmake-3.10.1-win64-x64,将cmake.exe所在的路径添加到系统变量中;

为cmake设置环境变量,解压后目录下的bin文件夹的目录地址加载至系统环境变量PATH中,

与cppan设置环境变量的方法一致。

下载Tesseract源码https://github.com/tesseract-ocr/tesseract,,最新版已经到5.0

解压后放英文目录

***************************************************************************************************************

 二、tesseract编译

1.cmd,以 管理员身份进入命令行终端

2.运行cppan

进入 解压后的Tesseract文件夹,可以发现有个cppan.yml,

直接敲入命令:cppan   (如果出现 “no spec file”,就是目录不对,没有找到cppan.yml)

下载相关依赖

3.cmake编译


使用GUI进行2次configure,1次generate,一路回车即可。

4  生成tesseract.sln,打开并编译。

进入项目,一般选择Install和all_build进行批生成最为稳妥,在我们这个项目中,生成install是足够

编译的过程中,可能出现这样的错误

出现这个错误的原因是因为字符集不相符,首先参考

https://jingyan.baidu.com/article/9faa7231df5453473c28cbd9.html ,为vs2017恢复“高级保存”

而后,一次打开出现问题的文件,使用“高级保存选项”将字符进行转码为GB码。

需要转码的文件主要集中在glib模块


5、最终在c盘下会出现tesseract目录,并得到这样结果:

三、在VS2017 C++工程中调用Tesseract4.0

1. 找到所有依赖lib文件并整理

编译tesseract.sln并安装之后,在C:/Program Files/tesseract/lib路径下仅有tesseract500.lib和tesseract500d.lib,但在工程中调用Tesseract4.0时,仅有这两个文件是不够的,为了方便调用,我们要找到其他的lib文件,它们在这里:C:\Users\username\.cppan\storage\lib,包含重要的pvt.cppan.demo.danbloomberg.leptonica-1.76.0.lib。

需要按照规则添加进去。

2.找到所有依赖dll文件并整理

在C:/Program Files/tesseract/bin路径下仅有tesseract500.dll和tesseract500d.dll,

其他的dll文件在 C:\Program Files\tesseract\bin 下,全部添加到PATH中

3. 找到leptonica所需要的头文件并整理

有两个头文件是编译的时候需要的,这里也必须添加到include中去

如果你不添加,会自动报错,也能够帮助你找到这两个目录。

4. 新建VS2017 C++工程,下载https://github.com/cppan/tesseract_example/blob/master/with_cppan/main.cpp并添加到该工程中。

4.1 项目属性—>配置属性–>C/C++–>常规,在“附加包含目录”中添加:

4.2 项目属性–>链接器–>常规,在”附加库目录”中添加

4.3 项目属性–>链接器–>输入,在“附加依赖项”中添加

4.4 在工程目录下新建文件夹tessdata,到tesseract下载相应的语言文件,copy到tessdata文件目录下。

5. 完成上述动作后,编译代码

#include "pch.h"
#include <iostream>
#include <memory>
#include <allheaders.h> // leptonica main header for image io
#include <baseapi.h> // tesseract main header
int main(int argc, char *argv[])
{
    if (argc == 1)
        return 1;
    tesseract::TessBaseAPI tess;
    if (tess.Init("E:/OpenCV_DNN数据集/tessdata", "eng"))
    {
        std::cout << "OCRTesseract: Could not initialize tesseract." << std::endl;
        return 1;
    }
    // setup
    tess.SetPageSegMode(tesseract::PageSegMode::PSM_AUTO);
    tess.SetVariable("save_best_choices", "T");
    // read image
    auto pixs = pixRead(argv[1]);
    if (!pixs)
    {
        std::cout << "Cannot open input file: " << argv[1] << std::endl;
        return 1;
    }
    // recognize
    tess.SetImage(pixs);
    tess.Recognize(0);
    // get result and delete[] returned char* string
    std::cout << std::unique_ptr<char[]>(tess.GetUTF8Text()).get() << std::endl;
    // cleanup
    tess.Clear();
    pixDestroy(&pixs);
    return 0;
}

实现题图结果。

附件列表

【E2E】Tesseract5+VS2017+win10源码编译攻略的更多相关文章

  1. PHP 的源码编译安装

    PHP 架构和安装扩展的几种方式 PHP 三大模块: SAPI:接受并处理请求. Zend Engine:PHP 的核心,负责分析 PHP 代码并转为 opcode,然后在 Zend VM 虚拟机上执 ...

  2. win10 vs2015源码编译opencv、opencv_contrib、Tesseract

    1.软件包准备 opencv源码包地址:                官网  github opencv_contrib源码包地址:   github Tesseract源码包地址:        ...

  3. QGis+QT5.9+VS2017源码编译

    1.需要软件 VS2017 QT5.9.2 CMake 3.10.2 Cygwin osgeo4w QGIS源码 2.安装VS2017  过程省略 是由于机器上已经安装了VS2017 3.安装QT5. ...

  4. CEF源码编译

    CEF的构造说明:https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding chromium的源码地址:https://c ...

  5. 源码编译Redis Desktop Manager ---(转载)

    精美文章转载: 版权声明:本文作者为「Kany.Wang」,本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议.转载请注明出处!原文链接:https://kany.me/20 ...

  6. 源码编译Redis Desktop Manager | 懒人屋

    原文:源码编译Redis Desktop Manager | 懒人屋 源码编译Redis Desktop Manager  2.3k  字    10  分钟    2019-10-10 文章背景 本 ...

  7. windows10源码编译llvm

    准备 cmake, 我目前使用的版本是3.18 llvm 源码, 我下载的是 11.0 我已经具备Vs2015和Vs2017的开发环境. debug模式编译需要较多内存和较多硬盘存储空间. (debu ...

  8. Android 5.0源码编译问题

    如果是自己通过repo和git直接从google官网上download的源码,请忽略这个问题,但是由于google在国内被限制登录,通过这一种方法不是每个人都能download下来源码,通常的做法就是 ...

  9. Android stdio Apktool源码编译

    Android Apktool源码编译 标签(空格分隔): Android Apktool 源码编译 需求 习惯NetBeans调试smali需要用Apktool反编译apk,需要用-d的参数才能生成 ...

随机推荐

  1. C++ 谓词(predicate) 与 仿函数 ( functor (function object))

    谓词与函数对象 谓词 predicate C++ 标准定义谓词如下: The Predicate parameter is used whenever an algorithm expects a f ...

  2. jqGrid行编辑配置,方法,事件

    行编辑可以在行修改后更新数据,如下图所示 用户用鼠标点击选择一行,jqGrid将可编辑的字段转换为数据输入单元,如上面图所示.不可编辑的列,如id,不会转为可输入单元,而是保持不变.可以通过配置col ...

  3. ARP欺骗之ettercap图形化界面

    ARP欺骗原理: 在每台主机中都有ARP缓存表,缓存表中记录了IP地址与MAC地址的对应关系,而局域网数据传输依靠的是MAC地址(网络设备之间互相通信是用MAC地址而不是IP地址) 一.ARP欺骗 工 ...

  4. P2149 [SDOI2009]Elaxia的路线[最长公共路径]

    题目描述 最近,Elaxia和w**的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间. Elaxia和w**每天都要奔波于宿舍和实验室之间,他们 希望在 ...

  5. 1206 BBS注册

    目录 昨日内容 BBS项目 1.项目开发流程 2.表设计 用户表 个人站点表 文章标签表 文章分类表 文章表 文章的点赞点踩表 文章的评论表 项目 昨日内容 昨日内容 基于django中间件实现功能的 ...

  6. SSMS开发利器Sql Prompt

    一.前言 一个Sql Server 开发智能提示插件,方便查询表结果,避免了开发人员一个个敲查询语句.执行语句等,一起来看看吧. SQL Prompt 9.5 支持SSMS18 下载地址: 链接:ht ...

  7. Hdfs读写数据出错

    1.Hdfs读数据出错:若在读数据的过程中,客户端和DataNode的通信出现错误,则会尝试连接下一个 包含次文件块的DataNode.同时记录失败的DataNode,此后不再被连接. 2.Hdfs在 ...

  8. Joomla 3.4.6 远程代码执行 漏洞复现

    使用利用工具 https://github.com/YangSirrr/Joomla-3.4.6-RCE http://192.168.43.230/Joomla//configuration.php ...

  9. linux学习2 Linux云计算学习环境介绍

    一.VNC: Virtual Network Computing协议.虚拟网络计算协议. vncviewer:client vncserver:server

  10. cube.js 学习(三)cube.js data schema

    cube.js的 data schema 类似graphql 的type 定义,但是cube.js 的data schema 更偏向于dsl, 其中抽象了进行数据分析应用开发中的东西,自己提炼了mea ...