IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]在vs2013上的编译tesseract-ocr

    cheungmine发表于 2016-12-28 10:35:23
    love 0

    在vs2013上的编译tesseract-ocr


    OCR(Optical Character Recognition):光学字符识别,是指对图片文件中的文字进行分析识别,获取的过程。

    Tesseract:开源的OCR识别引擎,初期Tesseract引擎由HP实验室研发,后来贡献给了开源软件业,后经由Google进行改进,消除bug,优化,重新发布。当前版本为3.04.


    1 准备工作


    1.1 首先是安装vs2013 ultimate

    需要注意的是用光盘镜像安装, 首先是用UltraISO将VS2013_RTM_ULT_CHS.iso mount到某个驱动器盘符,例如E:\下. (我采用rar直接解压ISO,发现安装失败,而采用mount ISO安装成功), 然后运行vs_ultimate.exe 安装即可.


    1.2 下载tesseract-vs-master.zip和tesseract-vs2013-master.zip

    到网站上直接下载zip:

        https://github.com/charlesw/tesseract-vs

        https://github.com/tesseract4java/tesseract-vs2013

    也可以采用git clone方式:

         $ git clone https://github.com/charlesw/tesseract-vs.git
         $ git clone https://github.com/tesseract4java/tesseract-vs2013.git

    至此准备工作完成.

    1.3 将上面的包解压到任意目录

    本文采用c:\DEVPACK\tesseract-build-vs2013, 最后的目录结构如下:

            c/DEVPACK/tesseract-build-vs2013/
                    +---- tesseract-vs-master/
                    +---- tesseract-vs2013-master/


    2 编译 leptonica

    leptonica是一个图像处理和图像分析的开源软件(如libpng, libtiff, libjpeg, zlib等)合集. 是C语言的库. tesseract的库依赖leptonica. 例如:

        DEBUG: libtesseract304d.dll=>liblept171d.dll

        RELEASE: libtesseract304.dll=>liblept171.dll


    2.1 命令批处理编译

    编译leptonica很简单, 首先通过 "开始菜单->所有程序->Visual Studio 2013->Visual Studio Tools->VS2013 开发人员命令提示", 进入命令行窗口, cd 到c:\DEVPACK\tesseract-build-vs2013\tesseract-vs2013-master目录下:


        c:\DEVPACK\tesseract-build-vs2013\tesseract-vs2013-master>msbuild build.proj

    ......
        142 个警告
        0 个错误

    已用时间 00:03:39.36

        c:\DEVPACK\tesseract-build-vs2013\tesseract-vs2013-master>

    如果没有错误, 则编译好了leptonica. 上面的过程或者采用VS2013 IDE编译.


    2.2 VS2013 IDE编译

    vs2013打开tesseract-vs2013-master/tesseract.sln, 然后就直接编译. 如果需要修改项目配置, 建议采用这种方式编译.

    ------------------------------

    采用以上任何一种方法,编译成功之后,把 tesseract-vs2013-master/release 下面的include, lib目录整体复制到: c:\DEVPACK\tesseract-build-vs2013\. 复制好的目录结构如下:

          .../tesseract-build-vs2013/
                +---include/
                +---lib/
                +---tesseract-vs-master/
                +---tesseract-vs2013-master/


    3 编译 tesseract

    用vs2013打开tesseract-build-vs2013/tesseract-vs-master/vs2010/tesseract.sln, 修改下面2个文件的编码:

          ccmain\equationdetect.cpp Save As Unicode codepage 1200
          ccstruct\linlsq.cpp       Save As Unicode codepage 1200

    适当修改库目录, 指向 .../tesseract-build-vs2013/lib/Win32 或 .../tesseract-build-vs2013/lib/x64

    编译全部. 编译好之后, 用户创建的可执行程序只需要下面2个动态库即可:

    libtesseract304.dll

    liblept171.dll


    4 总结


    上面整个过程我花了1天时间摸索整理出来:

    开始安装vs2015失败(估计原因是没采用mount ISO的方式), 卸载掉vs2015后, vs2013编译报ws_32.lib找不到.

    于是卸载vs2013. 重新安装vs2013.iso失败(rar解压iso安装). 采用mount ISO的方式安装成功. 深刻教训.

    tesseract-vs2013-master编译报错,修改部分语法成功.


    我的编译偏好是采用:

        多线程: /MT (而不是 多线程DLL: /MD). 用户可以根据自己的偏好调整.

    如果读者重复我整个过程, 是非常折腾人的, 于是我把本文涉及到的全部内容放到ftp上供大家下载使用:

    ftp://pub:pub@pepstack.com/tarball/tesseract-build-vs2013_build20161228%23ea3a6f84e7311b85d29d9a70ed52ad76.zip













沪ICP备19023445号-2号
友情链接