跳到主要內容
FileTinker

如何使用 OCR 技術,直接在瀏覽器中從圖片或掃描的 PDF 檔案中提取文字

由 FileTinker 團隊撰寫閱讀時間 7 分鐘

您手邊有一份文件的照片、螢幕截圖或掃描的 PDF 檔案,您需要將其中的文字轉換成實際的文字,以便進行編輯、搜尋或複製到其他地方。這項工作稱為 OCR(光學字元辨識),而且您不再需要使用桌面軟體或上傳檔案到網站來完成:現代瀏覽器可以直接在本地執行完整的 OCR 引擎。但 OCR 並非魔法。在清晰的掃描文件中,它幾乎可以正確辨識所有字元;但在模糊的手機照片中,它會產生錯誤的結果,而差異幾乎完全取決於您提供的輸入內容。本指南將解釋 OCR 實際上是做什麼、如何判斷您是否根本不需要使用它、哪些因素會影響其效果、為什麼語言設定比人們想像的更重要,以及瀏覽器內建工具究竟會傳輸哪些資料到網路。

OCR 在一行內完成:輸入像素,輸出辨識結果。

掃描後的頁面不包含任何文字。對電腦而言,它只是一組由彩色像素組成的網格,就像一張海灘的照片一樣。OCR(光學字元辨識)是一種軟體,它會掃描這個網格,找出看起來像字母的形狀,然後輸出它認為最有可能的文字。這裡的「猜測」一詞很重要:這個引擎會將像素模式與它所學習到的印刷文字的外觀進行比對,因此輸出的結果是一種統計重建,而不是單純的複製。

這就是為什麼同樣的工具,在處理某個檔案時可能表現得近乎完美,但在處理另一個檔案時卻毫無用處。如果提供的是平整、清晰、對比度高的印刷文字掃描圖,那麼優秀的 OCR 引擎就能夠準確地識別文字,偶爾出現錯誤而已。但如果提供的是傾斜、模糊的智慧型手機拍攝的小字照片,那麼整個流程的每個環節都會出現問題:它會錯誤地識別出不存在的行,將字元錯誤地分割,並自信地輸出錯誤的字母。因此,應將 OCR 的輸出視為一份需要校對的草稿,而不是視為絕對正確的結果,尤其是在處理數字時。

首先,確認您是否真的需要使用 OCR 技術。

PDF 檔案有兩種,而且在螢幕上看起來幾乎一模一樣。一種是「原生數位」PDF,也就是從 Word、Google 文件或網站匯出的檔案,它會將文字儲存為字元。您可以在任何 PDF 檢視器中開啟它,然後使用滑鼠游標選取文字、搜尋文字,並複製文字。這樣複製的文字是即時且 100% 精確的,任何 OCR 軟體都無法達到這種效果。另一種是「掃描」PDF,與之不同:每一頁都是紙張的照片,其中沒有可以選取的字元。

因此,在您對 PDF 檔案進行 OCR 處理之前,請嘗試選取其中的一個字詞或搜尋特定的字詞。如果這樣做有效,只需直接複製文字,然後完全跳過 OCR 處理。對原本就是數位化的 PDF 檔案進行 OCR 處理,實際上是將原本清晰的文字轉換成圖像,然後再嘗試將圖像中的文字還原,這會比較慢,而且準確度也遠低於原本就存在的文字。OCR 適用於選取功能失效的情況:例如掃描文件、傳真、紙本照片和螢幕截圖。

是什麼因素讓光學字元辨識(OCR)技術能夠準確運作,又有哪些因素會悄悄地影響其準確性?

OCR 引擎是透過乾淨的印刷文字進行訓練,因此,當影像偏離理想狀態時,其準確度就會降低:理想狀態指的是平整的頁面、清晰的對焦、深色文字搭配淺色背景,以及使用標準字體。其中,最重要的因素是解析度。長期以來,一個常用的經驗法則就是以 300 DPI 的解析度進行掃描,這對於照片或螢幕截圖而言,大致相當於字母的高度為 20 像素或更多。如果低於這個數值,用於區分「8」和「B」,或「e」和「c」的筆畫寬度可能只有一兩個像素,而引擎所需的資訊根本無法從影像中取得。事後再將低解析度的影像進行放大,也無法恢復其品質。

