浏览器控制台用Tesseract.js遇加载错误,能否编译为单块代码?
解决Tesseract.js控制台跨域加载Worker的问题
可以将Tesseract.js打包为单块代码,彻底规避外部资源引用,解决你遇到的跨域错误。具体方案如下:
1. 使用官方预构建单文件版本
Tesseract.js提供了预打包的单文件版本,整合了主库、Worker脚本和英文语言模型,无需加载任何外部资源。
控制台操作:
- 先执行以下代码引入单文件:
const script = document.createElement('script'); script.src = 'https://cdn.jsdelivr.net/npm/tesseract.js@5.0.5/dist/tesseract.umd.min.js'; document.body.appendChild(script);
- 脚本加载完成后,直接调用识别方法(无需创建Worker),以Canvas为例:
(async () => { // 替换为目标Canvas元素 const canvas = document.querySelector('canvas'); const result = await Tesseract.recognize( canvas, 'eng', { logger: m => console.log(m) } // 可选,打印识别进度 ); console.log(result.data.text); })();
2. 绕过CSP限制的方案
如果目标网站的内容安全策略(CSP)阻止引入外部脚本,可直接复制单文件版本的代码:
- 从Tesseract.js官方发布的5.0.5版本资源中提取单文件代码
- 将代码全部粘贴到控制台执行,再运行上述识别代码
问题根源
你之前的错误是因为createWorker会尝试加载外部Worker脚本,而非自有网站的控制台环境受跨域安全策略限制,无法加载该资源。单文件版本将Worker和语言模型内嵌到主脚本中,彻底避免了外部请求。
内容的提问来源于stack exchange,提问作者Steven Steggles
相关产品推荐
相关产品推荐

