chineseocr_lite动态库开发:Windows下生成DLL文件教程

chineseocr_lite动态库开发:Windows下生成DLL文件教程

【免费下载链接】chineseocr_lite 超轻量级中文ocr,支持竖排文字识别, 支持ncnn、mnn、tnn推理 ( dbnet(1.8M) + crnn(2.5M) + anglenet(378KB)) 总模型仅4.7M 【免费下载链接】chineseocr_lite 项目地址: https://gitcode.com/gh_mirrors/ch/chineseocr_lite

在Windows环境下开发中文OCR应用时,动态链接库(DLL)是实现功能模块化的关键组件。本文将详细介绍如何使用chineseocr_lite项目生成可复用的DLL文件,帮助开发者快速集成超轻量级OCR能力到各类应用中。

环境准备与依赖配置

开发环境要求

  • 操作系统:Windows 10/11 x64
  • 编译工具:Visual Studio 2017或2019(需安装"使用C++的桌面开发"组件)
  • 构建工具:CMake 3.12及以上
  • JDK 8(可选,用于JNI开发)

第三方库准备

chineseocr_lite的DLL编译依赖以下库文件,需提前下载并配置:

  1. OpenCV静态库

    OcrLiteNcnn/opencv-static
    ├── OpenCVWrapperConfig.cmake
    └── windows-x64
    
  2. NCNN推理框架

    OcrLiteNcnn/ncnn-static
    ├── NcnnWrapperConfig.cmake
    └── windows-x64
    
  3. Vulkan SDK(可选)

    • 用于GPU加速,下载后默认安装即可
    • 安装完成后会自动配置环境变量

OCR识别效果示例

项目配置与解决方案生成

生成Visual Studio项目

  1. 进入NCNN项目目录:

    cd cpp_projects/OcrLiteNcnn
    
  2. 运行项目生成脚本:

    generate-vs-project.bat
    
  3. 根据提示依次选择:

    • 编译类型:1) Release
    • NCNN库选项:1) ncnn(CPU)
    • 输出类型:3) C动态库
    • VS版本:4) vs2019-x64

生成脚本会自动创建Visual Studio解决方案,位于build-win-vs2019-x64目录下。

关键编译参数说明

生成项目时通过CMake参数控制编译行为,主要参数包括:

参数名取值范围说明
OCR_OUTPUTBIN/JNI/CLIB输出类型,CLIB表示生成C动态库
OCR_VULKANCPU/GPU是否启用Vulkan GPU加速

这些参数在generate-vs-project.bat脚本中通过CMake命令传递:

cmake -G "Visual Studio 16 2019" -A "x64" -DOCR_OUTPUT=CLIB -DOCR_VULKAN=CPU ..

编译DLL文件

使用Visual Studio编译

  1. 打开生成的解决方案:

    build-win-vs2019-x64/OcrLiteNcnn.sln
    
  2. 在解决方案资源管理器中:

    • 设置"OcrLite"为启动项目
    • 配置类型选择"Release"
    • 平台选择"x64"
  3. 右键项目 -> "生成",编译输出如下文件:

命令行编译(可选)

使用VS的命令行工具编译:

# 打开VS命令提示符
cd build-win-vs2019-x64
msbuild OcrLiteNcnn.sln /t:OcrLite /p:Configuration=Release /p:Platform=x64

DLL文件结构与使用方法

动态库核心功能

生成的DLL包含完整的OCR识别流程,主要功能模块:

  1. 文本检测:基于DBNet算法,定位图像中的文本区域
  2. 角度分类:识别文本方向,支持0°/90°/180°/270°
  3. 文本识别:基于CRNN算法,将文本区域转换为字符串

核心类定义在OcrLite.h,主要接口包括:

// 初始化模型
bool initModels(const std::string& detPath, const std::string& clsPath, 
               const std::string& recPath, const std::string& keysPath);

// 执行OCR识别
OcrResult detect(const std::string& imgDir, const std::string& imgName, 
                int padding, int maxSideLen, float boxScoreThresh, 
                float boxThresh, float unClipRatio, bool doAngle, bool mostAngle);

JNI接口支持(可选)

项目同时提供JNI接口实现,位于OcrLiteJni.cpp,可用于Java调用:

// Java调用示例
OcrEngine engine = new OcrEngine();
engine.initModels(modelPath, "dbnet_op", "angle_op", "crnn_lite_op", "keys.txt");
OcrResult result = engine.detect(imagePath, 0, 1024, 0.6f, 0.3f, 1.5f, true, true);

部署与测试

运行时文件结构

部署时需确保以下文件位于同一目录:

├── OcrLiteNcnn.dll       # 主动态库
├── models/               # 模型文件目录
│   ├── dbnet_op.bin
│   ├── dbnet_op.param
│   ├── angle_op.bin
│   ├── angle_op.param
│   ├── crnn_lite_op.bin
│   ├── crnn_lite_op.param
│   └── keys.txt
├── opencv_worldxxx.dll   # OpenCV运行库
└── test_image.jpg        # 测试图片

测试DLL功能

项目提供测试脚本验证DLL功能:

cd cpp_projects/OcrLiteNcnn
run-test.sh

测试程序会加载指定图片进行OCR识别,输出结果文本和可视化图像:

车牌识别示例

常见问题解决

  1. 缺少VCRUNTIME140_1.dll

  2. 模型文件找不到

    • 确保模型路径正确,参数名与实际文件匹配
    • 检查模型文件是否完整(.bin和.param文件缺一不可)
  3. 中文乱码问题

    • Windows下确保使用GBK编码读取文本
    • 或修改代码使用UTF-8编码:OcrUtils.cpp中的字符串处理部分

总结

通过本文介绍的方法,开发者可以快速编译chineseocr_lite项目生成DLL文件,将轻量级OCR功能集成到Windows应用中。项目总模型仅4.7M,适合在资源受限环境中使用,支持身份证、车牌、IMEI等多种场景的文字识别。

完整项目代码和更多平台支持请参考:

【免费下载链接】chineseocr_lite 超轻量级中文ocr,支持竖排文字识别, 支持ncnn、mnn、tnn推理 ( dbnet(1.8M) + crnn(2.5M) + anglenet(378KB)) 总模型仅4.7M 【免费下载链接】chineseocr_lite 项目地址: https://gitcode.com/gh_mirrors/ch/chineseocr_lite

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值