Mupdf:在 PDF 文件中查找连字符的单词

Mupdf:在 PDF 文件中查找连字符的单词

当我使用 .pdf 在 PDF 文件中搜索单词时mupdf。它只能找到整个单词。例如,搜索单词“meaningless”将找到整个单词:

This is a short, staggeringly meaningless sentence.

我无法提前知道一个单词是否被分成两行——因此:用连字符连接——或没有。明确地搜索连字符也太麻烦了。然而,当一个单词在行尾换行时,就找不到它了。搜索“meaningless”将找不到此示例中的单词:

This is a short, staggeringly meaning-
less sentence.

PDF 查看器“Evince”的行为方式相同。有没有一种(简单)方法可以让“Mupdf”找到连字符的术语?

答案1

请注意,PDF 不包含原始文本,而是包含字形放置位置的说明。在 PDF 中搜索文本取决于 (1) PDF 具有描述哪些字形对应于哪些 unicode 字符的表格 (2) 将这些翻译后的字符重新组装成单词的方法 (3) 关于生成应用程序如何工作的假设,例如按文本顺序放下字形(例如,当两列文本同时在两列中呈现时,这将严重失败)。

要考虑连字,您必须实现一种算法来检测行尾的破折号(可以使用不同的字形),然后合并单词(并考虑有关连字的特殊规则,例如德语ck)。

所以是的,这是可以做到的,但并不容易,而且无论如何它只适用于某些语言/脚本。

答案2

在 PDF 中搜索单词实际上是查看器的一项功能。因此,每个观看者都会采取不同的方法来处理它的工作。在实践中我发现奥库拉是我测试过的所有 PDF 查看器中的最佳选择。据我所知,Mupdf 无法处理带连字符的单词。

答案3

我不知道如何在 MuPDF 中执行此操作,但获取这些行/匹配的一种方法是使用pdftotext

 pdftotext file.pdf - | grep 'meaningless'

默认情况下,pdftotext 取消行之间的连字符。

答案4

Evince 从版本 43 开始支持此功能(查找在行尾分开的单词,无论是否有连字符)。

相关内容