zoukankan      html  css  js  c++  java
  • 基于OpenVINO的端到端DL网络-Tesseract5+VS2017+win10源码编译攻略

    一,记录我目前在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:Usersusername.cppanstoragelib,包含重要的pvt.cppan.demo.danbloomberg.leptonica-1.76.0.lib。

    需要按照规则添加进去。

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

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

    其他的dll文件在 C:Program Files esseractin 下,全部添加到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;
    }
     实现题图结果。





    附件列表

  • 相关阅读:
    中文前端UI框架Kit(八)无插件异步文件上传组件源码解析
    中文前端UI框架Kit(十三)使用RequireJs托管你的类库和js代码
    中文前端UI框架Kit(九)IE下实现W3C标准的range对象所有api,支持通过xpath跨浏览器实现特定选区高亮,书签标记功能
    中文前端UI框架Kit(十四)超酷的瀑布流特效动画
    不知道大家知道不知道,iOS开发,web页面的链接的active属性无效,但是今天发现一个hack办法可以让Css的active有效
    中文前端UI框架Kit(十二)整合Mustache做kitjs模板引擎,基本写法${varname}
    中文前端UI框架Kit(七)无插件异步文件上传组件,带进度,支持文件拖拽
    中文前端UI框架Kit(十一)摇头动画?让你的页面元素嗑药嗑起来??
    中文前端UI框架Kit(六)javascript动画代码实现原理和一些小技巧
    中文前端UI框架Kit(十)Javascript多线程工作模型的实现
  • 原文地址:https://www.cnblogs.com/jsxyhelu/p/11086732.html
Copyright © 2011-2022 走看看