Tesseract OCR——Windows 10 + CMake-GUI + Visual Studio 2019下编译和使用解决方案
基本概念
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下编译和使用解决方案相关推荐
- 解决OpenSSL加入到在Visual Studio 2019中编译返回LNK2019错误
文章目录 小结 问题和解决 Error LNK2019 Error LNK1104 Warning C4996 参考 小结 碰到了OpenSSL加入到在Visual Studio 2019中编译返回L ...
- Visual Studio 2019 下Python的开发环境搭建
Python的开发环境有各种各样的,在Windows下可以通过各种IDE(I Integrated Development Environment)来进行开发,比如Pycharm,Spyder, Th ...
- Windows 10 上强制Visual Studio以管理员身份运行
Windows 10 的一个既安全又蛋疼之处是UAC的行为被改变了.以往在Windows 7中,只要关闭了UAC,自己的帐号又是本机管理员组的,任何程序都会以管理员身份启动.然而,在Windows 8 ...
- Visual Studio 2019版本运行报错解决方案
版本:Microsoft Visual C++ 2019 问题一:无法直接启动带有类库输出类型的项目 解决方案:选中要运行的项目,点击鼠标右键,选择属性,在弹出页面中修改输出类型为"Wind ...
- Visual Studio 2019下用 C# 实现 Hill2 二阶希尔密码 的加密、解密 GUI界面
1.什么是Hill2 什么是Hill密码 希尔密码(Hill)使用每个字母在字母表中的顺序作为其对应的数字,即 A=0,B=1,C=2 等,然后将明文转化为 n 维向量,跟一个 n × n 的矩阵相乘 ...
- window wdk visual studio 2019 驱动编译
安装失败确认是否是下载的142的,vs2022 143的不 支持我搞了好久都没搞定,下载完成后,如果已经安装了wdk,那么需要装可扩展则可以搜索wdk.visx 直接打开就行. 实际上就是个visx ...
- 在visual studio 2019下安装ipopt并实现非线性规划求解(C++)
1. 首先安装ipopt 1.1 尝试vcpks包管理器安装(失败) 安装vcpkg: 按照下边网址操作https://github.com/Microsoft/vcpkg#quick-start-w ...
- PaddleOCR——Visual Studio 2019 环境下C++推理部署 CMake 编译解决方案
PaddleOCR--Visual Studio 2019 环境下C++推理部署 CMake 编译解决方案 官方文档 环境配置 Step1: 下载PaddlePaddle C++ 预测库 paddle ...
- 一步一步在 Windows 10 用 visual studio 2019 编译 zmqpp 4.2.0 版
伸手党可以到 zmqpp库windows编译结果-C++文档类资源-CSDN下载 去下载 zmqpp 是 libzmq 的高级 C++ 封装,不但提供了针对 libzmq C 接口的 C++ 封装,还 ...
最新文章
- php 多用户 判断,Laravel jwt 多表(多用户端)验证隔离的实现
- x86汇编-1(第三章—第四章)虚拟硬盘基本信息,虚拟硬盘的写入,bochs调试
- RMI原理揭秘之远程方法调用
- Java监视器绑定的超人
- [探索][管理]《现在,发现你的优势》
- flink sql设置并行度_Flink集成Hivestream模式用例
- 跟我从零基础学习Unity3D开发--NGUI入门基础
- jquery 删除元素remove,empty
- 深入浅出SSD--5.1PCIE基础知识
- DDR3 MIG IP核仿真与学习
- 企业集成平台与SOA架构
- cmd命令查询电脑序列号_如何查看台式电脑序列号
- 常见系统安全漏洞及解决方案
- NAOMI: Non-Autoregressive MultiresolutionSequence Imputation(非自回归多分辨率序列填补)论文详解
- python re库,Python中的Re库简要总结
- 2019年数学建模C题
- 【已解决】程序文件被ESET NOD32误杀或拦截怎么办?以ENDPIINT SECURITY为例添加信任教程截图(ESET通用))
- layui常用审核弹窗
- 冰河的高并发电子书开源啦(文末免费领取)!!
- Collection集合,List集合
热门文章
- [翻译] 构建完美的WPF开发工作站
- 四川大学计算机网络_四川大学20考研情况
- python热部署_定时任务-Quartz(热部署、冷部署)
- redhat7 32位mysql_Redhat7.3安装MySQL8.0.22的详细教程(二进制安装)
- java7 arm_zynq7000系列移植—JDK1.7 移植到嵌入式ARM平台
- python建立字典读取键和值_在Python字典中动态创建键和值
- 两个主机mtu不相同_案例详解:MTU不一致导致主机和RAC不断重启
- hdfs namenode -format 初始化创建不了目录的问题
- 十九、抓包利器Charles的使用
- 环形公路堵车概率模型