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

如何在Chrome扩展MV3中使用Ocrad.js?解决unsafe-eval报错

解决MV3环境下ocrad.js因eval()触发的CSP报错问题

方案1:替换为兼容MV3的OCR库

直接换掉ocrad.js,改用Tesseract.js的纯WASM版本——它完全基于WebAssembly实现,不依赖eval()或动态代码执行,天生符合MV3的安全限制。引入后直接调用其OCR接口即可,不需要额外处理CSP问题。

方案2:手动改造ocrad.js源码移除eval()

如果必须保留ocrad.js,找到源码中所有使用eval()或new Function()的地方,把动态执行的代码改成静态定义:

  • 搜索源码里的eval(或new Function(关键词,定位到动态执行的代码段
  • 把字符串里的函数逻辑直接提取出来,写成普通的JS函数定义
  • 替换掉原来的eval调用,直接调用新定义的静态函数

比如原代码如果是:

const myFunc = eval("function processData(data) { return data.split(''); }");

改成:

function processData(data) { return data.split(''); }
const myFunc = processData;

方案3:临时调整CSP策略(不推荐)

如果只是临时测试,可以在扩展的manifest.json中修改CSP规则,给script-src添加'unsafe-eval':

{
  "content_security_policy": {
    "extension_pages": "script-src 'self' 'wasm-unsafe-eval' 'inline-speculation-rules' 'unsafe-eval' http://localhost:* http://127.0.0.1:*;"
  }
}

注意:MV3对扩展的CSP有严格的安全要求,添加'unsafe-eval'会降低扩展的安全性,且可能导致Chrome Web Store审核不通过,仅作为临时应急方案使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 21:28:15