从扫描的 pdf 中提取文本

text extract from scanned pdfs

我的问题是我有一堆 PDF 文件,我想将它们转换为文本文件。其中一些是纯 PDF,而另一些则在其中扫描了页面。我正在 python 中编写程序,因此我使用 pdftotext 将它们转换为 TXT。

我正在使用下面的命令

filename = glob.glob(src)  //src is my directory with my files 
    for file in filename:
        subprocess.call(["pdftotext", file])

我想问的是,是否有一种方法可以在转换前检查扫描的页面,以便我可以使用带有 pdftotext 的 ghostscript 命令来操作它们。 现在我有一个阈值来检查 .txt 文件的大小,如果它低于该阈值,我正在使用 ghostscript 命令来操作它们。

问题是对于从 90 页中扫描 50 或 60 页的大文件,即使使用 pdftotext,文件的大小也总是高于阈值。

'pure' 个 PDF 文件可以包含图片....

没有简单的方法可以判断 PDF 文件是否为扫描页面。我认为,你最好的选择是分析页面内容流,看看它们是否只包含图像(一些扫描仪将单个扫描页面分解成多个图像)。您可以假设它们是扫描的页面,无论如何您都不会使用 Ghostscript 从它们中获取任何文本。

另一种方法是使用 Ghostscript 的 pdf_info.ps 程序并让它列出字体使用。没有字体 == 没有文本,尽管可能存在字体但仍然没有文本。我也不认为这在一页一页的基础上有效。