Tesseract OCR源码编译,在opencv c++中使用开发

简述以下内容:

编译tesseract ocr的静态lib库,给c++编程中开发使用,可搭配opencv或leptonica库进行图片识别。都是当下最新的版本

文中所用到的网址如下

1.SW下载地址:https://software-network.org/client/
2.tesseract ocr下载地址:https://github.com/tesseract-ocr/tesseract
3.tesseract ocr依赖的lib库下载地址:https://github.com/peirick/Tesseract-OCR_for_Windows
4.leptonica下载地址:https://github.com/DanBloomberg/leptonica
5.tesseract ocr文字识别库下载地址:https://github.com/tesseract-ocr/tessdata

编译后的文件资源,也都已经上传

实操步骤

1.下载配置SW

下载最新的sw-master-windows_x86_64-client.zip解压到任意目录,把SW.exe所在路径设置为环境变量。
在这里插入图片描述
在CMD中执行sw setup,这一步是为了在编译tesseract ocr时自动找到SW_DIR的路径。
在这里插入图片描述
上图我是更换了一个网络才不会报错的,可能公司网有限制。

2.编译tesseract ocr

下载最新的tesseract,在目录中新建build目录,打开cmake-gui。
当然你需要选择你所用的VS版本和编译平台,如下图,他会自动找到SW所在路径,依次点击configure和generate,sw会下载很多依赖库到C:\Users\用户名.sw里面。
在这里插入图片描述
打开build下面的tesseract.sln,点击ALL_BUILD,右键生成
在这里插入图片描述
此时会出现多个(20个左右)文件报警如下,每次生成就会爆出一个,依次将该文件的编码类型改为utf-8 带签名(VS中具有这个功能),再次生成
在这里插入图片描述
在这里插入图片描述
在debug和release模式下分别点击install后,在C:/program Files下会生成tesseract.exe和tesseract54d.lib、tesseract54.lib等文件
在这里插入图片描述

3.编译Tesseract-ocr_for_windows-master

目的是生成giflib.lib、libjpeg.lib、liblept.lib、libpng.lib、libtiff.lib、libwebp.lib、openjpeg.lib、zlib.lib
第一步是要先下载leptonica的源码放在Tesseract-ocr_for_windows-master的解压目录内的leptonica中,如下图
在这里插入图片描述
第二步,打开tesseract.sln后,我直接选择不生成jbig2enc、libtesseract、tesseract这三项(别问,问就是生成的有问题),我只要生成上一节tesseract静态库依赖的静态库
在这里插入图片描述
现在就会生成如下8个lib库,可生成debug和release版本
在这里插入图片描述

4.下载文字识别库,放在tessdata目录下,例如在你的c++项目exe目录中

在这里插入图片描述

5.使用opencv打开图片传入ocr识别,测试代码如下

#include<tesseract/baseapi.h>
//#include <leptonica/allheaders.h>    //可以用opencv读取图像,代替
//#include <leptonica/pix_internal.h>
#include<opencv2/opencv.hpp>
using namespace tesseract;
int main()
{
    char* outText;

    tesseract::TessBaseAPI* api = new tesseract::TessBaseAPI();
    /*
     Initialize OCR engine to use English (eng) and The LSTM
     OCR engine.


     There are four OCR Engine Mode (oem) available

     OEM_TESSERACT_ONLY             Legacy engine only.
     OEM_LSTM_ONLY                  Neural nets LSTM engine only.
     OEM_TESSERACT_LSTM_COMBINED    Legacy + LSTM engines.
     OEM_DEFAULT                    Default, based on what is available.
    */
    // Initialize tesseract-ocr with English, without specifying tessdata path  
    if (api->Init(NULL, "tessdata/eng", OEM_LSTM_ONLY))
    {
        fprintf(stderr, "Could not initialize tesseract.\n");
        exit(1);
    }

     Open input image with leptonica library  
    //Pix* image = pixRead("9.bmp");    //可以用opencv读取图像,代替
    //api->SetImage(image);

    //Set Page segmentation mode to PSM_AUTO (3)
   // Other important psm modes will be discussed in a future post.
   // 设置分割模式
    api->SetPageSegMode(tesseract::PSM_AUTO);
    // Open input image using OpenCV
    cv::Mat im = cv::imread("9.bmp", 0);

    // Set image data
    api->SetImage(im.data, im.cols, im.rows, 1, im.step);
    //std::cout << im.step;
    // Get OCR result  
    outText = api->GetUTF8Text();
    printf("---- OCR output:---- \n%s", outText);

    // Destroy used object and release memory  
    api->End();
    delete[] outText;
    //pixDestroy(&image);
    return 0;
}

