我试图更好地理解PDF如何存储文本。一般来说,当从MS Word(或我的SQL Server Reporting Services)等应用程序创建PDF时,PDF如何存储文本?我希望在这个特定场景中生成的文档不会像原始PDF文档是从图像创建的那样进行OCR。
为了更详细一些,我试图了解PDF文本提取器的工作原理。我对PDF的初步了解是,它存储了(PostScript)有关如何将文档的“图像”绘制到页面或打印机的指令,并且文档本身中没有包含实际文本。随后,我认为文本提取器可能会对这些指令进行反向工程,以生成PDF本来会生成的文本。不过,我对此并不自信。
答案 0 :(得分:6)
PDF包含几种不同类型的对象;不仅是矢量或光栅绘图指令。特别是文本由文本元素表示。其中包括应使用特定字体在特定位置绘制的字符串。
从PDF中提取文本可能是一件复杂的事情,因为文件格式是面向页面布局的。文本元素可以是整个段落,也可以是单个字符。如果混合不同的字体,即使单个单词也可能由多个文本元素组成。而且,字符不一定用诸如Unicode的标准编码来编码。它们可能以特定字体的特定方式编码。
如果您足够幸运地处理 Tagged PDF 文件,例如PDF/A或PDF/UA,文本提取可以更容易,因为文本跨度被识别为,并定义了到Unicode字符的映射。
维基百科没有完整的规范,但确实作为简介:http://en.wikipedia.org/wiki/Portable_Document_Format#Text