FreePDF logoFreePDF

PDF 文字复制不了或复制出来是乱码?分情况解决

来自 FreePDF 团队 ·

想从 PDF 里复制一段话,结果拖了半天什么都选不中;或者能选中,右键「复制」却是灰的;又或者粘贴出来一串莫名其妙的符号,像文件坏了一样;再不然字都对,可每一行末尾都断开了。这几种情况看着差不多,原因各不相同,解决办法也不一样。

先判断你遇到的是哪一种

  • 一点就选中整页,或者什么都选不中:这一页其实是图片,多半是扫描件。
  • 文字能选中,但「复制」是灰的,或者阅读器提示不允许复制:文件设了权限限制。打开文档属性看「安全性」一栏,通常会写明。
  • 能复制,但粘贴出来是乱码:PDF 内部的字体有问题。
  • 内容没错,只是格式一团糟。

扫描件:页面只是一张图

扫描仪产出的是一张纸的照片。你能看懂上面的字,文件本身却只认识像素,自然没东西可选、可搜。OCR 文字识别会从图像里把字认出来,在每一页背后加一层看不见的文字层。页面看起来和原来一模一样,但现在可以选中、复制和搜索了。

要说明一点:我们的 OCR 只识别英文,中文扫描件识别不出可用的结果。英文材料的话,扫描得清晰、端正、对比度高,效果会比歪着拍的手机照片好得多。不管哪种,数字和人名都要自己再核对一遍。

文件禁止复制

PDF 可以设两种密码。一种是打开密码,不输就打不开文件。另一种是权限密码,谁都能打开,但会要求阅读器禁止复制、打印或编辑。「复制」变灰,就是后者在起作用。

如果是你自己的文档,或者文件所有者允许你使用里面的文字,把它放进 PDF 解密。既然文件打开时没要密码,密码栏留空就行,只设了权限限制的文件这样就能解开,拿到一份去掉保护的副本。要是工具还是提示需要密码,就直接找发文件的人要一份不加限制的版本。付费报告、试卷这类文件上的限制,通常是有意设置的。

粘贴出来是乱码

PDF 里的文字存的是一串编码,每个编码指向嵌入字体里的一个字形。阅读器要把编码还原成文字,得靠文件里的一张对照表。有些软件生成 PDF 时没写这张表,或者用了自定义编码,于是页面显示完全正常,复制出来的却是原始编码。换个阅读器基本没用,因为文件里压根没有这部分信息。

绕过去的办法是 OCR,它看的是字形,不是编码。不过有个坑:我们的 OCR 会跳过已经有文字的页面,免得重复识别,而乱码页也算「有文字」。所以得先把页面变成纯图片:

  1. 用 PDF 转 PNG,分辨率选「高(300 DPI)」。
  2. 用 PNG 转 PDF 把这些图片按页码顺序合回一个 PDF。
  3. 把新文件放进 PDF OCR 文字识别。

得到的是一个类似扫描件、带正常文字层的 PDF。它比原文件大,文字也不再是矢量的,所以原文件留着阅读,OCR 版专门用来复制。上面说过 OCR 只认英文,中文乱码的文件这条路走不通,只能找对方要原始文档,或者换一款支持中文的 OCR 软件。

字都对,就是换行乱了

PDF 并不知道什么是段落,它记录的是摆在页面各个位置上的一行行文字。所以复制时每行末尾都会带一个换行,英文里跨行用连字符断开的单词也还是断开的。十几页这么复制,光是选文字就够折腾。

PDF 转文字会把每一页的文字导出到一个 .txt 文件里,页与页之间空一行。换行依然在,但你只需要集中清理一次。把文字粘进 Word,打开「查找和替换」,点「更多」勾选「使用通配符」:

  • 中文内容:查找 ([!。!?:;」”])^13,替换为 \1。凡是不以句末标点结尾的行,都会跟下一行接上。
  • 英文内容:查找 ([a-z,])^13,替换为 \1 加一个空格。以小写字母或逗号结尾的行会被接上,真正的段落大多以句号结尾,不受影响。

标题这类不以标点结尾的行也会被接到下一段上,所以替换前先存一份副本,或者用「查找下一处」逐个确认。

常见问题

为什么页面上明明有的字,搜索却找不到?

原因和复制失败一样。扫描件上根本没有文字可搜;字体有问题的文件,你搜的是这个字,文件里存的却是别的编码。做过 OCR 之后,搜索就正常了。

去掉复制限制合适吗?

自己的文件当然没问题。别人的文件,得对方同意才行,最省事的做法就是请对方直接发一份不加限制的版本。我们的解密工具不会猜密码,也不会破解密码,只能配合你已经知道的密码使用。

相关免费工具