Node.js环境下Tesseract.js无法加载语言包,OCR识别失败求助
解决tesseract.js语言包加载失败的问题
我之前也碰到过一模一样的问题!这通常是因为tesseract.js默认尝试从远程下载语言包,但网络或者路径配置问题导致加载失败。结合你已经通过Homebrew安装了正常工作的Tesseract,试试下面这些方案:
方案1:直接使用本地已有的语言包
既然你的系统里已经有Homebrew安装的Tesseract,它的语言包默认放在/usr/local/share/tessdata/(macOS环境)。你只需要在代码里指定这个路径,让tesseract.js直接调用本地的语言包:
const Tesseract = require('tesseract.js'); const filename = 'Screen Shot 2018-01-13 at 16.51.06.png'; Tesseract.recognize( filename, 'eng', { langPath: '/usr/local/share/tessdata/', // 指向Homebrew安装的tessdata目录 logger: m => console.log(m) // 可选,输出更详细的日志信息 } ) .progress(p => { console.log('progress', p) }) .catch(err => console.error(err) ) .then(result => { console.log(result.text); process.exit(0); });
这个思路能跳过远程下载步骤,直接复用你已经验证可用的语言包,大概率能解决“Failed loading language 'eng'”的报错。
方案2:手动下载语言包到项目目录
如果你不想依赖系统级的Tesseract,可以手动下载英文语言包,放到项目的专属目录中:
- 创建一个
./tessdata/文件夹在你的项目根目录 - 下载英文训练数据文件(
eng.traineddata),放到这个文件夹里 - 修改代码中的
langPath为./tessdata/
方案3:更新tesseract.js到最新版本
部分旧版本的tesseract.js存在语言包加载的兼容性问题,尝试更新到最新版本:
npm uninstall tesseract.js npm install tesseract.js@latest
我当时用方案1就顺利解决了问题,你可以优先试试这个!
内容的提问来源于stack exchange,提问作者user3310334




