我有超过30,000个PDF文件。一些文件已经进行了OCR,一些没有。有没有办法找出哪些文件已经进行了OCR,哪些PDF只是图像?
如果我让每个文件都通过OCR处理器运行,那将需要很长时间。
foreach ($pdffile in get-childitem -filter *.pdf){
$pdftext=invoke-expression ("\path\to\xpdf\pdftotext.exe '"+$pdffile.fullname+"' -");
write-host $pdffile.fullname
write-host $pdftext.length;
write-host $pdftext;
write-host "-------------------------------";
}
不幸的是,即使你的PDF只有图片,pdftotext
也会提取一些文本,因此你需要做更多的工作来检查是否需要对PDF进行OCR。
XPDF对我有所帮助,但我不确定这是否是正确的方法。
我的PDF文件包含图像和文本内容。因此,我使用pdffonts.exe来验证文档中是否嵌入了字体。在我的情况下,所有图像文件的嵌入值都显示为“否”。
> Config Error: No display font for 'Symbol'
> Config Error: No display font for 'ZapfDingbats'
> name type emb sub uni object ID
> ------------------------------------ ----------------- --- --- --- ---------
> Helvetica Type 1 no no no 7 0
> Config Error: No display font for 'Symbol'
> Config Error: No display font for 'ZapfDingbats'
> name type emb sub uni object ID
> ------------------------------------ ----------------- --- --- --- ---------
> ABCDEE+Calibri TrueType yes yes no 7 0
> ABCDEE+Calibri,Bold TrueType yes yes no 9 0
pdftotext
。我使用Cygwin来安装它。#!/bin/bash
find . -name "*.pdf" | while read file; do
if [ -z "$(pdftotext "$file" - | sed 's/\s//g')" ]; then
echo $file
fi
done
#!/bin/bash
mkdir ocr
for file in *.pdf; do
echo $file
if [ -z "$(pdftotext "$file" - | sed 's/\s//g')" ]; then
mv "$file" ocr
fi
done