基本概念

Tesseract OCR:Tesseract-OCR 引擎最先由HP实验室于1985年开始研发,至1995年时已经成为OCR业内最准确的三款识别引擎之一。然而,HP不久便决定放弃OCR业务,Tesseract也从此尘封。数年以后,HP 意识到,与其将Tesseract束之高阁,不如贡献给开源软件业,让其重焕新生。在2005年,Tesseract 由美国内华达州信息技术研究所获得,并求诸于 Google 对 Tesseract 进行改进、消除Bug、优化工作,Tesseract 由惠普公司宣布开源。从2006年到现在,都由 Google 公司开发维护。

编译环境

Windows 10

CMake-GUI

Visual Studio 2019

Anaconda3(可无)

解决方案

注意事项

关闭杀毒软件。

源码下载

tesseract的编译有诸多依赖,tesseract依赖于leptonica,而leptonica又依赖于png,tiff,jpeg等基础库,所以需要下载这些依赖的源码,并且依次编译

考虑到某些图片格式的基础库源码较老并且久未更新难于编译,本文只编译了较新的libtiff,并作为示例,其他图片格式未测试

下载地址:

  • libtiff 4.09,http://download.osgeo.org/libtiff/tiff-4.0.9.zip
  • leptonica 1.76.0,http://www.leptonica.com/source/leptonica-1.76.0.tar.gz
  • tesseract 3.05.01,https://github.com/tesseract-ocr/tesseract/archive/3.05.01.zip

下载完后解压缩到文件夹,这里将三个项目源码都放在D:\Code\Project目录

编译过程

特别指定,本文中所有项目生成都是使用cmake-gui工具(首先要会用这个工具),C++编译使用vs2019,所有cmake编译目录都定为build_x64

所有的编译模式都是:vs2015 win64 release

由于tiff --> leptonica --> tesseract 三者之间层层递进,环环相扣,所以编译一定要注意顺序和设置

step1:编译tiff

常规cmake流程编译出 tiff.lib和tiff.dll,位置在 D:\Code\Project\tiff-4.0.9\build\libtiff\Release

如果有安装Anaconda3可以跳过这步。

step2:编译leptonica

cmake配置,勾选Grouped和Advanced,会显示png和tiff等图片库的设置入口,要先将tiff的目录配置进去,使得支持tiff格式

如果没有安装Anaconda3情况下

Visual Studio 2019打开项目

编译

使用libtiff需要修改 libtiff目录下的两个头文件,将tiffconf.vc.h和tif_config.vc.h改名为tiffconf.h和tif_config.h

得到两个文件

  • leptonica-1.76.0.lib,位置 D:\Code\Project\leptonica-1.76.0\build\src\Release

  • leptonica-1.76.0.dll,位置 D:\Code\Project\leptonica-1.76.0\build\bin\Release

如果要支持png,需要下载编译libpng和zlib源码,并且在cmake-gui里面先设置zlib,再设置libpng

step3:编译tesseract

根目录的cmake配置文件在

if(NOT EXISTS ${PROJECT_SOURCE_DIR}/.cppan)

这句话之前加上

set(Leptonica_DIR D:/Code/Project/leptonica-1.76.0/build) include_directories(D:/Code/Project/leptonica-1.76.0/srcD:/Code/Project/leptonica-1.76.0/build4/src
)

目的是为了让tesseract在cmake的config阶段找到leptonica的头文件和库,当然,也可以在cmake-gui里面直接设置Leptonica_DIR

在configure的过程会出现如下日志,显示正在下载ICU的依赖,等到其下载完成即可,注意打开科学上网,否则会因为网络问题不成功

如果一直网络超时,可以在 https://github.com/unicode-org/icu/releases 手动下载icu的开发包 icu4c-67_1-Win64-MSVC2017.zip,然后重命名为icu64.zip拷贝到编译的对应目录

