PyPDF2 无法读取非英文字符,returns extractText() 上的空字符串

PyPDF2 can't read non-English characters, returns empty string on extractText()

我正在编写一个脚本,该脚本将从大型 PDF 文件(40-60 多页,长页数) 中提取数据 不是英语 但文件包含 希腊字符 并且在我 运行 extractText() 函数之前一切看起来都很好PyPDF2 获取给定页面内容,然后它 returns 一个空字符串。

我是这个库的新手,我不知道该怎么做才能解决这个问题!!

PyPDF2 的 "Extract Text" 看起来要么工作正常,要么完全失败。没有您可以传递的参数来尝试让事情正常工作。要么行,要么不行。

您可能无法解决此问题。如果您可以成功 copy/paste Acrobat/Reader 中的文本,则可以提取文本。那么当您尝试从 Reader 中 copy/paste 时会发生什么?不要尝试使用其他第三方 PDF 查看器,请使用 Adob​​e 软件。您可能不得不放弃 PyPDF2 并转向其他一些 PDF API,但如果 Reader 可以做到,这是一个可以解决的问题。

PDF 中有三种不同的东西在人眼中看起来像字母。

  1. PDF 中的字母采用某种文本编码。有几种固定编码,而且 PDF 允许您嵌入自己的自定义编码(通常与字体子集一起使用)。软件可以创建看起来不错但实际上无法 copy/pasted 的 PDF,即使是 Adob​​e。
  2. 恰好看起来非常像字母的路径艺术。 "Start drawing a line here, draw a straight line to there, then a curve like this to there" 等等。如果您好奇的话,PDF 使用 Bezier curves 来定义它的曲线。与您的问题关系不大,但很有趣。
  3. 定义像素网格的位图(。jpeg/gif/etc 图像)。

过去,Reader 只能处理上述类型 1 的文本,而且前提是文本编码正确。损坏的自定义编码非常普遍(或者 7 多年前我停止使用 PDF 软件时)。

对于损坏的类型 1,以及所有类型 2 和类型 3,您唯一能做的就是 运行 在 PDF 上进行 OCR。 OCR:光学字符识别。有几个开源 OCR 项目,以及商业项目。