You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React浏览器环境使用tesseract.js报错init is not a function如何解决?

问题根因
  • 你调用的Tesseract.init()、Tesseract.setImage()是tesseract.js v2及更早版本的旧API,当前npm默认安装的v4/v5版本已完全重构API,全局导入的Tesseract对象不存在上述方法,是触发报错的直接原因。
  • 额外逻辑问题:浏览器环境不存在Node.js的BufferAPI,你尝试用new Buffer()转码的操作在浏览器端也会触发报错,且你在调用异步识别逻辑后直接同步修改progress为scanned,会导致状态和实际识别进度不匹配。
修复方案

方案1:适配新版tesseract.js API(推荐)

直接用新版提供的静态识别方法,不需要手动初始化、设置图片,代码改动最小:
把onImage函数的代码替换为以下内容:

const onImage = async (failedImages, successImages) => {
  setProgress('scanning')
  try {
    if (successImages.length === 0) return
    // tesseract.js 直接支持传入base64格式图片,无需转Buffer
    const imageBase64 = successImages[0]
    // 直接调用静态recognize方法,参数分别为 图片资源、语言、配置项
    const result = await Tesseract.recognize(
      imageBase64,
      'eng',
      { logger: m => console.log(m) }
    )
    // 识别到的文本内容在result.data.text中
    console.log('识别结果:', result.data.text)
    setProgress('scanned')
  } catch (error) {
    console.log("error in scan: " + error.message)
    setErrorMessage(error.message)
    setProgress('uploadError')
  }
}

方案2:降级适配旧版API

如果你需要和参考教程的用法保持一致,可以直接安装旧版本的tesseract.js:
执行安装命令:
npm install tesseract.js@2
安装完成后重启项目即可,不需要修改现有代码逻辑。

内容的提问来源于stack exchange,提问作者Paul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 22:15:04