尝试获取字数时此 PDF 有什么问题

What is wrong with this PDF when trying to get a word count

我正在尝试编写一个 python 应用程序来统计 PDF 的字数。

虽然我 运行 对这个 PDF 感到奇怪。

当我从 PDF 中提取文本时,它显示为某种 binary/symbol 垃圾。

我尝试了 PyPDF2PyMuPDF 库,结果相同。

如何计算此类 PDF 的字数?

这是文件。 https://www.dropbox.com/s/hdgqd70l0kcayvo/mhr.pdf?dl=0

该 PDF 缺少文本提取所需的信息。因此,尝试从中提取文本通常会输出垃圾。

详细

该 PDF 中的文本是使用既不公开 ToUnicode 映射也不公开具有标准化名称的编码的字体绘制的。它也不用 ActualText 属性标记内容。此外,字符代码的天真身份映射到例如Latin-1 也不会产生任何可理解的结果。

因此,根据 PDF 规范 ISO 32000(第 1 部分和第 2 部分)中提出的算法进行文本提取将针对每个字符通向

If these methods fail to produce a Unicode value, there is no way to determine what the character code represents in which case a conforming reader may choose a character code of their choosing.

(ISO 32000-1,第 9.10.2 节将字符代码映射到 Unicode 值)

你可以看到,Adobe Acrobat 也不喜欢这样,应用复制和粘贴。

不过,在某些此类情况下,深入研究嵌入式字体会发现到 Unicode 的替代映射,一些文本提取器确实会使用它们。

尽管如此,这种方法在这里也无济于事,字体是 3 类字体,即不基于某些普通字体格式(例如 TrueType),而是完全使用 PDF 矢量图形序列定义,而无需进一步映射到Unicode.

因此,如果没有某种程度的 OCR(人工或自动化),就无法从此 PDF 中提取文本。

旁白

如果此文档确实是由某些 U.S 以当前形式发布的。部门(而不是应用于其原始文档的某些转换工具的输出),您可能想联系该部门并讨论可访问性和第 508 节等主题...