【发布时间】:2023-12-10 06:53:02
【问题描述】:
我编写了一个 bash 脚本,用于从扫描的 PDF 文件中提取纯文本。我有很多 PDF,但有些是扫描的,有些不是。所以现在我的主要目标是通过检查 PDF 是否已经可搜索来改进我的脚本,因此不需要提取 OCR。
我试过了:
pdftext -nopgbrk pdf_file.pdf wordlist
将可能的 OCR 文本存储在 wordlist 中,然后我可以检查它是否为空并确定它是否是可搜索的 PDF。
我还尝试pdffonts pdf_file.pdf 检查该 PDF 中是否有字体,因此是否有文本。
这两种方法都很好,但在某些情况下会失败。
例如,我需要 OCR 的一些 PDF 是数字签名的,并且这些签名总是为 PDF 添加一个文本层。因此,当我运行这两个命令中的任何一个时,它将输出签名的文本或它使用的字体。就像它仅仅因为签名就找到了纯文本。它可能只是带有数字签名的扫描 PDF,但它会被检测为纯文本 PDF。
数字签名总是以这种方式添加文本(使用 Helvetica 字体):
签名者:姓名
日期:CEST 日期
公司:公司名称
所以:
pdftext -nopgbrk pdf_file.pdf wordlist | grep -v -E 'Signed|Date|Company'
我可以设法删除这些行,因此如果它真的是扫描的 PDF,则输出将为空。
它适用于某些 PDF,直到我注意到具有其他格式的签名,所以我觉得这几乎是一种变通方法,而不是一个很好的解决方案。
有什么方法可以检查 PDF 是否完全可搜索?我只需要一种提取 PDF 文本但省略数字签名的方法。此外grep -v 将始终取决于我们的数字签名的格式,如果它发生变化,那么它会搞砸我的脚本。
谢谢。
【问题讨论】:
-
你可能是对的。我用我的 OCR 脚本发布了这个问题,该脚本与编程相关,但是当你提到我遇到的问题本身可能是题外话,所以 Unix & Linux Stack Exchange 可能是一个更好的发布它的地方.无论如何,如果有人带着脚本或算法来解决我的问题,那么它也可能与编程有关。还是很抱歉。
标签: linux bash pdf ocr pdftotext