abox.tools

语言: 简体中文

怎么用手机扫描文档

有人让你把一份表格「扫描后发回来」,而你手上只有手机,没有扫描仪。一张纸的照片和这张纸的扫描件之间的距离,比看上去要近,而且重点也不在倾斜上。下面说清真正把它们分开的是什么,以及每一样该怎么处理。

打开文档扫描 把纸拍下来,回来的是一份看着像扫描的东西。

以 Markdown 查看

先说结论

把纸放在一样跟它不同色的东西上,站到正上方,把画面填满,拍一张。然后打开文档扫描,核对它找到的四个角,选「彩色,去掉不匀」或者「黑白」,存成 PDF。

整件事就这么多。剩下的部分说的是每一步各自在修什么,因为只有知道哪一步管哪件事,你才能在三秒钟之内判断出,正要发出去的这份东西会不会被收下。

照片和扫描件真正差在哪

三样,而且分量并不一样。

把照片拍好

五件事,按各自能起多大作用排:

摆正:为什么形状比倾斜更要紧

把倾斜掰回来,是一段被研究透了的算术。一个长方形的四个角,不管从哪儿看,都能定出把它们摆回去的那个变换,再把这个变换用到每个像素上,就得到一页平的纸。任何一个说自己能摆正页面的工具,做的都是这件事。

悄悄出错的是另一半:这页平的纸该有多大。最顺手的办法是量四边形的边、拿它们的比当比例——而斜着拍的照片会把远端那条边压短,于是一张 A4 做出来明显偏矮胖。它看着仍然像扫描件,只是上面每一行字的高度都不对,而屏幕上没有任何地方会说这件事。

更好的答案是:透视本身就带着这个信息。只要相机是台普通相机,一张长方形的照片就足够同时还原出这个长方形真实的长宽比和相机的焦距。这里的文档扫描就是这么做的,然后它会告诉你这页出来是什么形状、那是不是一种标准纸张——所以一页写着「1:1.41,也就是 A4 或者 A5 的形状」的纸,就是你可以不用再操心的纸。

斜着拍下的桌上一页纸,四角上画着检测出的四边形,还有用来调整的手柄。
检测出来的四个角,找错了就拖回去。把这几个角对准,才是把一张照片变成扫描件的那一步。

光:用除法,别去拉伸

把一张光线不匀的纸提高对比度,亮的地方变白,暗的地方变黑,暗处写的字也跟着一起没了。问题从来就不是对比度太低,而是纸在这个角和那个角本来就不一样亮,所以根本不存在一个对整页都合适的调整。

管用的办法是估出每一处纸有多亮,再除掉它。纸是一页上任何一小块里偏亮的那个多数,所以把亮度在一格一格的小块上量一遍、每块取一个高分位数,就得到了光的形状,因为文字太暗也太稀疏,动不了这个数。除掉它,剩下的就是墨迹,光线均匀,阴影和边角发暗都没有了。

「彩色,去掉不匀」和「灰度」做的就是这件事。颜色本身属于文档的时候就选彩色:印章、蓝墨水的签字、荧光笔划的那一行,以及任何日后可能有人问「这是不是原件」的东西。

清理卡片:已经拉平的页面、几种模式的选择,以及强度滑块。
把光除掉,靠的是相除而不是拉伸。模式从轻微提亮一直到纯黑白,哪一种用在什么时候,下面一节会说。

黑白,以及文件为什么突然就小了

存成照片的一页,是几百万个各自能取一千六百万种颜色的像素,而编解码器把力气花在了一页文字根本没有的细腻渐变上。存成黑白的一页,是每像素一位,非墨即纸,压缩起来就像它本来那样重复得厉害。

差距不小:在同样的页面上大约是十八倍。二十页的合同存成照片要到十五兆,存成一位的页面就落在一兆以内。这就是一份文档能不能用邮件发出去的分界线,也是每一台办公室扫描仪都把它设成默认的原因。

代价是没有中间调:页面上的一张照片会变成一片乱点。印刷和手写的页面用它,而文档大多就是这两种;带图的页面用灰度。

有一个细节值得知道,因为它解释了为什么好工具能成、差工具却给你一页带黑角的东西:墨还是纸这个判断必须就地去做。当阴影里的纸比光里的墨还暗,而拍下来的页面上这种情况很常见,整页一个阈值就不可能成立。拿每个像素跟它自己那一小块邻域的均值去比,才让阴影里的字还看得清。

多页,一份文档

按顺序把各页拍下来,一次全加进去,它们就按加进去的顺序变成同一个 PDF 的各页。有两件事要留神:

发出去之前

为什么这些都不需要上传

上面每一步,都是在一张你自己的机器早已解好码的图上做算术:四个角、一个变换、一次除法、一个阈值,再加一个一字节一字节写出来的容器。这里没有一样是服务器做得到而浏览器做不到的,也没有一样需要先下载一个模型才能做。

想想这些文件到底是什么,就值得在这儿停一下。人不会随便拍一页纸。人拍的是护照、工资单、租房合同、就诊材料、合同,都是带着姓名、地址和账号的文档,而且拍它们正是因为某个机构要。为了把四个角掰正就把其中一份传到某个网站,等于把整份文档交给一个陌生人。哪些工具是非看你的文件不可、哪些只是顺手看了,怎么判断一个工具是不是真的需要你的文件里有四条用来分辨的检查。