它做什么
把一台手机摄像头,变成一台文档扫描仪。
下面这一切都在这个标签页里、在这台设备上运行。页面加载完之后,这里没有任何东西需要账号、订阅或网络连接。
找到纸张
你移动摄像头时,纸张的轮廓会实时画出来;如果轮廓找错了边,四个角都可以拖。
把透视摆正
斜着拍下来的一页纸会变回方正的矩形,就像它是平放在平板扫描仪上、而不是单手举着拍的。
整理光线
阴影、偏黄的台灯光、手机照片特有的灰蒙蒙,都会被抹平,于是纸是白的,字是黑的。
读出文字
OCR 会跑过每一页,所以你拿到的 PDF 是可以在里面搜索、可以选中文字的,而不是一张文档的照片。
拼成多页 PDF
继续拍就是了;页面会收进一个暂存区,写出文档之前你可以在那里重新排序、旋转或删掉某一页。
留在设备上
做好的扫描件存在这个浏览器自己的存储里。你想怎么导出都行,没有哪台服务器上留着一份。
工作原理
每一步都发生在你自己的机器上。
扫描核心用 Rust 写成,编译为 WebAssembly —— 经 gzip 压缩后传输 139 KB。它跑在标签页内的后台 worker 里,所以在一张 1200 万像素的照片上拖亮度滑块也不会卡。
找到纸张
你移动时,取景框里会实时描出纸张的轮廓。轮廓不对的话,把四个角中的任意一个拖到正确的位置上。
把它摆正
你拍下的那个四边形会被映射回矩形,尺寸按纸张离镜头最近的那条边来定,这样清晰的细节一点都不会被丢掉。
整理干净
照片、增强或黑白三种模式,另有亮度和旋转。增强会把纸拉回白、把字拉回黑,同时不把两头压死。
读出它
设备本地的文字识别会在页面图像后面放一层隐形文字,于是 PDF 既可搜索、可选中,看上去又还是那张扫描件。
生成 PDF
增加、重排、删除页面,都不限数量。纸张可选 A4、Letter、Legal 或扫描件本身的形状,压缩力度也可以自己定。
留着,或者不留
做好的文档留在这个浏览器里,可以跨你做过的每一份扫描件搜索 —— 搜的就是识别在里面读出的那些词。
免费,而且开源 —— 全部功能,不用注册,没有水印,不限页数。
它还在哪里跑
iPhone、iPad 和 Android 版本也在做。
上面那台扫描仪能在任何现代浏览器里跑,包括你手机上的那个。今天的产品就是它的全部。同一套 Rust 核心也在被装进原生应用,这样相机、文件选择器和离线存储就来自系统而不是浏览器标签页 —— 扫描代码一模一样,只是为手机编译了一遍。
- 可用 在你的浏览器里 全部功能,任何设备。把它加到主屏幕,它就像一个应用一样打开,也能离线用。
- 候选发布版 Android 一个今天就能侧载的原生版本。还很早期 —— 它只把照片送到扫描引擎为止,再往后就没有了。
- 进行中 iPhone 与 iPad 同一个引擎,两台上都能跑,并且为 iPad 做了排版。还没有签名分发,所以现在没有东西可下载。
隐私
唯一一台你能自己核实隐私说法的扫描仪。
每一款扫描应用都说你的文档是私密的。在原生应用里,那是一句你无从核查的承诺。在这里,它是你可以亲眼看着发生的事:打开开发者工具,切到网络面板,扫描一页。应用加载完之后,不再有任何请求。
- 核心够不到网络 负责扫描的那个 Rust 模块里没有编进任何 HTTP 客户端,也没有任何网络依赖。根本不存在一条通往服务器的代码路径。
- 文字识别是从这里发出去的 识别引擎通常会从公共 CDN 取模型,那等于你每扫描一次就告诉第三方一次。这里的每一个字节都改由本站提供。
- 跨源请求是被拒绝,而不只是被避开 一个 service worker 挡在页面发出的每一个请求前面,凡是去往其他源的,一律以 403 回绝 —— 所有方法都一样,不只是读取。
- 扫描不需要账号 这里没有什么要注册,也没有哪个功能藏在登录之后。确实有一个可选账号 —— 它负责把积分带到我们其他应用里 —— 但你的文档由你的浏览器存在你的设备上,从不进入它。
- 没有广告,没有追踪器,没有第三方统计 本页不加载任何第三方脚本,也不设置 cookie;只要有一个请求离开本源,它的测试套件就会失败。
价格
免费。全部。
这个页面上的每一项功能都是免费的:不限页数、没有水印、没有试用期、不用账号。这里没有一个付费档位在等着把你推过去,因为一切都跑在你自己的设备上,对我们来说不花一分钱。
它取代的那些扫描应用,要收订阅费才去掉水印、给一份文档的页数设上限,或者把你的扫描件存在他们的服务器上。这一个一样都不做,而且源代码是公开的,你可以自己查。
疑问
在你扫描任何东西之前。
- 离线能用吗?
- 可以。页面加载完之后,没有网络它也照常工作,文字识别也一样 —— 而文字识别正是通常需要服务器的那一步。
- 有手机应用吗?
- 这个页面就是。把它添加到主屏幕,它会像任何应用一样打开、能离线使用、能调用后置摄像头。基于同一套扫描代码的 iPhone、iPad 和 Android 原生版本也在做,但还很早期。浏览器版才是完整的那个。
- 需要账号吗?
- 不需要。这里没有任何东西藏在登录之后。有一个可选账号,用来把积分带到我们其他应用里;你扫描的东西从不属于它的一部分。
- 文字识别支持哪些语言?
- 目前是英文。识别出的文字会作为一个隐形图层写进 PDF,这一层现在只承载拉丁字母 —— 编码不了的词会被排除在可搜索层之外,而不是写成乱码,页面图像本身不受影响。
- 我的文档存在哪里?
- 在这个浏览器里,在这台设备上。不在服务器上 —— 这也意味着它们不会出现在你的其他设备上,而清除浏览数据就会把它们一并清掉。
- 真的是开源的吗?
- 是的 —— 全部代码,采用 MIT 或 Apache-2.0 许可。