如何以编程方式确定PDF是否可搜索?

use*_*889 6 python pdf bash pdftk

我有一个CSV,其中包含带有PDF的网址列表:

  • 其中一些PDF是可搜索的.
  • 其中一些PDF文件无法搜索.

我想确定哪些PDF可以从我的PDF列表中搜索到.是否有捷径可寻?

Kur*_*fle 6

在命令行上,我将使用pdffonts确定文件使用的字体.这运行得相当快......

示例1:包含文本的PDF

pdffonts bash-manpage.pdf 

  name                            type          encoding        emb sub uni object ID
  ------------------------------- ------------- --------------- --- --- --- ---------
  Times-Roman                     Type 1        Custom          no  no  no       8  0
  Times-Bold                      Type 1        Standard        no  no  no       9  0
  Helvetica                       Type 1        Custom          no  no  no      11  0
  Helvetica-Bold                  Type 1        Standard        no  no  no      30  0

示例2:仅包含图像的PDF

pdffonts scanned-book.pdf

  pdffonts handmade.pdf 
  name                            type           encoding       emb sub uni object ID
  ------------------------------- -------------- -------------- --- --- --- ---------

  1. 示例1显示了一个包含字体名称的表.这意味着IS文本进行搜索.

  2. 示例2显示了一个空表.没有字体,没有要搜索的文本(除非你在文件上运行OCR首先嵌入任何找到的文本......但是你创建了一个不同的文件!),不要回头看看这些......

注意:要成功地实际提取嵌入的文本,因此能够搜索它是一个完全不同的问题.有很多情况下,你会发现它是非常困难的-特别是如果你在字体看到表的字体类型,如CID Type'自定义’的编码.您可能首先要搜索stackoverflow以查询有关从PDF 文本提取的其他问题 ...

  • @mkl:如果您想要 100% 确定有关以编程方式+自动分析的 PDF 的指示,请转到不同的宇宙。你不能在这里吃。在这里,我们只处理高达 99% 的确定迹象。我将能够*手工制作*一个PDF,在页面上显示“你在天堂”文本,但如果你以编程方式处理它,则会提取“你在地狱”。*this* Universe 中超过 99.99% 的现实世界 PDF 是由不输出 *this* 类型的废话,并且不嵌入从未使用过的字体的工具以编程方式创建的。 (2认同)