然后修改源码目录的  tesseract-3.05.01\src\training\CMakeLists.txt,注释以下行

#    file(DOWNLOAD
#        "http://download.icu-project.org/files/icu4c/56.1/icu4c-56_1-Win${ARCH_DIR_NAME}-msvc10.zip"
#        "${icu_archive}"
#        SHOW_PROGRESS
#        INACTIVITY_TIMEOUT 60 # seconds
#        EXPECTED_HASH MD5=${icu_hash}
#    )#    set(ICU_ROOT ${icu_dir}/icu)

再重新configure完成

Visual Studio2019打开项目,进行编译,一般情况下会出现一个字符编码的报错(最新版4.1.1已不报)

此时不用惊慌,只需要将tesseract中equationdetect.cpp文件修改一下,再编译就好了

static const STRING kCharsToEx[] = {"'", "`", "\"", "\\", ",", ".",  "〈", "〉", "《", "》", "」", "「", ""};  

改为

static const STRING kCharsToEx[] = { "'", "`", "\"", "\\", ",", ".",  "<", ">", "<<", ">>", "" };  

如果报错PACKAGE_VERSION找不到,可以手动在根目录的CMakeLists.txt中添加宏

add_definitions(-DPACKAGE_VERSION="3.05.01"
)

编译

顺利编译出tesseract项目的各种二进制工具exe,lib和dll

  • tesseract305.lib,位置 D:/Code/Project/tesseract-3.05.01\build\Release
  • tesseract305.dll,位置 D:/Code/Project/tesseract-3.05.01\build\bin\Release
  • tesseract.exe,位置 D:/Code/Project/tesseract-3.05.01\build\bin\Release

简单使用

拷贝文件

