掃描 PDF 看得到字,卻不能搜尋或複製,先檢查它有沒有可讀的文字層。 對要整理公司 SOP 的台灣行政人員,這一步比直接換 AI 模型更有用:先把兩三頁測到能搜尋、複製並對上原文,再擴大處理整批文件。
OCR 是從圖片辨識文字;一般 PDF 文字擷取則讀取檔案裡已有的字。兩者處理的問題不同。本文選用本機命令列工具 OCRmyPDF,前提是你能安裝程式與語言資料;如果只偶爾處理一張掃描件,也可先用現有 PDF 軟體的辨識文字功能,沿用本文的驗收方法。
先分清楚:沒有文字,還是文字已經錯了?
先在幾個不同頁面搜尋看得見的詞,再選取一小段貼到純文字編輯器。能框選不代表讀對,尤其是姓名、日期、中英混排與表格。依 pypdf 的文字擷取文件,PDF 可以是原生文字、純掃描圖片,或圖片加上 OCR 文字層;pypdf 本身不會辨識圖片中的文字。
如果搜尋找得到詞、複製後也正確,先保留已有文字,不必為了「用 AI」重做 OCR。看得到字卻完全找不到、複製不出來,再檢查是否為圖片頁。
若可以選取,貼出來卻是亂碼或錯字,先找原始電子檔。這可能是字碼或舊 OCR 問題;單純跳過已有文字的頁面,不會修好這類錯誤。
2026 年 10 月 4 日,本站用 Python 3.12.14、pypdf 6.10.0 製作並檢查三份虛構繁中文件。文字原生版擷取到 45 個字元;把同一頁轉成圖片再包成 PDF,擷取結果是 0;兩頁混合版則第一頁 45、第二頁 0。三者已實際轉成圖片核對,內容外觀一致。
這個小測試只確認「看起來相同,不代表有相同文字層」,沒有執行 OCR 辨識,也不能當作繁中準確率評測。你若會用 Python,可安裝 pypdf 後,對自己的測試副本逐頁看是否有可擷取內容:
from pypdf import PdfReader
for number, page in enumerate(PdfReader("sample.pdf").pages, 1):
text = (page.extract_text() or "").strip()
print(number, len(text), repr(text[:80]))
空字串是待檢查訊號,不是「一定掃描件」的診斷;空白頁、解析失敗或特殊字碼也可能造成空結果。有字數時仍要看文字是否正確。這段程式是在讀文字,並沒有替你做 OCR。
用 OCRmyPDF 補繁中文字層,先選對處理模式
OCRmyPDF 專案的用途,是替掃描 PDF 加入可搜尋、可複製的 OCR 文字層。它是開源工具,主專案標示 MPL-2.0;正式整合時,仍要分別核對 Tesseract、其他依賴與模型資料的授權。本機處理不按雲端 OCR API 次數計費,但電腦、儲存、處理時間與人工複核仍有成本。
先依官方安裝文件完成環境。macOS 的 Homebrew 路線可用 brew install ocrmypdf,再裝 tesseract-lang 語言資料。Windows 可沿官方 WSL/Ubuntu 路線安裝 OCRmyPDF,並用系統套件管理器加裝繁中與英文 Tesseract 語言包;原生 Windows 則依官方流程另處理 Tesseract 等依賴,不能假設只裝 Python 套件就齊全。
執行 ocrmypdf --version 與 tesseract --list-langs,先確認命令可用,語言清單有 chi_tra 和 eng。下面的命令要在完成安裝的環境中執行;若你用 WSL,請在 Ubuntu 終端機進入測試檔所在資料夾,別直接把 Windows 路徑貼進去。
Tesseract 語言表區分 chi_tra(繁體中文)與 chi_sim(簡體中文)。台灣中英混排文件可先以 chi_tra+eng 測試;語言資料有安裝、影像清晰度足夠,才有必要往下一步調參數。
先複製兩三頁代表性文件,保留原件,輸出使用新檔名:
ocrmypdf -l chi_tra+eng --skip-text --output-type pdf sample.pdf searchable.pdf
依 Advanced features,--skip-text 會跳過已有文字的整頁,適合先處理原生頁與純圖片頁混在一起的文件。但如果一頁已有頁碼,正文仍全是掃描圖,這個跳過規則就可能讓正文沒有被辨識;要回到逐頁檢查,不能只相信命令結束。
下面三種模式要依文件狀態擇一使用,不要把它們疊在同一個命令裡:
| 模式 | 用在什麼問題 | 要注意什麼 |
|---|---|---|
--skip-text | 保留已有文字的頁面,補其他圖片頁 | 不是只跳過頁內個別文字區域 |
--redo-ocr | 嘗試重做舊的隱藏 OCR 層 | 某些舊 OCR 的表示方式無法被辨識並替換 |
--force-ocr | 其他路徑無效,才評估強制重做 | 會把頁面內容光柵化,表單與互動物件可能被攤平 |
目前官方 17.x 文件也提供 --mode skip、--mode redo、--mode force,舊旗標仍是相容別名。本文的 OCR 命令已按官方語法查核,沒有在本站環境執行繁中辨識;請先以自己的非敏感小樣本驗證,不能拿這篇當任何掃描件的成功保證。
驗收搜尋、文字與版面,再交給 AI
打開 searchable.pdf 後,搜尋原文中的兩三個詞,複製同一段,比對日期、否定詞、型號及數量,再看紙面影像有沒有轉歪、裁掉或失去細節。若「週五」讀成「週四」,摘要再流暢都不能補救錯誤來源。
想另輸出文字,可加 --sidecar ocr.txt。但 Cookbook明確說明:sidecar 只收本次 OCR 得到的文字,原本已有文字、被跳過或超時的頁面不一定在裡面。混合文件需要全文時,應再從輸出的 PDF 擷取並逐頁核對,不能把 sidecar 少了一頁誤認為原文件沒寫。
已經數位簽署的 PDF 另當別論。官方說明 OCRmyPDF 無法在保留數位簽章的同時加入 OCR,預設會拒絕修改。保留簽署原件,另準備閱讀或檢索副本;不要為了排除錯誤就解除保護並覆蓋正式文件。
需要的頁面都能搜尋、複製並對上原文後,再把新副本交給 LM Studio 文件問答或 AnythingLLM 工作區,重新匯入並要求回答附原文。模型仍可能誤解欄位,OCR 也不會自動把表格變成正確 CSV。
有大量低品質照片、直排字或表單時,再看 PP-OCRv6 模型選型;只是要摘要可讀文件,就回到 AI PDF 工具比較。客戶資料若不能離開公司環境,除了 OCR 本機執行,也要確認後續模型、同步資料夾與上傳服務的去向。我會先把文字層修好,再談模型能力:這個順序能讓漏頁與錯字有地方查,而不只是重問同一個問題。
FAQ
掃描 PDF 看得到字,為什麼 AI 或搜尋找不到?
它可能只有文字的圖片,沒有可擷取文字;也可能有不正確的 OCR 層。先逐頁測搜尋、複製及原文,確認問題再選處理模式。
繁中 OCR 是把語言設成 chi_tra 就會成功嗎?
還要安裝對應的 Tesseract 語言資料,並檢查影像品質、版面與關鍵字。中英混排可先試 chi_tra+eng,但仍要用自己的文件核對。
OCRmyPDF sidecar 文字檔能直接當整份 PDF 全文嗎?
不能一律這樣用。sidecar 可能不含原生文字頁、跳過或超時的頁面。混合文件需要完整文字時,從輸出 PDF 再擷取並逐頁驗證。
參考來源
- pypdf:Extract Text from a PDF(2026-10-04 查核;未標發布日)
- GitHub:OCRmyPDF(2026-10-04 查核;未標發布日)
- OCRmyPDF:Installing OCRmyPDF(2026-10-04 查核;未標發布日)
- Tesseract:Languages/Scripts supported in different versions of Tesseract(2026-10-04 查核;未標發布日)
- OCRmyPDF:Advanced features(2026-10-04 查核;未標發布日)
- OCRmyPDF:Cookbook(2026-10-04 查核;未標發布日)