我使用less
它pdftotext
从 pdf 文件中提取文本,通过less my.pdf
.这样,有些单词的字母之间用空格隔开一个pdf文件。
CH APTE R 2 5 T E ST IN G WE B A P P LIC AT IO N S 540
有些人声称 Adobe Reader 没有问题。我没有程序来验证这一点。但我有兴趣知道Linux中哪些软件程序可以正确提取单词?
答案1
PDF 及其姊妹篇 PostScript 是用于创建每次在任何设备(显示器、打印机、印刷机等)上再现相同输出的文档的语言。因此,它允许文档的创建者单独指定每个字符属性。如果不看你的文档,我只会猜测创作者分隔字符的原因。最常见的原因是字距调整。这是调整字符之间间距的地方。
你很幸运,角色实际上是按顺序排列的。创作者没有理由不能重新排列角色,使它们完全失序。尽管它们看起来像页面上的单词,但在您的情况下,它们不是 PDF 代码中的单词。
答案2
pdf
被排版以产生视觉输出,甚至不严格要求包含文本信息。将其想象为一块印有铅字的印刷板。每个字母都是一个具有绝对位置、大小和风格的盒子。所有图像也是如此。如果里面有数学公式,你就能看出问题出在哪里:谁说文本是线性的?你有一堆混乱的字形,每个字形的位置和大小都是原始创建者的意图。
您有可能从中得到一些与真实文本相似的内容,因为它pdf
是后记的精简(和升级/调整)版本,并且仍然具有一次“打印”较长字符串的命令(然后将其显示给带有嵌入字体的指定样式)。这就是你得到的pdftotext
。尽管如此,如果原始应用程序的输出将其拆分为单词或字母以实现所需的视觉外观,则换行符、空格等可能会令人困惑。
如果文本被转换为贝塞尔曲线,或者文档被扫描,那么您就不走运了。许多现代观众都具有 OCR 功能,因此一些基本形式的搜索和选择仍然适用于它们。但不要指望得到格式良好的输出 - 文本提取主要是逆向工程。
需要一个更加结构化的文档来正确处理这个问题——既包含语义内容,又包含固定的设备无关的显示功能。我们没有那个。html
不适合分页输出,并且在这方面oxps
也好不了多少。pdf