当一种类型Ctrl+F
时,pdf读者如何找到特定的单词/表达式?
是否有比线性搜索更快的算法来执行此类任务?
答案 0 :(得分:5)
搜索算法在PDF中查找单词的速度与所使用的特定算法几乎没有关系,并且更依赖于使用什么算法来确定哪一组绘图指令构成一个单词他们应该进入什么样的顺序。一些PDF创建工具将创建一条指令,将整行文本设置为单个指令,每个单词之间有空格。但是,如果在创作工具中将任何类型的非标准间距应用于该行,则PDF可以逐字符地放置每个单词,而根本不包含空格。还有一些人会试图避免加载字体和创建PDF的内存负担,使得所有普通文本首先被渲染,然后是所有粗体文本,然后是所有斜体文本,字体逐字体。因此,如果您只是按照绘制的顺序提取文本,那么您将无法获得真正的阅读顺序。
更好的工具需要更长时间才能完成此过程。在那之后,搜索的时间是微不足道的。
答案 1 :(得分:1)
它随着不同的PDF阅读器而变化,但我猜这是一些已知的快速字符串匹配算法(可能是Rabin-Karp algorithm,Boyer-Moore algorithm或KMP algorithm)可能并行运行文档页面一次。对于短文本字符串,这应该非常非常快。
并且他们很可能使用他们自己的上述算法的混合/修改算法。