unredacter是一个实验性的还原图片中打马赛克的文字的小工具。具体介绍请见github(https://github.com/BishopFox/unredacter)。 README中使用说明部分描述的使用步骤很简单,但是如果你照着尝试,会发现程序跑不起来,各种报错(node的三方库版本依赖的天坑😭),我就将我淌坑的经历记录下来吧。
工作环境:windows 11(因为windows 11才支持wslg),启用wsl2,使用Ubuntu 22.04镜像
步骤:
1. (wsl2的Ubuntu里)安装node v12版本。(直接去官网下载v12版本的二进制文件 https://nodejs.org/download/release/v12.22.12 ,将bin目录加到path路径即可) 2. (wsl2的Ubuntu里)下载源码到本地https://github.com/BishopFox/unredacter 3. (wsl2的Ubuntu里)进入项目根目录,执行 npm --registry https://registry.npmmirror.com install (注意:不要再使用https://registry.npm.taobao.org这个镜像地址了,该地址已经停用了) 4. (wsl2的Ubuntu里)进入项目根目录执行npm --registry https://registry.npmmirror.com install electron@10 (注意一定要安装electron v10版本, v11版本就不行) 5. (wsl2的Ubuntu里)进入项目根目录执行npm start
最终效果图:
问题1: 如果在执行 npm start时遇到如下错误:[5095:0621/232535.423408:FATAL:gpu_data_manager_impl_private.cc(442)] GPU process isn’t usable. Goodbye.
/home/{username}/unredacter /node_modules/electron/dist/electron exited with signal SIGTRAP
解决办法:在windows 11下需要按照官方说明安装对应显卡厂商的显卡驱动(https://github.com/microsoft/wslg ),这样wsl2就支持使用GPU了。
问题2: unredacter已经能正常工作了,但是隔了几天突然又不能工作了,有如下报错:
../../third_party/tcmalloc/chromium/src/tcmalloc.cc:337] Attempt to free invalid pointer 0x55dd1f867dc0
/home/{username}/unredacter-main/node_modules/electron/dist/electron exited with signal SIGSEGV
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! unredacter@1.0.0 start: `npm run build && electron ./dist/main.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the unredacter@1.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
解决办法:检查你的显卡驱动是不是被操作系统升级,导致和wslg不兼容了。对于AMD:
References:
https://mp.weixin.qq.com/s/W20dZpX6nJrNFMrXB4P4Mg
您好,零基础,需要用UNREDACTOR解个码,能帮忙吗?
跟着学到这里了,报错,还是运行不了,找不到如何解决
GET file:///C:/Users/linas/OneDrive/Desktop/unredacter-main/undefined net::ERR_FILE_NOT_FOUND
Image (async)
(anonymous) @ renderer.js:85
step @ renderer.js:38
(anonymous) @ renderer.js:19
(anonymous) @ renderer.js:13
__awaiter @ renderer.js:9
gatherResults @ renderer.js:67
(anonymous) @ renderer.js:57
postMessage (async)
(anonymous) @ renderer.js:93
VM58 renderer_init.js:71 Uncaught (in promise) Error: Error invoking remote method ‘redact’: RangeError [ERR_OUT_OF_RANGE]: The value of “offset” is out of range. It must be >= 0 and <= 58236. Received -33920
at EventEmitter.i.send.i.invoke (VM58 renderer_init.js:71)
请检查下node版本、npm install是否正确被执行。
npm WARN unredacter@1.0.0 license should be a valid SPDX license expression
还是不行,折腾了这么长时间,各种各样乱七八糟的代码,就是没搞定……
从你的日志信息看,你是用的Onedrive同步的代码,可能需要确认你下载的unredacter源码是否完整,node版本是不是v12。
大哥确认是按照你上面交待的步骤一步一步执行的,确实是不行。应该还是卡到NPM START这里,启动是可以但是程序跑不起来,GET file:///C:/Users/linas/OneDrive/Desktop/unredacter-main/undefined net::ERR_FILE_NOT_FOUND
这个报错怎么都搞不懂。
我只有一个图要解密一下,大哥帮我整一下好不,高抬贵手呢
你是在windows里执行的吗?我的示例都是在wsl里面执行脚本的(不会存在C:/Users/…这样的路径)!
是wsl里面,linas@Terry-PC:/mnt/c/unredacter-main$ npm –registry https://registry.npmmirror.com install
Unknown command: “–registry”
正确的命令是npm –registry(两个-),是因为wordpress样式的问题展示的是单个-。
应该不是这个问题,\npm start是可以跑出来的,但是点击start的时候跑不起来,程序运行不了
累计花了100多个小时,程序是跑起来了,但是解码不了,跑不出来什么结果,没啥卵用
点个赞,技术在于折腾。