了解常見的危險因素非常重要,因為在它們出現時,我們可以採取措施加以避免:

  • 模糊和相機晃動:柔和的邊緣會使字母的形狀變得模糊不清。
  • 傾斜:以傾斜角度拍攝或掃描的文字會導致無法正確偵測文字行。
  • 極小的文字:小尺寸使用者介面文字或細字體,皆歸類於約 20 像素的門檻之下。
  • 對比度低:例如,在灰色背景上顯示灰色文字,或將文字疊加在照片或彩色背景上。
  • 強光和陰影:在照片中,如果你的影子橫跨畫面,可能會導致整個區域的細節都消失。
  • 手寫字:標準的 OCR 引擎是為印刷文字設計的;潦草的筆跡會被視為雜訊。
  • 裝飾字體:過度風格化或高度壓縮的字體,與訓練資料的差異過大。
  • 複雜的版面配置:多欄頁面和表格可能會導致閱讀順序混亂。

如何取得一份原始資料,以便 OCR 軟體能夠正確辨識?

在掃描時花費五分鐘進行調整,就能省下三十分鐘的後續修正時間。如果您有掃描器,請以 300 DPI 的解析度掃描文字文件;使用灰階即可,而且掃描出的檔案會比彩色檔案小。如果您使用手機掃描,請將文件放在平坦的表面上,並確保光線均勻;將相機直接置於文件上方,而不是以傾斜的角度拍攝;讓文件完全填滿畫面,並確保自己的陰影不會遮擋文字。在拍攝前,請點擊螢幕以對焦文字。

接著進行裁切。如果想要擷取的文字與表格邊緣、手部或雜亂的背景重疊,請在執行 OCR 之前,將影像裁切至僅包含文字區域。畫面中其他部分的所有內容,都可能被引擎誤認為是文字。上述的每個步驟都直接對應到上述的某一種錯誤模式:解析度、傾斜度、對比度和雜亂程度。

語言:人們通常會忽略的設定。

OCR 引擎會針對每種語言使用不同的訓練模型,因為該模型會同時編碼字母的形狀以及語言的統計資訊,也就是哪些字元序列構成合理的單字。如果選擇了錯誤的語言,結果不僅會稍微變差,而是會產生一堆亂碼:例如,一個用於處理英文的 OCR 模型,如果處理的是中文文字,就會忠實地輸出與中文筆畫最相似的拉丁字母。如果您的 OCR 輸出結果看起來像是隨機字元,那麼首先應該檢查語言設定,然後再考慮是否是影像品質的問題。

FileTinker 的 OCR 功能支援 17 種語言:英語、繁體中文和簡體中文、法語、德語、西班牙語、義大利語、葡萄牙語、荷蘭語、俄語、日語、韓語、阿拉伯語、印地語、波蘭語、土耳其語和越南語。此外,還提供一種結合的「英語 + 中文」模式,適用於確實混合使用這兩種語言的文件,這在台灣和香港的收據和表格中很常見。每種語言的資料僅在您第一次使用時才會下載。請僅將結合模式用於確實混合語言的頁面:在單一語言的頁面上同時提供兩種字母給引擎處理,只會增加出錯的可能性。

瀏覽器內建的 OCR 工具實際上會如何處理您的檔案?

FileTinker 的「圖片轉文字」工具會在瀏覽器分頁中的工作程序中執行開源的 Tesseract 引擎,該引擎已編譯為 WebAssembly。您可以選擇一種語言,上傳檔案,然後觀看進度條,同時它會進行文字辨識。它支援常見的圖片格式,包括 JPG、PNG、WebP 等,以及 PDF 檔案。圖片會直接傳送到引擎進行處理。

掃描後的 PDF 檔案會多出一道步驟:該工具會先使用 pdf.js 將每一頁轉換成解析度為原始解析度的兩倍的影像,然後再逐頁將這些影像傳送給引擎,並顯示「第 2 頁,共 5 頁」之類的進度指示。系統會將辨識出的頁面合併,並在它們之間插入一條空白線,形成一個完整的結果。請注意,這會對所有 PDF 檔案都進行處理,包括原本就是數位格式的檔案,這也是為什麼先前建議先進行「選取與複製」檢查的原因。

結果會顯示在一個可編輯的文字方塊中,因此您可以立即修正辨識錯誤,然後將其複製或下載為 .txt 檔案。如果引擎找不到任何內容,它會直接顯示,而不是編造文字。如果您需要將清理後的文字再次轉換為文件,FileTinker 的文字轉 PDF 工具會將 .txt 檔案轉換為真正的、可選取的文字 PDF 檔案,這通常是掃描的目的。

關於隱私權的詳細條款,以簡潔明瞭的方式說明。

