文章
提升 OCR 準確率:在辨識文字之前,先修正影像
OCR 的品質取決於輸入的影像。歪斜、低對比、雜訊多的掃描結果,不論引擎再好,都會產生錯亂的文字。以下是真正有效的做法,按建議順序排列,全部在瀏覽器本地執行。
為何 OCR 在實際掃描上表現不佳
Tesseract 等 OCR 引擎是以乾淨、水平、高對比的文字訓練而成。它將頁面分割成行,行分割成詞,詞分割成字元形狀,再將每個形狀與訓練模型比對。實際掃描往往違反這些前提:頁面略微傾斜、光線不均勻、解析度偏低,而且掃描台邊緣或對向頁面會帶來深色雜訊。每一個問題都會讓行與字元的分割步驟出錯,而一旦分割錯誤,就會連帶造成字元辨識錯誤。解決方法很少是換一個引擎,而是把影像準備好,讓引擎的假設得以成立。實際上,前處理對準確率的影響遠大於 OCR 引擎本身的選擇。

從解析度開始:目標 300 DPI
Tesseract 在一般正文大小的文字上,最佳解析度約為 300 DPI。低於大約 200 DPI 時,每個字形的筆畫會模糊到與相鄰字形重疊,準確率會急劇下降。如果您能控制掃描設定,在其他步驟之前先將掃描器設為 300 DPI,這是單一影響最大的選擇。如果您只有低解析度影像,放大並不能重建從未被記錄的細節,但適度放大仍有助於引擎透過給分割步驟更多像素來分離相鄰字元。非常小的印刷文字可從 400 到 600 DPI 中受益;超過這個範圍只會增大檔案,對準確率毫無幫助。若來源是 PDF,請先將每頁以目標 DPI 轉為影像,再對該影像執行 OCR。
修正方向
若頁面旋轉了 90、180 或 270 度,引擎便是橫讀或倒讀,結果必然是亂碼。Tesseract 有方向與文字偵測(OSD)功能,可猜測旋轉角度,但在文字稀疏、表單或以影像為主的頁面上並不可靠。自行將頁面轉正可消除猜測。此步驟是無損且即時的:旋轉 90 度的整數倍只是重新映射既有像素的位置,不會損失品質,也不需要重新取樣。請在去斜之前完成此步驟,因為去斜假設文字已大致水平。
去斜:矯正細微傾斜
即使只有 2 到 3 度的傾斜,例如稍微歪斜放入的頁面,也會影響 OCR:水平行尋找步驟可能將一行文字拆成兩行,或將兩行合併為一行。去斜會測量文字行的主要角度(常用投影剖面或 Hough 轉換分析),再將頁面旋轉回水平。與旋轉 90 度不同,去斜是小角度的任意旋轉,因此會重新取樣像素,並帶來微量模糊。這個取捨幾乎總是值得的,因為水平的行可以乾淨地分割,準確率的提升遠大於輕微的柔化。請在修正方向之後、裁切之前進行去斜。

裁切至文字範圍並去除雜訊
所有不屬於目標文字的內容,都是引擎可能誤讀的雜訊:掃描台的深色邊框、對向頁面的一部分、被釘住的角落、手指或打孔。將影像裁切至僅包含文字區塊,可去除這些干擾目標,既能提升準確率,也能加快辨識速度,因為引擎需要分析的面積更小。對於多欄文件,裁切(或每次只對一欄執行 OCR)也能防止引擎橫跨欄間空白,將兩欄混讀成一行亂碼。請在去斜之後再裁切,讓內容方正地位於畫面內。
對比度、灰階,以及二值化的實際運作方式
OCR 最終作用於二值影像:每個像素被判定為墨水或紙張。Tesseract 在內部使用 Otsu 方法進行二值化,從影像直方圖中挑選單一全域閾值。當頁面光線均勻且對比良好時,此方法效果不錯;但若陰影或有色背景使某個角落比閾值預期的更暗,則會失效。可靠的改善方式是轉換為灰階(避免色偏干擾閾值),並均勻化光線(讓整頁位於閾值的同一側)。適度增強對比有助於顯示模糊文字。通常會適得其反的做法是手動硬式二值化:若以錯誤的截止值自行閾值化為純黑白,會抹去引擎本身能保留的細淡筆畫。請讓引擎自行二值化,給它一張均勻的灰階影像作為起點。Sunasty 提供 PDF 的灰階轉換功能;若需要精細調整對比,桌面編輯器仍較為適合,但掃描時的均勻光線比任何滑桿調整都更重要。
選擇正確的語言並驗證輸出結果
Tesseract 會為每種語言和文字系統載入獨立的訓練資料檔案。若以英語模型辨識法語或希臘語文字,尤其是在帶有重音或非拉丁字元的情況下,會產生本可避免的錯誤,因此請選擇與文件相符的語言。最後,請將 OCR 輸出視為草稿,而非最終結果:引擎無從得知某個名字的拼法是否正確,或某個 0 是否其實是 O。請仔細核對數字、專有名詞,以及任何具有法律或財務重要性的內容。對於表格和多欄版面,請預期需要手動修正結構,因為 OCR 回傳的是辨識文字的串流,而非重建的版面配置。
本文涉及的工具
常見問題
放大模糊的掃描能改善 OCR 嗎?
單靠放大效果有限。放大無法還原掃描時從未記錄的細節,因此模糊的 100 DPI 影像放大後仍然模糊。適度放大可透過給分割步驟更多像素來幫助引擎分離相鄰字元,但以 300 DPI 重新掃描的效果遠優於任何程度的放大。
我應該先自行將影像轉換為純黑白嗎?
通常不建議。Tesseract 內部使用 Otsu 方法進行二值化,若以錯誤的截止值手動硬式閾值化,會抹去引擎本能保留的細淡筆畫。請改為轉換為灰階並均勻化光線,再讓引擎自行選擇閾值。
我的文字是橫向的。OCR 會自動旋轉嗎?
有時可以。Tesseract 有方向偵測功能,但在表單、文字稀疏或以影像為主的頁面上並不可靠。自行將頁面旋轉 90、180 或 270 度是無損的,可消除猜測,因此是較安全的選擇。
這些操作會上傳我的文件嗎?
不會。旋轉、去斜、裁切、轉換為灰階,以及 OCR 本身,全部在您的瀏覽器中執行。OCR 使用 Tesseract 的 WebAssembly 版本,訓練語言資料會下載一次並快取。您的檔案絕不會離開裝置。