Tesseract-OCR 4.0使用了LSTM网络,准确性相比3.x版本提升不少。

官网提供的安装包会提供一堆DLL,而我需要的是一个静态链接的exe文件,所以只能重新编译。

编译环境

  • Windows 10 专业版

  • Visual Studio 2017

需要选择开发桌面程序的相关组件,并选择英文。

  • cmake

我的cmake版本是3.13.2,貌似没它也行。

  • cppan

cppan官网下载CPPAN客户端,编译动态库时使用。

  • vckpg

下载vcpkg源码,使用管理员权限打开PowerShell,编译之。

> git clone https://github.com/Microsoft/vcpkg.git
> cd vcpkg PS> .\bootstrap-vcpkg.bat
PS> .\vcpkg integrate install

编译Tesseract-OCR 4.0

PS> .\vcpkg install tesseract:x86-windows-static

如果需要64位的exe,将上面的x86换成x64即可。

如果发现某个组件下载失败,可以自行下载后,将文件放在vcpkg\downloads\目录下,然后重新运行上面的命令。

最后成功时,会得到exe文件在vcpkg\packages\tesseract_x86-windows-static\tools\tesseract\tesseract.exe

验证exe文件

PS> .\tesseract.exe --version
tesseract 4.0.0
leptonica-1.76.0 (Jan 5 2019, 23:01:20) [MSC v.1916 LIB Release x86]
libgif 5.1.4 : libjpeg 6b (libjpeg-turbo 1.5.3) : libpng 1.6.35 : libtiff 4.0.10 : zlib 1.2.11
Found AVX
Found SSE

使用Tesseract-OCR 4.0识别图片文件

将tesseract.exe拷贝到某个目录,然后在该目录之下建立tessdata目录,下载所需的语言库文件放在里面。

要识别简体中文,需要下载的是chi_sim_best.traineddatachi_sim_vert.traineddata文件。

举例要识别a.jpg文件,命令行如下:

> tesseract.exe a.jpg output -l chi_sim_best --oem 1

识别结果在output.txt文件内。

OpenMP

安装Visual C++ Redistributable 2015,就有了vcomp140.dll,以支持OpenMP。

编译动态库

如果想得到动态库,使用下面的命令:

cppan --build pvt.cppan.demo.google.tesseract.tesseract-master

中间出现错误,将equationdetect.cpp使用带BOM的UTF-8编码另存一下就解决了,最终生成的动态库文件如下:

pvt.cppan.demo.danbloomberg.leptonica-1.76.0.dll
pvt.cppan.demo.google.tesseract.libtesseract-master.dll
pvt.cppan.demo.google.tesseract.tesseract-master.exe
pvt.cppan.demo.jpeg-9.2.0.dll
pvt.cppan.demo.madler.zlib-1.2.11.dll
pvt.cppan.demo.openjpeg.openjp2-2.3.0.dll
pvt.cppan.demo.png-1.6.35.dll
pvt.cppan.demo.tiff-4.0.9.dll
pvt.cppan.demo.webp-0.6.1.dll
pvt.cppan.demo.xz_utils.lzma-5.2.4.dll

Tesseract训练工具

cppan官网下载CPPAN客户端,然后执行

cppan --build pvt.cppan.demo.google.tesseract-master

最后也没成功,部分报错如下:

Performing Test HAVE_DECL_DECL - Failed
...
error C2065: 'decl': undeclared identifier

不清楚原因是什么。


[更新于 2019-11-05]

上述流程可以应用于生成最新版的Tesseract,目前编译成功了 4.1.0

  • 可以使用VS2019 Commnunity版
  • 安装时需要选择使用C++的桌面开发,默认配置即可
  • 注意要包含Windows 10 SDK
  • 语言包要勾选English

