做一个字符检测比对的小项目,需要借助Tesseract的OCR进行开发。
详见另一篇:https://blog.csdn.net/weixin_46293955/article/details/105961344
待更新…
tesseract v5.0.0 64位安装包下载链接: https://download.csdn.net/download/weixin_46293955/12531753
双击安装程序 点击Next 点击I Agree 选择电脑用户,点击Next 勾选组件 选择语言包:符号、数字、简体中文、简体中文(复杂)、繁体中文、繁体中文(复杂)、英文(复杂)。 未选择的情况下自带英文、数字、符号。 自定义安装路径,这里安装到D盘Tesseract-OCR文件夹中 点击Install按钮安装 报错是由于语言包无法下载,点击确定跳过 等待安装完成 点击Finish安装完成 加入系统环境变量Path 新建环境变量TESSDATA_PREFIX,路径指向tessdata文件夹 安装完后文件如下图: 查看是否安装成功,在Windows PowerShell中下指令tesseract,出现如下回传,则表示安装成功。 查看支持的语言,在Windows PowerShell中下指令tesseract --list-langs,此处语言放在tessdata文件夹中。 语言包下载链接: 待更新
放置一张图片至D盘,命名为ROI.jpg(图片为在百度随机截取,侵删) 在Windows PowerShell中下指令tesseract D:\ROI.jpg D:\1 回传如下,可以看到识别为空。原因是文字太小或者太模糊(图截得很小) 使用画图工具放大后,回传如下 依然很模糊,不过可以识别,在D盘下会生成一个1.txt文件,打开后可以看到,已识别到文字。 指定识别类型,在Windows PowerShell中下指令tesseract D:\ROI.jpg D:\1 -1eng 指定输出文件类型,如pdf格式,在Windows PowerShell中下指令tesseract D:\ROI.jpg D:\1 -1eng pdf
如果需要提高识别率,需要自己训练字符库。
需要配置JAVA开发环境,过程略。
训练方法: 待更新…
若要在Visual Studio 2019下使用,则需要用CMake建构,用到Tesseract的tesseract-master版。 Tesseract v5.0.0 tesseract-master官网下载链接:https://github.com/tesseract-ocr/tesseract/ Tesseract v5.0.0 tesseract-master版下载: https://download.csdn.net/download/weixin_46293955/12533636 解压后文件如下图:
cppan.exe for Windows下载链接: https://download.csdn.net/download/weixin_46293955/12522811 cppan.exe for Windows官网下载链接:https://cppan.org/client/
将cppan.exe放入tesseract安装的根目录中。
将cppan.exe所在的路径添加到系统变量中。
在Windows PowerShell下执行:.\cppan.exe命令,出现No spec file found报错,如下图。 原因:最新的tesseract5.0.0没有cppan.yml文件 解决方法:下载安装低版本的tesseract4.1,将其中的cppan.yml文件拷贝出来。再次运行,成功安装,如下图。过程中可能因为网络问题报错,多试几次(需要一定的时间,请耐心等待) 低版本的cppan.yml单独下载链接: https://download.csdn.net/download/weixin_46293955/12532402 安装路径为C盘–用户–用户名–.cppan文件夹–storage文件夹,如果用户名中含有空格,则无法执行成功,需要更改用户名,或者在其它路径新建storage文件夹,并编辑修改.cppan文件夹中cppan.yml文件中的指向路径。
CMake下载链接: 官网https://cmake.org/download/ CMake3.18 64位for Windows安装版&免安装版下载链接: https://download.csdn.net/download/weixin_46293955/12533155 CMake3.13 64位for Windows安装版下载链接: https://download.csdn.net/download/weixin_46293955/12532529
步骤待更新… 为cmake设置环境变量,解压后目录下的bin目录地址加至系统环境变量PATH中,与cppan设置环境变量的方法一致。
使用高版本cmake构建可能会报错,使用低版本cmake的没有VS2019。
在Tesseract目录下新建build文件夹,将来源路径及建构路径填入,如下图: 点击Tool–Configure,进行Configure 选择合适版本的CMake,选择IDE。 点击Finish,若报错Error in configuration process,project files may be invlid,如下,原因是缺少CMakeLists.txt文件。
解决方法:1.将.cppan文件夹中的内容copy出来至Tesseract目录下。 2.使用tesseract-master,里面有CMakeLists.txt文件,重新建构即可。 3.更换低版本release,tesseract release v4.1.1 手动修改CMakeLists.txt文件,过程待更新…
建构需要较长时间,请耐心等待。
在D盘下新建install文件夹,更改路径。 完成后再次点击Configure,然后点击Generate按钮,即完成。 建构完成,如下图:
官网下载链接:https://github.com/tesseract-ocr/tesseract/releases tesseract release v4.1.1下载链接: 待更新… 操作同tesseract v5.0.0、 CMake使用cmake v3.17.3
编译过程略,无法编译成功。
查阅资料发现,在VS2019中使用tesseract需要Leptonica的支持,leptonica是一个开源的面向教学的软件,通常被用来作为图像处理和图像分析的一个底层库支持。
leptonica官网下载地址:http://www.leptonica.org/download.html
解压到路径D:\temp\leptonica 在temp文件夹中新建leptonicanew文件夹,使用CMake建构leptonica,如下: 同样2次点击Configure按钮,直到没有报错。并更改INSTALL_PREFIX路径。 依次点击Configure按钮、Generate按钮,完成建构。
文件路径:D:\temp\leptonicanew\leptonica.sln 更改配置属性: 选择release,配置中,勾选INSTALL 在release模式下生成解决方案。 生成成功 文件在此路径D:\leptonica
下载链接:待更新…
重新编译,tesseract v4.1.1解压路径D:\temp\Tesseract。 在temp文件夹下新建Tesseractnew文件夹。 使用CMake建构。 报错如下: 原因是找不到leptonica路径。 更改路径至之前编译好的cmake路径: 若反复报错,可取消训练工具此勾再尝试。 使用CMake3.17多次Configure依然报错找不到LeptonicaConfig.cmake文件,实际文件夹中有:
更换CMake3.16.8,依然编译不通过,排除CMake版本问题。 删除C盘-用户下的.cppan文件夹,重新执行cppan.exe,完成如下(方法同上):
再次使用CMake建构,报错消失。 多次Configure直至红色报错消失,会提示:CPPAN过旧,请考虑切换到软件构建。不用理会。 点击Generate,生成工程文件。
需要使用管理员身份打开,具体参考:https://blog.csdn.net/lien0906/article/details/47300881
由于踩了坑,多次无法编译成功,换了Visual Studio 2017尝试,后换回Visual Studio 2019编译成功,步骤同如下尝试。
cppan.exe需要重新安装、需要用CMake重新建构。 建构时注意选择32/64位: 使用管理员打开工程文件 同样进行如下设置: 在release模式下,生成解决方案 可以看到有大量报错,大多都是cppan-d-b-d 字符编码乱码导致,单独编译cppan-d-b-d : 双击错误,打开文件,点击左上角菜单 “文件选项" 下的"高级保存选项", 选择“GB2312”.保存后再“生成"即可。
如果找不到“高级保存选项”,点击工具–自定义,添加命令。 选择命令–文件–添加命令 选择文件–高级保存选项,然后点击确定,即可添加成功。 改成UTF-8 有签名。 重新生成,可解决字符乱码错误。
若出现如下endianness.h头文件报错找不到: 找到该目录下,可以看到endianness.h被编译成endianness.h.in 解决方法一:把endianness.h.in的.in去掉,成为一个.h文件,打开:
#if !defined (L_BIG_ENDIAN) && !defined (L_LITTLE_ENDIAN) # if @APPLE_UNIVERSAL_BUILD@ # ifdef __BIG_ENDIAN__ # define L_BIG_ENDIAN # else # define L_LITTLE_ENDIAN # endif # else # define @ENDIANNESS@ # endif #endif
要将上述代码改成:
#if !defined (L_BIG_ENDIAN) && !defined (L_LITTLE_ENDIAN) # if defined (__APPLE_CC__)//@APPLE_UNIVERSAL_BUILD@ # ifdef __BIG_ENDIAN__ # define L_BIG_ENDIAN # else # define L_LITTLE_ENDIAN # endif # else # define L_LITTLE_ENDIAN//@ENDIANNESS@ # endif #endif
保存后,重新编译即可。 解决方法二:从建构好的leptonicanew文件夹中找到该头文件,copy至所需目录下即可: 报错找不到allheaders.h头文件 allheaders.h是leptonica的头文件,路径如下: 解决方法:分别右击libtesseract和tesseract,VC++目录——包含目录,添加D:\leptonica\include\leptonica
如果遇到其它情况,可以尝试用vcpkg编译。