ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

OpenCV text 模块 Windows 构建指南:用 git-bash 与 CMake 从源码编译 Tesseract 依赖链

OpenCV text 模块 Windows 构建指南:用 git-bash 与 CMake 从源码编译 Tesseract 依赖链 计算机视觉图像处理机器学习【免费下载链接】opencv_contrib项目地址https://gitcode.com/gh_mirrors/ope/opencv_contrib点击查看免费下载OpenCV 的text场景文本检测与识别模块将开源 OCR 引擎 Tesseract 作为其识别后端但 Tesseract 在 Windows 上并没有现成的源码级集成方案需要先手工编译 zlib、libpng、leptonica、Tesseract 这一整条依赖链再让 OpenCV 通过 CMake 找到它们。本篇指南以 install_tesseract.markdown 为骨架完整给出两个可直接运行的 git-bash 构建脚本逐行解析关键 CMake 参数并结合 opencv_contrib 仓库内text模块的源码ocr_tesseract.cpp、ocr.hpp说明安装结果如何真正接通 OpenCV 的 OCR 能力。读完本文你可以在 Windows 上完整跑通OpenCV opencv_contrib text Tesseract的构建链路并正确配置语言数据tessdata与运行时环境。一、为什么 text 模块依赖 Tesseracttext模块的目标是自然场景中的文字——路牌、门牌、包装上的短词短句而不是扫描文档 OCR。text 模块 README 明确说明识别部分使用开源的 Tesseract OCR如果系统上没有安装 Tesseract对应功能将不可用。这种依赖在源码层面体现为条件编译text_config.hpp.in 通过#cmakedefine HAVE_TESSERACT生成编译期宏ocr_tesseract.cpp 仅在HAVE_TESSERACT定义时#include tesseract/baseapi.h与tesseract/resultiterator.hOCRTesseractImpl内部才持有tesseract::TessBaseAPI实例未定义时所有run()分支只打印Tesseract not found.并清空输出text 模块 CMakeLists.txt 检测到ocv.3rdparty.tesseract目标后将其以LINK_PRIVATE方式链接进模块。因此要让cv::text::OCRTesseract真正工作必须在构建 OpenCV 之前先在本机完成 Tesseract及其依赖 leptonicaleptonica 又依赖 zlib/libpng的安装并在配置 OpenCV 时把库位置显式传给 CMake。本教程对应的 OpenCV 版本兼容性要求为 OpenCV 3.4见 table_of_content_text.markdown。二、准备工作与目录布局按教程假设你的环境需要满足git-bash版本不低于 2.14.1用于执行构建脚本CMake版本不低于 3.9.1Visual Studio 2015 64 位生成器名为Visual Studio 14 2015 Win64教程全程以此为例使用其他 VS 版本时只需替换脚本中的生成器字符串已经按官方 Windows 安装教程通过 git-bash 方式把opencv 与 opencv_contrib 源码放在c:/lib目录下。随后下载两个辅助库源码包libpng1.6.32 版与zlib1.2.11 版。解压后分别命名为lpng与zlib这两个文件夹必须与opencv、opencv_contrib位于同一级目录即都在c:/lib下。依赖关系链如下zlib ──► libpng ──► leptonica ──► tesseract ──► OpenCV text 模块 (OCRTesseract)leptonica是 Tesseract 的图像处理基础库文档 README 也建议 Linux/Mac 用户安装 leptonica-1.70 或更新版本而在 Windows 上缺少系统级 libpng/zlib因此必须先手工编译这一底层部分。三、第 1 步编译 zlib 与 libpnginstallpngzlib.sh把以下内容保存为c:/lib/installpngzlib.sh#!/bin/bash myRepo$(pwd) CMAKE_CONFIG_GENERATORVisual Studio 14 2015 Win64 RepoSourcezlib mkdir Build/$RepoSource pushd Build/$RepoSource cmake . -GVisual Studio 14 2015 Win64 \ -DCMAKE_INSTALL_PREFIX:PATH$myRepo/install/zlib -DINSTALL_BIN_DIR:PATH$myRepo/install/zlib/bin \ -DINSTALL_INC_DIR:PATH$myRepo/install/zlib/include -DINSTALL_LIB_DIR:PATH$myRepo/install/zlib/lib $myRepo/$RepoSource cmake --build . --config release cmake --build . --target install --config release cmake --build . --config debug cmake --build . --target install --config debug popd RepoSourcelpng mkdir Build/$RepoSource pushd Build/$RepoSource cp $myRepo/$RepoSource/scripts/pnglibconf.h.prebuilt $myRepo/$RepoSource/pnglibconf.h cmake . -GVisual Studio 14 2015 Win64 \ -DZLIB_INCLUDE_DIR:PATH$myRepo/install/zlib/include -DZLIB_LIBRARY_DEBUG:FILE$myRepo/install/zlib/lib/zlibstaticd.lib \ -Dld-version-script:BOOLOFF -DPNG_TESTS:BOOLOFF -DAWK:STRING \ -DZLIB_LIBRARY_RELEASE:FILE$myRepo/install/zlib/lib/zlibstatic.lib -DCMAKE_INSTALL_PREFIX$myRepo/Install/$RepoSource \ $myRepo/$RepoSource cmake --build . --config release cmake --build . --target install --config release cmake --build . --config debug cmake --build . --target install --config debug popd在 git 命令行中执行./installpngzlib.sh脚本要点解析zlib 段CMAKE_INSTALL_PREFIX指向install/zlibINSTALL_BIN_DIR、INSTALL_INC_DIR、INSTALL_LIB_DIR分别把可执行文件、头文件与库文件装到bin、include、lib三个子目录这是为了让后续 libpng 能按固定路径找到 zlib 头文件与静态库。release / debug 双配置对每个库都先--config release后--config debug各自--target install。这样 debug 版 OpenCV 才能链接到 debug 版 tesseract/leptonica 链避免混用 CRT 引起链接错误。libpng 段先执行cp .../scripts/pnglibconf.h.prebuilt .../pnglibconf.h生成 Windows 下无 awk 环境时所需的预构建配置文件-Dld-version-script:BOOLOFF关闭 GNU ld 版本脚本Windows/MSVC 不需要-DPNG_TESTS:BOOLOFF跳过测试-DAWK:STRING显式置空 awk 路径。ZLIB_INCLUDE_DIR、ZLIB_LIBRARY_DEBUGzlibstaticd.lib、ZLIB_LIBRARY_RELEASEzlibstatic.lib把刚编译出的 zlib 静态库喂给 libpng 的 CMake 查找逻辑。四、第 2 步编译 leptonica 与 tesseract并配置 OpenCVinstallTesseract.sh把以下内容保存为c:/lib/installTesseract.sh#!/bin/bash function MAJGitRepo { if [ ! -d $myRepo/$1 ]; then echo clonning ${1} git clone $2 mkdir Build/$1 else echo update $1 cd $1 git pull --rebase cd .. fi } echo Installing leptonica and tesseract myRepo$(pwd) CMAKE_CONFIG_GENERATORVisual Studio 14 2015 Win64 MAJGitRepo leptonica https://github.com/DanBloomberg/leptonica.git RepoSourceleptonica pushd Build/$RepoSource cmake -G$CMAKE_CONFIG_GENERATOR -DCMAKE_INSTALL_PREFIX$myRepo/Install/leptonica $myRepo/$RepoSource echo ************************* $Source_DIR --debug cmake --build . --config release cmake --build $RepoSource --target install --config release popd RepoSourcetesseract MAJGitRepo $RepoSource https://github.com/tesseract-ocr/tesseract.git pushd Build/$RepoSource cmake -G$CMAKE_CONFIG_GENERATOR -DBUILD_TRAINING_TOOLS:BOOLOFF -DCMAKE_INSTALL_PREFIX$myRepo/Install/tesseract -DLeptonica_DIR:PATH$myRepo/Install/leptonica/cmake -DPKG_CONFIG_EXECUTABLE:BOOLOFF $myRepo/$RepoSource echo ************************* $Source_DIR --release cmake --build . --config release cmake --build . --target install --config release popd RepoSourceopencv pushd Build/$RepoSource CMAKE_OPTIONS-DBUILD_PERF_TESTS:BOOLOFF -DBUILD_TESTS:BOOLOFF -DBUILD_DOCS:BOOLOFF -DWITH_CUDA:BOOLOFF cmake -G$CMAKE_CONFIG_GENERATOR \ -DTesseract_INCLUDE_DIR:PATH${myRepo}/Install/tesseract/include -DTesseract_LIBRARY${myRepo}/Install/tesseract/lib/tesseract400.lib -DLept_LIBRARY${myRepo}/Install/leptonica/lib/leptonica-1.74.4.lib \ $CMAKE_OPTIONS -DOPENCV_EXTRA_MODULES_PATH../../opencv_contrib/modules \ -DINSTALL_CREATE_DISTRIBON -DCMAKE_INSTALL_PREFIX$myRepo/install/$RepoSource $myRepo/$RepoSource echo ************************* $Source_DIR --devenv debug cmake --build . --config debug echo ************************* $Source_DIR --devenv release cmake --build . --config release cmake --build . --target install --config release cmake --build . --target install --config debug popd在 git 命令行中执行./installTesseract.sh脚本要点解析MAJGitRepo 函数若仓库尚未克隆则git clone并创建Build/name目录已存在则git pull --rebase增量更新。三个仓库leptonica、tesseract、opencv都复用该函数保证脚本可重复执行。leptonica 段仅指定CMAKE_INSTALL_PREFIX$myRepo/Install/leptonica安装后其 CMake 配置文件会落在Install/leptonica/cmake。tesseract 段-DBUILD_TRAINING_TOOLS:BOOLOFF跳过训练工具如 tesstrain 相关组件以缩短构建-DLeptonica_DIR:PATH.../Install/leptonica/cmake显式指向 leptonica 的 CMake 包目录让 tesseract 的find_package(Leptonica)直接命中-DPKG_CONFIG_EXECUTABLE:BOOLOFFWindows 下通常没有可用的 pkg-config显式关闭其探测。opencv 段CMAKE_OPTIONS关闭性能测试、单元测试、文档、CUDA如需示例还可追加-DBUILD_EXAMPLES:BOOLOFF-DTesseract_INCLUDE_DIR:PATH${myRepo}/Install/tesseract/include指向 tesseract 头文件目录OpenCV 侧 find 逻辑据此找到tesseract/baseapi.h-DTesseract_LIBRARY.../tesseract400.lib与-DLept_LIBRARY.../leptonica-1.74.4.lib直接指定两个库文件文件名中的400、1.74.4是当时源码版本的产物换成更新版本时库名会相应变化-DOPENCV_EXTRA_MODULES_PATH../../opencv_contrib/modules把 opencv_contrib 各模块含 text并入本次构建-DINSTALL_CREATE_DISTRIBON生成便于分发的安装树。两个库都安装到c:/lib/install$myRepo即c:/lib这与第 1 步 zlib 的安装前缀保持一致便于统一配置运行时路径。五、第 3 步OpenCV 侧的集成点——宏与链接构建成功后OpenCV 的text模块如何确认我找到了 Tesseract关键在三条源码/配置证据链CMake 变量传递上面传给 opencv 配置的Tesseract_INCLUDE_DIR、Tesseract_LIBRARY、Lept_LIBRARY会被 OpenCV 的第三方检测逻辑收集进而生成ocv.3rdparty.tesseract目标宏生成HAVE_TESSERACT由 text_config.hpp.in 在配置阶段写入text_config.hpp条件编译与链接ocr_tesseract.cpp 依据HAVE_TESSERACT引入TessBaseAPI相关头文件而 CMakeLists.txt 将ocv.3rdparty.tesseract以LINK_PRIVATE链接进模块。因此第 4 步脚本中 opnecv 的cmake --build是否成功、最终ocv.3rdparty.tesseract是否出现在构建日志里是验证集成是否生效的最直接信号。安装后你可以在 OpenCV 头文件中找到opencv2/text.hpp其text_recognize分组即对应 Tesseract 接口text.hpp。六、第 4 步语言数据tessdata与运行时环境编译完成只是第一步Tesseract 还需要语言模型数据才能识别文字方式一克隆tesseract-ocr/tessdata仓库方式二只复制你需要的语言文件如eng.traineddata到一个目录例如c:\lib\install\tesseract\tessdata方式三不建新目录直接把语言文件放在与你的可执行文件exe相同的文件夹里。若采用了独立目录还必须把系统环境变量TESSDATA_PREFIX设为c:\lib\install\tessdata。这一变量的作用与 OpenCV 侧OCRTesseract::create()的datapath参数对应在 ocr_tesseract.cpp 中tess.Init(datapath, lang, (tesseract::OcrEngineMode)oemode)的datapath即指向tessdata 的父目录传NULL时则回退到系统默认目录即由TESSDATA_PREFIX决定的位置。DLL 运行环境二选一把c:\Lib\install\leptonica\bin与c:\Lib\install\tesseract\bin加入系统PATH或不修改 PATH直接把tesseract400.dll与leptonica-1.74.4.dll复制到你的 exe 所在目录。七、源码级验证安装成功后如何调用 OCR安装链路打通后text模块的 OCR 能力通过cv::text::OCRTesseract暴露。典型用法见示例 end_to_end_recognition.cppPtrOCRTesseract ocr OCRTesseract::create(); string output; ocr-run(image, output);OCRTesseract::create()的完整签名见 ocr.hpp为static PtrOCRTesseract create(const char* datapath NULL, const char* language NULL, const char* char_whitelist NULL, int oem OEM_DEFAULT, int psmode PSM_AUTO);参数含义与 Tesseract 底层 API 一一对应参数默认值说明datapathNULLtessdata 父目录以/结尾NULL使用系统默认目录TESSDATA_PREFIXlanguageengISO 639-3 语言码NULL时默认engchar_whitelist识别字符白名单OpenCV 4.7.0 / 3.19.0 之前默认为0-9a-zA-Z之后改为空串全部字符可用见 ocr.hpp 与 ocr_tesseract.cpp 的实现oemOEM_DEFAULTOCR 引擎模式对应 ocr.hpp 的ocr_engine_modeOEM_TESSERACT_ONLY、OEM_CUBE_ONLY、OEM_TESSERACT_CUBE_COMBINED、OEM_DEFAULTpsmodePSM_AUTO页面分割模式对应 ocr.hpp 的page_seg_modePSM_OSD_ONLY、PSM_AUTO_OSD、PSM_AUTO、PSM_SINGLE_LINE、PSM_SINGLE_WORD等 11 个取值在底层实现中ocr_tesseract.cpprun()依次执行tess.SetImage()传入CV_8UC1/CV_8UC3图像 →tess.Recognize(0)→tess.GetUTF8Text()取整页文本 → 用tesseract::ResultIterator按OCR_LEVEL_WORD默认或OCR_LEVEL_TEXTLINE逐词/逐行输出component_texts、component_rectsBoundingBox与component_confidencesConfidence。component_level仅接受这两个枚举值ocr.hpp。需要特别说明的是模块定位text面向野外的文字路牌、短句、单词不是扫描文档的通用 OCR 工具不要把它当成整页文档识别方案见 README。八、常见问题与注意事项生成器与 VS 版本全文假设 VS 2015 64 位Visual Studio 14 2015 Win64。使用更新版本时需同步替换所有-G...与CMAKE_CONFIG_GENERATOR并确保 zlib → libpng → leptonica → tesseract → OpenCV 全程使用同一套生成器与架构32/64 位一致。库文件名随版本变化tesseract400.lib、leptonica-1.74.4.lib中的版本号来自克隆时的源码版本更新版本需在 OpenCV 配置步骤中改用实际生成的文件名。release/debug 匹配脚本对 zlib/libpng 做了双配置安装OpenCV 也分别以--config release与--config debug构建并 install目的是让 debug 链完整可用。若只关注 release可裁剪对应段落但混用不同 CRT 的 debug/release 库会导致链接期或运行期错误。tessdata 缺失即使编译、链接全部成功没有语言文件或TESSDATA_PREFIX指向错误时tess.Init会失败OCRTesseract构造时抛出异常ocr_tesseract.cpp。排查时优先确认语言文件目录与TESSDATA_PREFIX。DLL 找不到运行示例程序报找不到 tesseract400.dll时按第 6 节二选一方案补齐运行库路径即可。文本模块被裁剪配置 OpenCV 时若text模块未出现在构建列表检查OPENCV_EXTRA_MODULES_PATH../../opencv_contrib/modules是否指向正确相对路径基于c:/lib/Build/opencv计算即上溯两级到c:/lib。按上述步骤完成 zlib、libpng、leptonica、tesseract 的编译与 OpenCV 的重新配置后cv::text::OCRTesseract即可在 Windows 上正常工作配合ERFilter场景文本检测参考 end_to_end_recognition.cpp、textdetection.cpp 与 webcam_demo.cpp即可搭建完整的端到端场景文字识别应用。赞分享计算机视觉图像处理机器学习【免费下载链接】opencv_contrib项目地址https://gitcode.com/gh_mirrors/ope/opencv_contrib点击查看免费下载相关推荐OpenCV text 模块 Windows 下 Tesseract OCR 依赖安装实战指南OpenCV text 模块 Windows 下 Tesseract OCR 依赖安装实战指南 本指南完整讲解如何基于 opencv_contrib 仓库的 t计算机视觉图像处理深度学习机器学习OpenCV 在 Windows 平台的安装与构建指南预编译包、git-bash 脚本与源码编译实战OpenCV 在 Windows 平台的安装与构建指南预编译包、git bash 脚本与源码编译实战 本文围绕 OpenCV 官方入门教程 doc/tutor计算机视觉图像处理深度学习机器学习LuantiMinetest在 GNU/Linux 下从源码编译完整指南依赖、CMake 配置与构建运行LuantiMinetest在 GNU/Linux 下从源码编译完整指南依赖、CMake 配置与构建运行 本指南基于仓库 doc/compiling/li游戏开发图形学上一篇5分钟玩转Sketch Measure设计师的规范神器下一篇Cursor VIP共享方案解锁AI编程助手的免费体验之路创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表