SNA*_*NAG 9 pdf file-format text-analysis
我有一个PDF文件,其中包含有价值的文字信息.
问题是我无法提取文本,我得到的只是一堆乱码.如果我将PDF阅读器中的文本复制并粘贴到文本文件中,也会发生同样的情况.即使文件 - >在Acrobat Reader中另存为文本也会失败.
我已经使用了所有可以拿到的工具,结果是一样的.我相信这与字体嵌入有关,但我不知道到底是什么?
我的问题:
Bob*_*sky 24
生成的某些PDF文件没有对从中成功提取文本至关重要的特殊信息.即使是Adobe工具.基本上,这些文件不包含字形到字符映射信息.
这些文件将被正确显示和打印(因为字符的形状被正确定义),但是不能正确地复制/提取它们的文本(因为没有关于使用的字形/形状的含义的信息).
例如,当使用"最小文件大小"预设时,Distiller会生成此类文件.
除了OCR之外,没有其他方法可以从这些文件中检索文本,我担心.
最初的答案提到了"关于使用的字形/形状的含义的信息".此信息应包含在称为/ToUnicode表的PDF结构中.对于作为子集嵌入的每种字体都需要这样的表,并使用非标准(Custom)编码.
为了快速评估文本内容的可提取性,您可以使用pdffonts命令行实用程序.这将以表格形式打印有关PDF使用的每种字体的一系列项目./ToUnicode表格的存在由列标题表示uni.
一些示例输出:
$ kp@mbp:git.PDF101.angea> pdffonts handcoded/textextract/textextract-good.pdf
name type encoding emb sub uni object ID
------------------------ ----------- ---------- --- --- --- ---------
BAAAAA+Helvetica TrueType WinAnsi yes yes yes 12 0
CAAAAA+Helvetica-Bold TrueType WinAnsi yes yes yes 13 0
$ kp@mbp:git.PDF101.angea> pdffonts handcoded/textextract/textextract-bad1.pdf
name type encoding emb sub uni object ID
------------------------ ----------- ---------- --- --- --- ---------
BAAAAA+Helvetica TrueType WinAnsi yes yes no 12 0
CAAAAA+Helvetica-Bold TrueType WinAnsi yes yes no 13 0
$ kp@mbp:git.PDF101.angea> pdffonts handcoded/textextract/textextract-bad2.pdf
name type encoding emb sub uni object ID
------------------------ ----------- ---------- --- --- --- ---------
BAAAAA+Helvetica TrueType WinAnsi yes yes yes 12 0
CAAAAA+Helvetica-Bold TrueType WinAnsi yes yes no 13 0
Run Code Online (Sandbox Code Playgroud)
将good.pdf让你正确地提取文本内容为两种字体,因为这两种字体有一个附带的/ToUnicode表格.
对于bad1.pdf和,bad2.pdf文本提取只对两种字体中的一种成功,而另一种则失败,因为只有一种字体有一个/ToUnicode表.
我,Kurt Pfeifle,最近创建了一系列手工编码的PDF文件,以演示/ToUnicodePDF源代码中现有的,错误的,操纵的或缺失的表的影响.这些PDF经过广泛评论,适合在文本编辑器的帮助下进行探索.以上pdffonts输出示例是在这些手动编码文件的帮助下创建的.(还有一些PDF显示不同的结果,有兴趣的读者可能想要探索...)
SNA*_*NAG 11
我去了很多人寻求帮助,OCR是解决这个问题的唯一方法