在\tesseract-3.05.01\build\bin\Release目录下,从源码目录将tessdata拷贝进去,并且提前下载好已训练语言包(https://github.com/tesseract-ocr/tessdata)

另外,将用到的tiff和liptonica以及要识别的图片都拷贝进来

文本识别

bmp格式原生支持

打开CMD

cd D:/Code/Project/tesseract-3.05.01/build/bin/Release
tesseract 20180602231441791.bmp euro

识别结果

euro.txt

The (quick) [brown] {fox} jumps!
Over the $43,456.78 <lazy> #90 dog
& duck/goose, as 12.5% of E-mail
from aspammer@website.com is spam.
Der ,,schnelle” braune Fuchs springt
fiber den faulen Hund. Le renard brun
«rapide» saute par-dessus le chien
paresseux. La volpe marrone rapida
salta sopra il cane pigro. El zorro
marrén répido salta sobre el perro
perezoso. A raposa marrom répida
salta sobre 0 C50 preguicoso.

官方的模型有些字符不是特别准确,需要训练

参考文章

windows编译和使用tesseract(C++ api)

cmake-gui使用教程

VS2017/VS2015编译tesseract

Tesseract OCR——Windows 10 + CMake-GUI + Visual Studio 2019下编译和使用解决方案相关推荐

  1. 解决OpenSSL加入到在Visual Studio 2019中编译返回LNK2019错误

    文章目录 小结 问题和解决 Error LNK2019 Error LNK1104 Warning C4996 参考 小结 碰到了OpenSSL加入到在Visual Studio 2019中编译返回L ...

  2. Visual Studio 2019 下Python的开发环境搭建

    Python的开发环境有各种各样的,在Windows下可以通过各种IDE(I Integrated Development Environment)来进行开发,比如Pycharm,Spyder, Th ...

  3. Windows 10 上强制Visual Studio以管理员身份运行

    Windows 10 的一个既安全又蛋疼之处是UAC的行为被改变了.以往在Windows 7中,只要关闭了UAC,自己的帐号又是本机管理员组的,任何程序都会以管理员身份启动.然而,在Windows 8 ...

  4. Visual Studio 2019版本运行报错解决方案

    版本:Microsoft Visual C++ 2019 问题一:无法直接启动带有类库输出类型的项目 解决方案:选中要运行的项目,点击鼠标右键,选择属性,在弹出页面中修改输出类型为"Wind ...

  5. Visual Studio 2019下用 C# 实现 Hill2 二阶希尔密码 的加密、解密 GUI界面

    1.什么是Hill2 什么是Hill密码 希尔密码(Hill)使用每个字母在字母表中的顺序作为其对应的数字,即 A=0,B=1,C=2 等,然后将明文转化为 n 维向量,跟一个 n × n 的矩阵相乘 ...

  6. window wdk visual studio 2019 驱动编译

    安装失败确认是否是下载的142的,vs2022 143的不 支持我搞了好久都没搞定,下载完成后,如果已经安装了wdk,那么需要装可扩展则可以搜索wdk.visx 直接打开就行. 实际上就是个visx ...

  7. 在visual studio 2019下安装ipopt并实现非线性规划求解(C++)

    1. 首先安装ipopt 1.1 尝试vcpks包管理器安装(失败) 安装vcpkg: 按照下边网址操作https://github.com/Microsoft/vcpkg#quick-start-w ...

  8. PaddleOCR——Visual Studio 2019 环境下C++推理部署 CMake 编译解决方案

    PaddleOCR--Visual Studio 2019 环境下C++推理部署 CMake 编译解决方案 官方文档 环境配置 Step1: 下载PaddlePaddle C++ 预测库 paddle ...

  9. 一步一步在 Windows 10 用 visual studio 2019 编译 zmqpp 4.2.0 版

    伸手党可以到 zmqpp库windows编译结果-C++文档类资源-CSDN下载 去下载 zmqpp 是 libzmq 的高级 C++ 封装,不但提供了针对 libzmq C 接口的 C++ 封装,还 ...

最新文章

  1. php 多用户 判断,Laravel jwt 多表(多用户端)验证隔离的实现
  2. x86汇编-1(第三章—第四章)虚拟硬盘基本信息,虚拟硬盘的写入,bochs调试
  3. RMI原理揭秘之远程方法调用
  4. Java监视器绑定的超人
  5. [探索][管理]《现在,发现你的优势》
  6. flink sql设置并行度_Flink集成Hivestream模式用例
  7. 跟我从零基础学习Unity3D开发--NGUI入门基础
  8. jquery 删除元素remove,empty
  9. 深入浅出SSD--5.1PCIE基础知识
  10. DDR3 MIG IP核仿真与学习
  11. 企业集成平台与SOA架构
  12. cmd命令查询电脑序列号_如何查看台式电脑序列号
  13. 常见系统安全漏洞及解决方案
  14. NAOMI: Non-Autoregressive MultiresolutionSequence Imputation(非自回归多分辨率序列填补)论文详解
  15. python re库,Python中的Re库简要总结
  16. 2019年数学建模C题
  17. 【已解决】程序文件被ESET NOD32误杀或拦截怎么办?以ENDPIINT SECURITY为例添加信任教程截图(ESET通用))
  18. layui常用审核弹窗
  19. 冰河的高并发电子书开源啦(文末免费领取)!!
  20. Collection集合,List集合

热门文章

  1. [翻译] 构建完美的WPF开发工作站
  2. 四川大学计算机网络_四川大学20考研情况
  3. python热部署_定时任务-Quartz(热部署、冷部署)
  4. redhat7 32位mysql_Redhat7.3安装MySQL8.0.22的详细教程(二进制安装)
  5. java7 arm_zynq7000系列移植—JDK1.7 移植到嵌入式ARM平台
  6. python建立字典读取键和值_在Python字典中动态创建键和值
  7. 两个主机mtu不相同_案例详解:MTU不一致导致主机和RAC不断重启
  8. hdfs namenode -format 初始化创建不了目录的问题
  9. 十九、抓包利器Charles的使用
  10. 环形公路堵车概率模型