在WASM项目中安装Leptess时tesseract-sys v0.5.7构建报错如何解决
问题根因
你遇到的如下报错:
failed to run custom build command for
tesseract-sys v0.5.7
来源于两个核心限制:
- tesseract-sys v0.5.7默认依赖本地原生的Tesseract、Leptonica C库,构建时会调用
pkg-config查找依赖路径,找不到对应库就会触发构建失败 - 官方发布的tesseract-sys v0.5.7未适配
wasm32-unknown-unknown目标平台,原生C代码无法直接编译为WebAssembly字节码
解决步骤
1. 配置MacOS本地原生依赖(仅用于非wasm目标编译)
如果需要在本地运行非wasm版本的程序,先安装系统依赖:
- 执行命令安装依赖包:
brew install tesseract leptonica pkg-config - 安装完成后执行
pkg-config --libs tesseract leptonica,无报错则原生依赖配置完成
2. 适配wasm32-unknown-unknown目标平台
官方版本的tesseract-sys不支持wasm编译,需要替换为适配版本,调整Cargo.toml配置即可:
- 在Cargo.toml中添加
[patch.crates-io]配置段,使用社区已适配wasm的tesseract-sys版本覆盖官方依赖 - 修改leptess依赖配置,关闭默认特性,启用wasm支持:
leptess = { version = "0.14.0", default-features = false, features = ["wasm"] }
- 执行编译命令:
cargo build --target wasm32-unknown-unknown
注意事项
- 编译wasm版本时无需提前安装本地tesseract、leptonica依赖,适配后的tesseract-sys会自动将C库代码编译为wasm字节码
- 若编译时出现内存溢出报错,可在编译命令前添加环境变量调整wasm最大内存限制:
RUSTFLAGS="-C link-arg=--max-memory=67108864" cargo build --target wasm32-unknown-unknown
内容的提问来源于stack exchange,提问作者Bart Krakowski
相关产品推荐
相关产品推荐