在您的瀏覽器中執行」這句話在這裡是正確的,但它並非意味著「完全沒有網路活動」,因此有必要明確說明其中的差異。您的圖片或 PDF 檔案從未被上傳:它們完全在您自己的電腦上進行解碼、渲染和識別,沒有任何伺服器會接收這些檔案。透過網路傳輸的只有軟體。首次使用時,該工具會下載 OCR 引擎(包括工作程式及其來自 jsDelivr CDN 的 WebAssembly 核心),以及您選擇的語言的訓練資料(來自標準 Tesseract 資料主機)。這是一個一次性的下載過程——引擎約需幾 MB,再加上語言模型,其大小從幾 MB(英文)到數十 MB(例如中文或日文)不等——您的瀏覽器會將其快取,因此後續的執行速度會更快。

簡而言之:程式碼會下載到您的電腦上,但您的檔案永遠不會上傳到雲端。這種區別使得在瀏覽器中進行 OCR 處理對於處理敏感資料(例如合約、身分證件和醫療證明)來說是合理的,因為您想要避免將文件本身傳送到陌生人的伺服器上。網路觀察者可能會發現您下載了 OCR 軟體,但他們無法看到您在哪個裝置上執行了該軟體。

整理 OCR 軟體所產生的結果。

即使是個不錯的結果,也需要通過。OCR(光學字元辨識)技術經常會出現以下問題:小寫字母「l」、數字「1」和大小寫字母「I」;字母「O」和數字「0」;以及「rn」被誤讀為「m」。請務必仔細校對數字,因為電話號碼或發票總額中的一個錯誤數字,很可能既不易察覺,而且拼寫檢查也無法發現。結構上的小瑕疵也很常見:您可能會發現,每一行印刷文字的結尾都會出現換行,而不是每段文字的結尾,而且跨越多行的單字也會保持斷開的狀態。

由於輸出框是可以編輯的,所以在複製或下載之前,請先進行必要的整理。對於單頁信件,這只需要一分鐘。這短短的一分鐘,再加上良好的掃描品質,就能讓光學字元辨識(OCR)從一種有趣的技術,轉變為將紙本文件快速轉換為可實際使用的數位文件的最佳方法。

常見問題

我能否在不將掃描的 PDF 檔案上傳到任何地方的情況下,從中提取文字?

是的。像 FileTinker 的「圖片轉文字」這類瀏覽器內建的 OCR 工具,會將 Tesseract 引擎以 WebAssembly 的形式在本地執行:每一頁 PDF 檔案都會在您的瀏覽器中轉換成圖片,然後在您的電腦上進行文字辨識,且檔案不會傳送到任何伺服器。多頁掃描的 PDF 檔案會逐頁處理,並以單一文字結果的形式傳回。

為什麼我的 OCR 輸出結果是亂碼?

最常見的原因是語言設定錯誤:OCR 模型是針對特定語言設計的,因此如果讓一個英文模型來處理中文(或反之),它會產生毫無意義的結果,而不是僅僅產生品質稍差的文字。接下來,請檢查影像品質:文字高度小於約 20 像素、影像模糊、傾斜或對比度過低,都會導致引擎的效能低於其能夠辨識字元的臨界值。

OCR 技術是否適用於手寫文字?

一般來說,答案是否定的。標準的 OCR 引擎,包括 Tesseract,都是以印刷字體為訓練對象,因此潦草的筆跡會被視為雜訊,即使是整齊的方塊字也會產生大量的錯誤。對於手寫筆記,最好手動謄錄,或者使用專門的手寫辨識服務,而不是使用傳統的 OCR 軟體。

為了達到精準的光學字元辨識(OCR),我需要設定多少解析度?

掃描文件時,解析度設定為 300 DPI,或者確保照片或螢幕截圖中的字母高度大約為 20 像素或更高。如果低於這個數值,用於區分相似字元的筆畫寬度僅有一個或兩個像素,資訊就會遺失。事後放大低解析度圖像也無法恢復這些細節。

當我使用瀏覽器內建的 OCR 功能時,會下載任何檔案嗎?

是的,但問題出在軟體本身,而不是您的檔案。第一次使用時,OCR 引擎和您選擇的語言資料會從 CDN(內容分發網路)下載,引擎約需幾 MB 的空間,加上語言模型,其大小從幾 MB(英文)到數十 MB(中文、日文、韓文)不等,這些資料都會由您的瀏覽器快取,以便日後使用。您的圖片或 PDF 檔案本身不會上傳;文字辨識完全在您的裝置上進行。

FileTinker 的 OCR 功能支援哪些語言?

十七種語言:英文、繁體中文、簡體中文、法文、德文、西班牙文、義大利文、葡萄牙文、荷蘭文、俄文、日文、韓文、阿拉伯文、印地文、波蘭文、土耳其文和越南文,此外還有結合英文和中文的模式,適用於混合語言的文件。每種語言的訓練資料會在首次使用時下載,之後會進行快取。