当然,几乎所有 PDF 都“包含文本”,即具有您可以阅读的文本,但我在这里讨论的是那些只是位图、只能被人类大脑解释为文本的 PDF 之间的区别就计算机而言,查看屏幕,而不是那些还包含文本的屏幕。
对于从纸质文件扫描的 PDF,这种现象可能不明显。有时,您在屏幕上看到的内容看起来像是扫描出来的模糊不完美的文本图片,但事实证明 PDF 已经经过 OCR 处理,因此,即使您看到的是原始的模糊位图,即使您在正常阅读时没有获得 OCR 的好处,嵌入的文本仍然存在,隐藏在文件中。它可能以两种方式出现在 PDF 阅读器中:
尝试用鼠标选择文本。
尝试搜索一个单词。
当然,也可能发生部分文本已被 OCR 但不是全部的情况。
如果上述两个测试结果均为阴性,那么是否可以说“不,此 PDF 不包含嵌入文本”,或者嵌入文本是否仍隐藏在文件中?
例如:
https://pdf.datasheetcatalog.com/datasheets/2300/45014_DS.pdf
据我所知,上面的 PDF 都是位图,没有嵌入文本。这是正确的吗,还是我仍然遗漏了什么?
一种方法是提取文本并测试它是否为空。例如,在
bash
我们有正则表达式
[[:graph:]]
仅匹配可见字符,即除空格、控制字符等之外的任何字符。也许您想要更多的限制和使用[[:print:]]
(可见字符和空格)。mutool
是MuPDF的一部分。当然,您可以使用pdftotext file.pdf -
(frompoppler-tools
) 代替,或任何其他。