AWS SageMaker编译Tesseract OCR遇GCC版本与文件系统错误
问题根源
这是GCC版本兼容性问题:GCC 7.3.1仅对C++17的<filesystem>提供实验性支持,并未将其纳入标准库默认链接,而最新版Tesseract OCR依赖标准的std::filesystem特性,因此编译时出现头文件找不到的错误。
解决方案
以下是三种可行的解决路径,按优先级推荐:
方案1:升级GCC到8及以上版本(推荐)
Amazon Linux 2官方源提供了devtoolset工具集,可以快速升级GCC版本:
- 安装devtoolset-8:
sudo yum install -y devtoolset-8-gcc devtoolset-8-gcc-c++ - 临时激活GCC 8环境(当前终端生效):
若要永久生效,可将上述命令添加到scl enable devtoolset-8 bash~/.bashrc文件末尾 - 重新配置并编译Tesseract:
./configure --with-leptonica=/usr/local make sudo make install
方案2:修改编译选项适配GCC 7
如果不想升级编译器,可强制使用实验性文件系统库:
- 配置环境变量,指定C++17标准并链接实验性文件系统库:
export CXXFLAGS="-std=c++17 -lstdc++fs" - 重新配置编译Tesseract:
./configure --with-leptonica=/usr/local make sudo make install
方案3:安装兼容GCC 7的Tesseract版本
最新版Tesseract依赖C++17特性,可选择安装3.05.x或更早的稳定版本,这些版本不依赖<filesystem>:
- 下载3.05.02版本源码:
wget https://github.com/tesseract-ocr/tesseract/archive/refs/tags/3.05.02.tar.gz - 解压后按常规流程编译安装:
tar xzf 3.05.02.tar.gz cd tesseract-3.05.02 ./configure --with-leptonica=/usr/local make sudo make install
验证步骤
- 编译完成后,执行以下命令确认Tesseract安装成功:
tesseract --version - 测试PyMupdf的OCR功能,确保能正常调用新安装的Tesseract
内容的提问来源于stack exchange,提问作者Al Brown
相关产品推荐
相关产品推荐

