我写了一个bash脚本,从扫描的PDF文件中提取纯文本。我有很多PDF文件,但有些是扫描的,有些则不是。所以现在我的主要目标是通过检查PDF是否已经可以搜索来改进我的脚本,所以不需要OCR提取。检查PDF是否可搜索
我已经试过:
pdftext -nopgbrk pdf_file.pdf wordlist
存储可能OCR'ed文字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堆栈交换可能是一个更好的地方发布它。无论如何,如果有人用脚本或算法来解决我的问题,那么它也可能与编程有关。反正很抱歉。 –