光學字元辨識(optical character recognition, OCR)
/ OP-tih-kul KAIR-ik-ter rek-ug-NISH-un (O-C-R) /
光學字元辨識把文字的圖片變成真正的文本——也就是電腦能搜索、複製和編輯的那種文本。在攝影機看來,一頁印刷品不過是一片深淺相間的圖案;OCR讀出這片圖案,把字母和單詞還原出來。正是它,讓你拍下一張收據、數字就變得可編輯,拍下一份外文菜單就能翻譯,或是把一本掃描的百年舊書變得每個字都可搜索。它在墨水的世界與字元的世界之間,架起一座橋。
一個典型的系統分幾個階段工作:找出含有文字的區域,把它們擺正、清理乾淨,切分成行和字元,把每個形狀辨識成一個字母或符號,而且上層往往還有一個語言模型來糾正可能的錯誤(是「the」而不是「tlie」)。乾淨、印刷、高對比度的文字——一份打字文檔、一塊車牌——如今已被解決得極好,常常近乎完美。正是這份可靠,讓OCR悄無聲息地運行在翻譯應用、文檔掃描、郵件分揀,以及朗讀文字的無障礙工具之中。
隨著文字變得越來越亂,難度陡然攀升。手寫體——尤其是連筆或潦草的——比印刷體難得多。瓶子上彎曲的文字、褪色或污損的文檔、密集的表格、罕見的字體、昏暗的光線和運動模糊,都會讓錯誤激增。而且辨識出字元只完成了一半的仗:在一頁複雜的雜誌或多欄的表格上重建版面與閱讀順序,本身就是個難題。那些擁有數千個字元、或詞與詞之間沒有空格的語言,又添了一重挑戰。請把任何OCR的輸出都當作一份「有待核對的草稿」,而非「保證無誤的謄本」。
拍下一張印刷的名片,OCR把姓名、電話、信箱作為可編輯的文本返回,可以直接存成聯絡人——通常完美無瑕。而拍下一張手寫的購物清單,它也許能把「milk」讀對,卻把「eggs」認成「e995」,還漏掉一個跑到撕裂邊緣外的詞。
對乾淨的印刷體近乎完美,對手寫和雜亂則容易出錯——這道差距就是全部的故事。
對乾淨印刷文本的OCR大體上是個已解決的問題;而對手寫、彎曲或損壞文字以及複雜版面的OCR,則不是。辨識字元,與重建閱讀順序也是兩碼事——一頁字字讀對的多欄頁面,仍可能輸出得亂七八糟。