關於「PDF OCR 文字辨識」
掃描器或手機掃描 App 會把每一張紙存成一張圖片。PDF 閱讀器看到的只有像素,所以搜尋人名什麼也找不到,拖曳游標想選一句話,卻會選到整頁。光學字元辨識(OCR)會分析這些像素,判斷它們呈現的是哪些字。
在這個頁面上,檔案的每一頁都會用 pdf.js 以 300 DPI 繪製出來,再交給開放原始碼的 OCR 引擎 Tesseract 的瀏覽器版本 tesseract.js(Apache-2.0 授權)處理。辨識出來的文字會以看不見的文字層寫回 PDF,放在原始頁面上相對應的位置。看得見的頁面完全不動:掃描影像、顏色、印章和簽名都和原本一模一樣。改變的是,這份文件現在可以搜尋了,你也能像處理任何用電腦製作的 PDF 一樣,反白並複製其中的文字。如果你只需要文字,所有辨識結果也會另外提供一個純文字 .txt 檔。
辨識語言
Tesseract 事先知道要辨識哪種語言時,準確度會比較高。預設選取的是中文(繁體),另外也可以選擇英文、西班牙文、法文、德文、葡萄牙文、義大利文、中文(簡體)和日文。每種語言模型在你第一次選用時,會從 pd00.com 下載大約 0.7 到 3 MB;之後瀏覽器會把它存在快取中,下次直接使用。
如何使用「PDF OCR 文字辨識」
- 選擇掃描版 PDF選取檔案,或把它拖放到工具上。有密碼保護的掃描檔必須先經過 PDF 解鎖處理,而那一步需要知道密碼本身。
- 指定要辨識的語言保留中文(繁體),或選擇文件實際使用的語言;如果頁面混用多種語言,最多可以選三種。
- 辨識完成後下載按「轉為可搜尋的 PDF」,並在逐頁處理期間保持分頁開啟。完成後儲存可搜尋的 PDF;如果只想要文字,也可以一併下載 .txt 檔。
常見使用情境
在已簽署的合約裡找出某個條款
一份簽好的合約寄回來時是掃描檔。做過 OCR 之後,搜尋某一方的名稱或「終止」這類字詞,就能直接跳到對應的段落,不必一張張翻看幾十張圖片。
多年後還找得到的紙本紀錄
為了保存而掃描的發票、保固卡和信件,只要每份都帶有電腦檔案搜尋能建立索引的文字層,就能依照內容找到,而不只是靠檔名。
從影印的章節中引用文字
課程講義裡掃描的書籍章節或期刊論文,不重打一遍就無法引用。有了 OCR,你可以選取段落、複製下來,再對照頁面影像,找出被認錯的字。
影響文字辨識準確度的因素
OCR 只能讀出掃描影像中看得到的東西,所以來源品質比任何設定都重要。以 300 DPI 擷取、擺放端正、淺色背景上印著深色文字的頁面,效果最好。以下情況會降低準確度:
- 解析度太低或影像模糊。以 300 DPI 繪製無法補回低解析度掃描當初沒拍到的細節,手抖拍下的相片裡,小字的每個字元像素太少。
- 歪斜或橫躺的頁面。傾斜的文字行和書本裝訂處附近的彎曲,會讓字詞被拆散。開始之前,先用旋轉 PDF 把橫躺的頁面轉正。
- 手寫字。Tesseract 是為印刷和打字的文字設計的。手寫筆記、簽名和手填的欄位都無法可靠辨識。
- 漏選語言。一封德文信只用英文辨識,往往會漏掉變音符號、誤判字詞,所以請把頁面用到的語言全部選上。
即使是乾淨的掃描檔,也難免會有零星錯誤,例如把 1 認成 l,或把 rn 認成 m。搜尋大多仍然找得到字,但凡是要複製到重要文件裡的內容,請務必校對。
辨識需要多久
在筆電上每頁大約需要幾秒,在手機上會更久;兩頁的信件很快就能完成,長篇報告則可能要好幾分鐘,而且在完成之前分頁必須保持開啟。長檔案比較適合在電腦上處理。如果只需要大型掃描檔中的某一部分,先用擷取 PDF 頁面把那些頁面取出來,再對較短的檔案執行 OCR。
「略過已含文字的頁面」預設為開啟,處理混合型文件時能節省時間,例如最後附上掃描簽名頁的打字報告:只有沒有文字的頁面會被辨識。關閉這個選項,就會辨識每一頁。
可搜尋的副本保留了什麼
看得見的頁面不會被清理、拉正或加上任何東西,所以結果無論在螢幕上還是印在紙上,都和你加入的掃描檔一模一樣。加上的文字和那些影像相比非常小,所以檔案通常只會稍微變大。如果你也想讓 PDF 變小,請另外用壓縮 PDF 處理;想替它設定一個方便歸檔的清楚標題,可以用編輯 PDF 中繼資料。
不需要 OCR 的檔案
- 已經有可選取文字的 PDF。如果在閱讀器裡可以反白選取文字,就不必做 OCR,直接用 PDF 轉文字複製文字,或用 PDF 轉 Markdown 保留標題和清單。
- 想要編輯的文件。OCR 讓掃描檔可以搜尋,但不能編輯。每一頁仍然是一張圖片,後面墊著一層文字,所以你無法直接在原處改寫句子。
頁面的繪製與辨識都在這個瀏覽器分頁內進行。唯一額外下載的是從 pd00.com 取得的語言模型,你的掃描檔和其中的文字都不會傳送到任何地方;這裡說明如何確認。