Powershell usando o itextsharp.dll . O abaixo avalia o texto em cada página de cada pdf para palavras-chave e, em seguida, exporta quaisquer correspondências para um csv. Você pode rodar com isso para renomear arquivos se encontrar correspondências, movê-las para pastas categorizadas e semelhantes.
Add-Type -Path "C:\path_to_dll\itextsharp.dll"
$pdfs = gci "C:\path_to_pdfs" *.pdf
$export = "C:\path_to_export\export.csv"
$results = @()
$keywords = @('Keyword1','Keyword2','Keyword3')
foreach($pdf in $pdfs) {
Write-Host "processing -" $pdf.FullName
# prepare the pdf
$reader = New-Object iTextSharp.text.pdf.pdfreader -ArgumentList $pdf.FullName
# for each page
for($page = 1; $page -le $reader.NumberOfPages; $page++) {
# set the page text
$pageText = [iTextSharp.text.pdf.parser.PdfTextExtractor]::GetTextFromPage($reader,$page).Split([char]0x000A)
# if the page text contains any of the keywords we're evaluating
foreach($keyword in $keywords) {
if($pageText -match $keyword) {
$response = @{
keyword = $keyword
file = $pdf.FullName
page = $page
}
$results += New-Object PSObject -Property $response
}
}
}
$reader.Close()
}
Write-Host ""
Write-Host "done"
$results | epcsv $export -NoTypeInformation
A saída do console:
processing - C:\path_to_pdfs.pdf
processing - C:\path_to_pdfs.pdf
processing - C:\path_to_pdfs.pdf
processing - C:\path_to_pdfs.pdf
processing - C:\path_to_pdfs.pdf
done
PS C:\>
A saída csv:
keyword page file
Keyword2 14 C:\path_to_pdfs.pdf
Keyword3 22 C:\path_to_pdfs.pdf
Keyword1 6 C:\path_to_pdfs.pdf