圖片轉文字(OCR)

把文字的圖片變成可編輯、可搜尋的文字。

拖入圖片、點擊選擇,或直接貼上截圖JPG、PNG、WebP、HEIC、BMP · 多檔案 · 不上傳
版面

只辨識印刷體。語言選擇最關鍵;第一次執行會下載引擎(約 4 MB)和一個語言模型。

這個 OCR 工具能做什麼

拖入文件照片、截圖、掃描頁或一張招牌的照片,裡面的文字會以真正可選取的文字出現在圖片下方。可選 12 種語言——繁體中文、簡體中文、英文、日文、韓文、西班牙文、法文、德文、葡萄牙文、俄文、義大利文、越南文——中日韓文件還可勾選「同時辨識英文」,夾雜英文名和數字的中文合約一次讀完。多張圖片可以一起拖入,逐張辨識並顯示進度;結果框可編輯,複製前順手改掉個別錯字。

辨識用的是 Tesseract——HP 和 Google 先後開發的開源 OCR 引擎——編譯成 WebAssembly,在瀏覽器的 Worker 執行緒裡執行。辨識前每張圖會自動整理:轉灰階、小圖放大(手機截圖和低解析度掃描檔受益最大)、透明底鋪白。引擎和你選的語言模型只下載一次——約 4 MB 加每種語言 1–3 MB——之後快取;圖片本身從不離開裝置,這對身分證、合約、病歷很重要。

怎麼用

先選文字的語言——這是影響準確率最大的單一因素——中日韓文件裡有拉丁文字的話保持勾選「同時辨識英文」。拖入、貼上或選擇圖片。等進度條走完;第一次執行還要載入引擎。看結果框:旁邊的信心度是引擎自己的估計,低於 80% 左右的值得檢查一下。需要就地修改,然後「複製」文字或「下載」為 .txt;「複製全部」和「全部下載」處理整批(多個檔案打包成 ZIP)。

版面:「自動」偵測欄和區塊,適合掃描頁和照片;「單欄」把整張圖當作一列文字,對聊天記錄截圖、程式碼和簡單清單更穩。文件是 PDF 的話,先用PDF 轉圖片,一鍵把頁面送到這裡。歪斜的照片先過圖片旋轉圖片裁切辨識效果更好。

常見地雷

OCR 辨識的是印刷體;手寫、花體字和雜亂背景上的文字會辨識成亂碼,任何瀏覽器工具都改變不了這一點。準確率主要取決於照片:讓頁面填滿畫面、放平、放正,光線均勻,避免陰影和反光,拖入前不要縮小圖片——1200 萬像素拍的 A4 頁最理想,600 像素的縮圖沒有希望。語言選錯是產生亂碼的另一大原因:日文頁面按中文讀、法文按英文讀,都會得到看似合理的垃圾。

表格會變成沒有格線的文字行;雙欄排版在「單欄」模式下可能交錯——這類用「自動」。周圍沒什麼文字的數字(發票、水表讀數)辨識得不錯,但永遠值得核對,因為 6 和 8 對機器來說也很像。裝置第一次使用要下載引擎和一個語言模型,需要連網一次;之後離線可用。手機上處理大批量會慢——每頁幾秒是正常的。

背景知識:文字是怎麼被辨識的

Tesseract 目前的引擎是一個 LSTM 神經網路,把一行像素當作序列讀入、輸出字元,每種語言分別用數百萬行印刷文字訓練。頁面先做版面分析——文字區塊、行、詞在哪裡——再把每一行正規化到固定高度送進網路。這裡用的模型是 tessdata_best 量化到 8 位元整數的版本:準確率與全精度模型相同,體積只有幾分之一,這才讓自託管全部 12 種語言可行。

一切在 WebAssembly 裡執行,瀏覽器支援時啟用 SIMD 加速(目前所有瀏覽器都支援),放在 Worker 裡頁面依然流暢。預處理在頁面的 canvas 上完成:轉灰階去掉顏色雜訊,小圖放大到長邊約 2000 像素,讓字母落入網路訓練時的尺寸範圍。像素不傳送到任何地方;引擎和模型快取後頁面離線也能用。

哪些場景需要圖片轉文字

從別人寄來的截圖裡複製一段話。把拍下的白板、投影片或書頁變成筆記。從掃描的信件或只有圖片的老 PDF 裡取出文字。從照片裡擷取地址、訂單號或序號。把收據和發票數位化做帳。讀出另一種文字的菜單、招牌或標籤,貼進翻譯器。讓錯誤訊息的截圖可以搜尋。從只有照片的論文裡摘引文。

本站的流程是:需要的話先旋轉裁切照片,在這裡辨識文字;PDF 先過PDF 轉圖片。文字核對完,照片可以用圖片轉 PDF合成文件。

常見問題

我的圖片會上傳嗎?

不會。辨識由編譯成 WebAssembly 的 Tesseract 在瀏覽器裡執行,圖片不離開裝置。引擎和語言模型下載一次並快取,之後離線可用。

支援哪些語言?

繁體中文、簡體中文、英文、日文、韓文、西班牙文、法文、德文、葡萄牙文、俄文、義大利文、越南文。中日韓可與英文一次同時辨識。

能辨識手寫嗎?

不能——只辨識印刷體。手寫、花體字和雜亂背景上的文字,本工具和任何瀏覽器 OCR 都無法可靠辨識。

怎麼提高準確率?

選對語言,用清晰、光線均勻、擺正的全解析度照片,並裁到文字區域。小圖或模糊圖會自動放大,但無法變清晰。

能辨識 PDF 嗎?

先用 PDF 轉圖片工具把頁面轉成圖片送到這裡,每頁得到一個可編輯的文字區塊。