一个网页工具,把已经烧进画面里的文字去掉——字幕、水印、日期、角标这类。上传视频,框一下文字区域,它把文字后面的画面重新生成出来,不模糊、也不裁切。
和常见做法的区别:blur 是把字盖住,crop 是把字切掉,这两个都会毁掉画面。我试的方向是让模型把被文字挡住的像素补回来。
为什么做
自己剪片子的时候被这个卡过。找了一圈,市面上的工具要么只能打码,要么要装客户端,要么就是把画面放大、裁掉一条边——竖屏视频一裁就废了。
技术栈
Next.js 15 App Router ,部署在 Cloudflare Workers 上(走 OpenNext ) MySQL 走 Hyperdrive ,视频文件放 R2 去文字本身不是我自研的模型,调的是第三方视频擦除接口。我做的是产品化那部分:框选、计费、任务队列、失败退款 成本上,Cloudflare 免费额度目前够跑( 10 万请求/天、Hyperdrive 10 万查询/天),还没花钱。真正烧钱的是擦除接口,按分钟计费。
踩过的坑
Next.js 的 redirects() 里写 permanent: true ,返回的是 308 不是 301 。要真 301 得显式写 statusCode: 301 ,翻源码才确认。
sitemap 的 lastmod 我一开始用 new Date(),动态路由下每次请求都变,等于告诉 Google 全站每秒都在改。Google 一旦判定这字段不可信,会整个忽略它——以后真更新了也通知不到。
上线第三天看 Cloudflare 日志,发现“访客”全是爬虫:一个 TLM-Audit-Scanner 扫了 2600 多次,HeadlessChrome 1900 多次,Googlebot 只抓了首页和 robots.txt ,20 个内页一个没抓。新域名没外链,就是这样。
实测数据,包括不好看的
我不太想只放成功案例,三条测试素材的结果都贴出来,PSNR 对比原片:
相机移动 + 树叶背景:28.3 dB 行人穿过字幕带:19.8 dB 竖屏 + 规律纹理:20.5 dB 未处理区域的参考上限:37.4 dB 行人穿过那条基本算失败:字没了,但从字幕带上走过去的人会留下淡淡的竖条残影。竖屏那条背景被抹平,比直接打码只好一点点。
这两组对比图和 100% 放大的截图都在站上的案例页,没修图。
Remove Text From Video Online — AI Video Text Remover https://videotextremove.com