vs工程中需要包含头文件和库目录,库名称。这样生成的exe可以直接给别人电脑使用。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

题外话

如果你不用opencv,那就用leptonica的库进行开发,之前下载有leptonica的源码,进行cmake和vs编译就会有lib静态库生成,则可读取图片进行识别。

参考资料

1.https://blog.youkuaiyun.com/Jay_Xio/article/details/116296767
2.https://mp.weixin.qq.com/s/f1LPa4CKZ7D22dzSvMlvOQ

疑问

如何生成dll动态库呀,有大佬指导吗?

### 编译 Tesseract OCR 的环境准备 为了在 Windows 上使用 Visual Studio 2018 和 CMake 来编译 Tesseract OCR,需要先准备好开发环境。确保安装了以下软件: - **操作系统**:Windows 10(版本不限) - **集成开发环境 (IDE)**:Visual Studio 2018 - **构建工具**:CMake 版本应不低于 3.14[^1] ### 下载并解压源码包 前往 [GitHub](https://github.com/tesseract-ocr/tesseract/releases) 获取最新稳定版的 Tesseract 源代码压缩包,并将其下载到本地磁盘上适当位置。 ### 创建项目结构 创建一个新的目录用于存放所有的文件和子目录,比如 `D:\tesseract_build`。在这个路径下再建立两个子文件夹分别命名为 `source` 和 `build`: - 将之前获取的 Tesseract 压缩包内的所有内容复制至 `source` 文件夹内; - `build` 文件夹则用来放置后续由 CMake 生成的各种中间产物以及最终的目标程序。 ### 设置代理服务器(可选) 如果网络条件允许的话可以直接跳过此步;但如果遇到连接速度慢或者无法访问外部资源的情况,则可以在 `.bashrc` 或者其他合适的 shell profile 中设置 HTTP(S)_PROXY 变量来加速下载过程[^2]: ```shell export http_proxy=127.0.0.1:7890 export https_proxy=127.0.0.1:7890 ``` 注意这里的端口号需根据实际使用的代理服务而定。 ### 安装必要的依赖项 Tesseract OCR 需要 Leptonica 库的支持才能正常工作。可以从官方仓库克隆 leptonica 并按照其文档说明完成安装流程。另外还需要考虑是否要支持额外的语言模型训练数据集,如中文简体(`chi_sim`)、繁体(`chi_tra`)等[^4]。 ### 使用 CMake 构建工程 启动命令提示符窗口(CMD),切换当前工作区为前面提到过的 `build` 路径,执行如下指令初始化 CMakeLists.txt 所描述的任务列表并将结果保存成 MSBuild 解析所需的 .sln 方案文件格式以便导入 VS IDE 进行进一步编辑操作[^3]: ```cmd cd /d D:\tesseract_build\build cmake ..\source -G "Visual Studio 16 2019" ``` 这里假设读者已经成功设置了上述提及的各项前提条件并且能够顺利连通互联网从而自动拉取缺失的部分库文件。 ### 导入解决方案到 Visual Studio 双击刚刚产生的 solution file (.sln), 即可在 Visual Studio 内加载整个工程项目。此时可以自由选择 Debug 或 Release 模式的任意一种作为默认配置选项来进行调试或发布用途下的编译动作。 ### 测试编译成果 当一切就绪之后,在命令行界面输入下面这段话验证新近制作出来的二进制能否正确解析图片中的文字信息: ```cmd cd /d D:\tesseract_build\build\bin\Release tesseract test_image.png output_text_file ``` 其中 `test_image.png` 是待处理图像的具体名称,而 `output_text_file` 则代表输出纯文本的结果存储地址前缀字符串形式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值