abox.tools

語言: 繁體中文

怎麼用手機掃描文件

有人讓你把一份表格「掃描後發回來」,而你手上只有手機,沒有掃描器。一張紙的照片和這張紙的掃描檔之間的距離,比看上去要近,而且重點也不在傾斜上。下面說清真正把它們分開的是什麼,以及每一樣該怎麼處理。

開啟文件掃描 把紙拍下來,回來的是一份看起來像掃描的東西。

以 Markdown 檢視

先說結論

把紙放在一樣跟它不同色的東西上,站到正上方,把畫面填滿,拍一張。然後開啟文件掃描,核對它找到的四個角,選「彩色,去掉不勻」或者「黑白」,存成 PDF。

整件事就這麼多。剩下的部分說的是每一步各自在修什麼,因為只有知道哪一步管哪件事,你才能在三秒鐘之內判斷出,正要發出去的這份東西會不會被收下。

照片和掃描檔真正差在哪

三樣,而且分量並不一樣。

把照片拍好

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

擺正:為什麼形狀比傾斜更要緊

把傾斜掰回來,是一段被研究透了的算術。一個長方形的四個角,不管從哪裡看,都能定出把它們擺回去的那個變換,再把這個變換用到每個畫素上,就得到一頁平的紙。任何一個說自己能擺正頁面的工具,做的都是這件事。

悄悄出錯的是另一半:這頁平的紙該有多大。最順手的辦法是量四邊形的邊、拿它們的比當比例——而斜著拍的照片會把遠端那條邊壓短,於是一張 A4 做出來明顯偏矮胖。它看著仍然像掃描檔,只是上面每一行字的高度都不對,而螢幕上沒有任何地方會說這件事。

更好的答案是:透視本身就帶著這個資訊。只要相機是臺普通相機,一張長方形的照片就足夠同時還原出這個長方形真實的長寬比和相機的焦距。這裡的文件掃描就是這麼做的,然後它會告訴你這頁出來是什麼形狀、那是不是一種標準紙張——所以一頁寫著「1:1.41,也就是 A4 或者 A5 的形狀」的紙,就是你可以不用再操心的紙。

斜著拍下的桌上一頁紙,四角上畫著檢測出的四邊形,還有用來調整的手柄。
檢測出來的四個角,找錯了就拖回去。把這幾個角對準,才是把一張照片變成掃描檔的那一步。

光:用除法,別去拉伸

把一張光線不勻的紙提高對比度,亮的地方變白,暗的地方變黑,暗處寫的字也跟著一起沒了。問題從來就不是對比度太低,而是紙在這個角和那個角本來就不一樣亮,所以根本不存在一個對整頁都合適的調整。

管用的辦法是估出每一處紙有多亮,再除掉它。紙是一頁上任何一小塊裡偏亮的那個多數,所以把亮度在一格一格的小塊上量一遍、每塊取一個高分位數,就得到了光的形狀,因為文字太暗也太稀疏,動不了這個數。除掉它,剩下的就是墨跡,光線均勻,陰影和邊角發暗都沒有了。

「彩色,去掉不勻」和「灰階」做的就是這件事。顏色本身屬於文件的時候就選彩色:印章、藍墨水的簽字、熒光筆劃的那一行,以及任何日後可能有人問「這是不是原件」的東西。

清理卡片:已經拉平的頁面、幾種模式的選擇,以及強度滑塊。
把光除掉,靠的是相除而不是拉伸。模式從輕微提亮一直到純黑白,哪一種用在什麼時候,下面一節會說。

黑白,以及檔案為什麼突然就小了

存成照片的一頁,是幾百萬個各自能取一千六百萬種顏色的畫素,而編解碼器把力氣花在了一頁文字根本沒有的細膩漸變上。存成黑白的一頁,是每畫素一位,非墨即紙,壓縮起來就像它本來那樣重複得厲害。

差距不小:在同樣的頁面上大約是十八倍。二十頁的合同存成照片要到十五兆,存成一位的頁面就落在一兆以內。這就是一份文件能不能用郵件發出去的分界線,也是每一臺辦公室掃描器都把它設成預設的原因。

代價是沒有中間調:頁面上的一張照片會變成一片亂點。印刷和手寫的頁面用它,而文件大多就是這兩種;帶圖的頁面用灰階。

有一個細節值得知道,因為它解釋了為什麼好工具能成、差工具卻給你一頁帶黑角的東西:墨還是紙這個判斷必須就地去做。當陰影裡的紙比光裡的墨還暗,而拍下來的頁面上這種情況很常見,整頁一個閾值就不可能成立。拿每個畫素跟它自己那一小塊鄰域的均值去比,才讓陰影裡的字還看得清。

多頁,一份文件

按順序把各頁拍下來,一次全加進去,它們就按加進去的順序變成同一個 PDF 的各頁。有兩件事要留神:

發出去之前

為什麼這些都不需要上傳

上面每一步,都是在一張你自己的機器早已解好碼的圖上做算術:四個角、一個變換、一次除法、一個閾值,再加一個一位元組一位元組寫出來的容器。這裡沒有一樣是伺服器做得到而瀏覽器做不到的,也沒有一樣需要先下載一個模型才能做。

想想這些檔案到底是什麼,就值得在這裡停一下。人不會隨便拍一頁紙。人拍的是護照、工資單、租房合同、就診材料、合同,都是帶著姓名、地址和帳號的文件,而且拍它們正是因為某個機構要。為了把四個角掰正就把其中一份傳到某個網站,等於把整份文件交給一個陌生人。哪些工具是非看你的檔案不可、哪些只是順手看了,怎麼判斷一個工具是不是真的需要你的檔案裡有四條用來分辨的檢查。