2024-04-19 09:35:12 发布
网友
我正在尝试编写一个python应用程序,以便为PDF计算字数
不过,我在这个PDF中遇到了一些奇怪的事情
当我从PDF中提取文本时,它显示为某种二进制/符号垃圾
我尝试了PyPDF2和PyMuPDFlibs,得到了相同的结果
PyPDF2
PyMuPDF
我怎样才能得到像这样的PDF的字数
这是文件。 https://www.dropbox.com/s/hdgqd70l0kcayvo/mhr.pdf?dl=0
该PDF缺少文本提取所需的信息。因此,试图从中提取文本通常会产生垃圾。
该PDF中的文本使用的字体既不显示ToUnicode地图,也不显示标准化名称的编码。它也不使用ActualText属性标记内容。此外,字符代码到例如拉丁语-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值)
您可以通过应用copy&;看到Adobe Acrobat也不喜欢这样;粘贴
不过,在某些情况下,深入研究嵌入式字体会找到到Unicode的替代映射,一些文本提取器确实使用它们
尽管如此,这种方法在这里也无济于事,字体是一种类型3字体,即不基于某些正常的字体格式(例如TrueType),而是完全使用PDF矢量图形序列定义,无需进一步映射到Unicode
因此,如果没有某种程度的OCR(人工或自动化),就无法从该PDF中提取文本
如果本文件确实是由美国某些部门以当前形式发布的(而不是应用于其原始文件的某些转换工具的输出),您可能希望与该部门联系,并讨论可访问性和第508节等主题
该PDF缺少文本提取所需的信息。因此,试图从中提取文本通常会产生垃圾。
详细信息
该PDF中的文本使用的字体既不显示ToUnicode地图,也不显示标准化名称的编码。它也不使用ActualText属性标记内容。此外,字符代码到例如拉丁语-1的简单身份映射也不会产生任何可理解的结果
因此,根据PDF规范ISO 32000(第1部分和第2部分)中提出的算法对每个字符进行文本提取将导致该阶段
(ISO 32000-1,第9.10.2节将字符代码映射到Unicode值)
您可以通过应用copy&;看到Adobe Acrobat也不喜欢这样;粘贴
不过,在某些情况下,深入研究嵌入式字体会找到到Unicode的替代映射,一些文本提取器确实使用它们
尽管如此,这种方法在这里也无济于事,字体是一种类型3字体,即不基于某些正常的字体格式(例如TrueType),而是完全使用PDF矢量图形序列定义,无需进一步映射到Unicode
因此,如果没有某种程度的OCR(人工或自动化),就无法从该PDF中提取文本
作为旁白
如果本文件确实是由美国某些部门以当前形式发布的(而不是应用于其原始文件的某些转换工具的输出),您可能希望与该部门联系,并讨论可访问性和第508节等主题
相关问题 更多 >
编程相关推荐