[笔记]Win10下编译Tesseract-OCR 4.0的更多相关文章

  1. win10下vs2015配置Opencv3.1.0过程详解

    下载安装Opencv3.1.0 下载Opencv3.1.0,进入官网,点击opencv for windows即可下载.  点击运行下载好的文件.实际上,opencv的安装程序就是解压缩文件,个人因为 ...

  2. win10下vs2015配置Opencv3.1.0过程详解(转)

    下载安装Opencv3.1.0 下载Opencv3.1.0,进入官网,点击opencv for windows即可下载.  点击运行下载好的文件.实际上,opencv的安装程序就是解压缩文件,个人因为 ...

  3. 在CUDA8.0下编译安装OpenCV3.1.0来实现GPU加速(Compiling OpenCV3.1.0 with CUDA8.0 support)

    在CUDA8.0下编译安装OpenCV3.1.0 一.本人电脑配置:ubuntu 14.04, NVIDIA GTX1060. 二.编译OpenCV3.1.0前,读者需要成功安装CUDA8.0(网上有 ...

  4. Ubuntu16.04下编译安装OpenCV3.4.0(C++ & python)

    Ubuntu16.04下编译安装OpenCV3.4.0(C++ & python) 前提是已经安装了python2,python3 1)安装各种依赖库 sudo apt-get update ...

  5. Win10下编译OpenJDK8

    导航目录 Win10下编译OpenJDK8 相关参考文章 编译环境 编译前准备 1.安装 Visual Studio 2010 Professional 2. 准备OpenJDK8 3. 编译JDK环 ...

  6. Win10下mysql5.5和mysql8.0.19共存

    Win10下mysql5.5和mysql8.0.19共存 需求:由于之前做的项目用的是mysql5.5,而新接的项目指定用mysql8,需要myql5..5和8同时存在运行. 前提:电脑已经安装mys ...

  7. CENTOS 下 编译安装 tesseract-ocr 3.0.4 识别文字

    网上搜集了不少资料,发现目前Tesseract转移到了Github上,因此下载方式和以前略有差别,下文是参考了诸位达人(再此表示感谢)和自己的实际操作过程形成的.(1)首先安装依赖的leptonica ...

  8. 【甘道夫】Win7x64环境下编译Apache Hadoop2.2.0的Eclipse小工具

    目标: 编译Apache Hadoop2.2.0在win7x64环境下的Eclipse插件 环境: win7x64家庭普通版 eclipse-jee-kepler-SR1-win32-x86_64.z ...

  9. win10下ASP.NET Core 2.0部署环境搭建(转)

    此文用于记录在win10环境下,新建的Asp.net Core 2.0 Web应用项目如何运行在IIS上 一.运行环境 操作系统: Window10 家庭中文版 版本 10.0.15063 版本 15 ...

随机推荐

  1. 【BZOJ】1668: [Usaco2006 Oct]Cow Pie Treasures 馅饼里的财富(dp)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1668 裸dp.. f[i][j]表示i行j列最大能拿到 f[i][j]=max(f[i+1][j-1 ...

  2. PHPMailer发送邮箱(ThinkPHP实战篇)

    1.下载phpmailer文件库 2.引用文件,此处将代码放到 :函数库中,function.php function sendConsultantMessage($sendData){ Vendor ...

  3. 灵活的javaScript

    通常我们不像下面这样声明函数,因为会创建很多全局变量. function checkName() { // code } function checkEmail() { // code } 所以,我们 ...

  4. php如何互换一个数组的首尾元素 中间不变 首尾互换

    群里有人提出一个问题 如何互换一个数组的首尾元素 中间不变 首尾互换 代码如下: <?php $array=array(1,2,3,4,5,6,7,8,9,10); $first=array_s ...

  5. shell脚本学习总结06--数学计算

    在bash中可利用let,(())和[]执行基本的操作,高级操作将会使用expr和bc 运算符:+,—,*,/,**(幂) (()) [root@Director ~]# ((c=2**3-9%2)) ...

  6. m2014-c->c模拟java的hashmap容器类

    转自:http://bbs.csdn.net/topics/390034346 在java中像ArrayList,HashMap都是现成的,在java.util包中,用的时候直接import java ...

  7. 在Hyper-V Linux VM如何选择LIS Linux集成服务

    导读 很多工程师都知道,如果你选择在 Hyper-V 中运行 Linux guest VM,要获得最好的使用体验,必需针对你所使用的 Linux 发行版和使用场景选择 Linux Integratio ...

  8. 导出数据到Excel方法总结

    一,问题的提出 近来在网上经常有人问怎样把数据导出到Excel中?针对这个问题网上也有很多资料.大都比较的琐碎.本人当前从事的项目中,刚好涉及到这些内容.就顺便做了一些归纳整理.共享给大家.避免大家再 ...

  9. 单台centos7.3 虚拟机实现主从复制和哨兵集群

    环境: centos7.3一台 部署图: 从服务器配置: slaveof 哨兵配置: port sentinel monitor m1 127.0.0.1 6379 2 sentinel monito ...

  10. LeetCode 笔记系列11 First Missing Positive [为什么我们需要insight]

    题目: Given an unsorted integer array, find the first missing positive integer. For example,Given [1,2 ...