PDF 無法複製文字?四種原因與解法
由 FreePDF 團隊撰寫 ·
想從 PDF 複製一段文字,拖了半天卻什麼都選不起來;或是選得到,按右鍵「複製」卻是灰色的;又或者貼上後跑出一串看不懂的符號,好像檔案壞掉;再不然字都沒錯,只是每一行尾巴都斷開。這幾種狀況看起來差不多,原因各不相同,處理方法也不一樣。
先確認是哪一種狀況
- 一點就選到整頁,或者完全選不到:這一頁其實是一張圖,多半是掃描檔。
- 文字選得起來,但「複製」是灰的,或閱讀器說不允許複製:檔案設了權限限制。打開文件內容看「安全性」那一欄,通常會寫得很清楚。
- 可以複製,貼上卻是亂碼:PDF 裡面的字型有問題。
- 內容正確,只是格式亂成一團。
掃描檔:整頁只是一張圖
掃描器產生的是紙張的照片。你看得懂上面的字,檔案本身卻只認得像素,當然沒有東西可以選取或搜尋。OCR 文字辨識會從影像裡把字讀出來,在每一頁後面加一層看不見的文字層。頁面外觀完全不變,但現在可以選取、複製和搜尋了。
要先說清楚:我們的 OCR 只辨識英文,中文掃描檔在這裡辨識不出東西。英文資料的話,掃得清楚、擺得正、對比度高,效果會比歪斜的手機照片好很多,但數字和人名無論如何都要自己再核對。中文掃描檔可以在自己的電腦上用 ocrmypdf 搭配 Tesseract 的繁體中文語言包(chi_tra)來處理。
檔案禁止複製
PDF 可以設兩種密碼。一種是開啟密碼,沒輸入就打不開。另一種是權限密碼,任何人都能開啟,但會要求閱讀器禁止複製、列印或編輯。「複製」變灰色,就是後者在作用。
如果是你自己的文件,或檔案的擁有者同意你使用裡面的文字,把它丟進 PDF 解密。既然檔案打開時沒有要求密碼,密碼欄留空即可,只設了權限限制的檔案這樣就能解開,拿到一份移除保護的副本。如果工具還是說需要密碼,就直接請寄檔案給你的人提供不設限制的版本。付費研究報告、考卷這類檔案上的限制,通常是刻意設的。
貼上變成亂碼
PDF 裡的文字其實存成一串代碼,每個代碼對應到內嵌字型裡的一個字形。閱讀器要把代碼還原成文字,得靠檔案裡的一張對照表。有些軟體產生 PDF 時沒寫進這張表,或用了自訂編碼,結果畫面顯示完全正常,複製出來的卻是原始代碼。換閱讀器幾乎沒用,因為檔案裡根本沒有這份資訊。
繞過去的方法是 OCR,它看的是字形而不是代碼。不過有個陷阱:我們的 OCR 會略過已經有文字的頁面,避免重複辨識,而亂碼頁也算「有文字」。所以要先把頁面轉成純圖片:
- 用 PDF 轉 PNG,解析度選「高(300 DPI)— 列印品質」。
- 用 PNG 轉 PDF,依頁碼順序把這些圖片合回一個 PDF。
- 把新檔案丟進 PDF OCR 文字辨識。
這樣會得到一份像掃描檔、但帶有正常文字層的 PDF。它比原檔大,文字也不再是向量,所以原檔留著閱讀,OCR 版專門拿來複製。前面提過 OCR 只認英文,中文亂碼檔走這條路沒有用,只能跟對方要原始檔案,或改用支援中文的 OCR 軟體。
字都對,只是換行亂了
PDF 不知道什麼叫段落,它記錄的是擺在頁面各個位置上的一行一行文字。所以複製時每一行後面都會帶著換行,英文跨行用連字號斷開的單字也維持斷開。十幾頁這樣複製,光選取就很折騰。
PDF 轉文字會把每一頁的文字匯出成一個 .txt 檔,頁與頁之間空一行。換行還在,但你只需要集中清理一次。把文字貼進 Word,打開「尋找及取代」,按「更多」勾選「使用萬用字元」:
- 中文內容:尋找 ([!。!?:;」』])^13,取代為 \1。不是以句尾標點結束的行,都會跟下一行接起來。
- 英文內容:尋找 ([a-z,])^13,取代為 \1 加一個空格。以小寫字母或逗號結尾的行會被接上,真正的段落大多以句點結束,不受影響。
標題這種沒有標點的行也會被接到下一段,所以取代前先存一份副本,或用「尋找下一筆」逐一確認。
常見問題
為什麼頁面上看得到的字,搜尋卻找不到?
原因跟複製失敗一樣。掃描檔上本來就沒有文字可搜;字型有問題的檔案,你搜的是這個字,檔案裡存的卻是別的代碼。做完 OCR 之後,搜尋就正常了。
解除複製限制可以嗎?
自己的檔案當然沒問題。別人的檔案要對方同意才行,最省事的做法就是請對方直接給一份沒有限制的版本。我們的解密工具不會猜密碼,也不會破解密碼,只能搭配你已經知道的那組密碼使用。