PDF复制文本问题:奇怪的字符

时间:2019-04-02 15:24:06

标签: pdf copy-paste

我试图从PDF文件复制文本,但得到一些奇怪的字符。奇怪的是,Okular可以重新识别文本,但不能使用Sumatra PDF或Adobe,这三个应用程序都安装在Windows 10 64位中。为了更好地解释我的问题,下面是视频https://streamable.com/sw1hc。 “文本层解决方法文件”是我得到的一种解决方案。任何帮助是极大的赞赏。问候

1 个答案:

答案 0 :(得分:4)

简而言之:(原始)PDF不包含PDF规范中描述的常规文本提取所需的信息。根据任务的确切性质,您可以尝试将所需信息添加到现有文本对象和字体中,或者可以使用OCR。

按照PDF规范中的描述将字符代码映射为Unicode

PDF规范ISO 32000-1(以及类似的ISO 32000-2)也描述了一种算法,该算法使用直接在PDF内部可用的信息将字符代码映射到Unicode值。

它在其他堆栈溢出答案中经常被引用(请参阅hereherehereherehere或{{3 }}),因此在此不再赘述。

从本质上讲,这是Adobe Acrobat在复制和粘贴以及其他许多文本提取器中使用的算法。

在不包含文本提取所需信息的PDF中,您最终会在算法中达到这一点:

  

如果这些方法无法产生Unicode值,则无法确定字符代码代表什么,在这种情况下,合格的读者可以选择自己选择的字符代码。

如果上述算法无法产生Unicode值会发生什么

这是文本提取实现的不同之处,他们尝试通过使用PDF之外的启发式方法或信息或将OCR应用于相关字形来确定匹配的Unicode值。

您尝试过的不同程序返回的结果如此不同

  1. 您的PDF不包含PDF规范和

  2. 中上述算法所需的信息
  3. 这些程序使用的启发式方法相关地有所不同,Okular的启发式方法最适合您的文档。

在这种情况下该怎么办

有多种选择,或多或少取决于您的具体情况:

  1. 向PDF来源询问包含正确文本提取信息的版本。

    除非您与该来源有一项合同,要求他们以机器可读的形式提供PDF,否则该来源通常有义务这样做,尽管如此... < / p>

  2. 将OCR应用于相关PDF。

    取决于OCR软件的质量和PDF中的字形,结果的质量可能令人怀疑;例如在您的“ PDF复制文本问题-文本层workaround.pdf”标题中,标题“第1章:衍生证券”被识别为“第1章:Deratve Securites” ...

  3. 您可以尝试将手动创建的 ToUnicode 映射交互式添加到PDF,例如如hereTilman Hausherrhis answer中所述。

    取决于创建映射所必须使用的不同字体的数量,此方法可能很容易需要太多时间和精力...