ファイル名だけでなく、文書ファイルの中のテキスト内容まで検索できたら超便利ですよね?
今回は、PowerShellを使ってPDF・Word文書のテキストを読み取り、検索対象に含める方法をご紹介します!
今回追加する機能
機能 | 内容 |
---|---|
PDFファイルの中身を検索 | PDFからテキストを抽出してキーワード検索 |
Word文書の中身を検索 | .docx のテキストを読み取って検索 |
結果表示 | 中身にキーワードを含むファイルをリスト表示 |
PDFのテキスト抽出(PdfSharpライブラリ使用)
まず、PdfSharp などの.NET用PDFライブラリを使います。
例(PDFを全文読み取ってキーワード検索):
Add-Type -Path "C:\path\to\PdfSharp.dll"
function Get-PdfText($path) {
$reader = New-Object PdfSharp.Pdf.IO.PdfReader
$doc = [PdfSharp.Pdf.IO.PdfReader]::Open($path, [PdfSharp.Pdf.IO.PdfDocumentOpenMode]::ReadOnly)
$text = ""
foreach ($page in $doc.Pages) {
$text += $page.Contents.ToString() # 実際はライブラリにより取得方法が異なる
}
return $text
}
Word(.docx)のテキスト抽出(Word.Application使用)
$word = New-Object -ComObject Word.Application
$word.Visible = $false
function Get-WordText($docPath) {
$doc = $word.Documents.Open($docPath, $false, $true)
$text = $doc.Content.Text
$doc.Close()
return $text
}
# 使用後にアプリを閉じる
$word.Quit()
検索対象に中身も含めるロジック
$results = @()
foreach ($file in $FilesToCheck) {
if ($file.EndsWith(".pdf")) {
$text = Get-PdfText $file
} elseif ($file.EndsWith(".docx")) {
$text = Get-WordText $file
} else {
continue
}
if ($text -like "*$Keyword*") {
$results += $file
}
}
UI構成案
- 「中身も検索する」チェックボックスを追加
- PDF/Word形式に対応(ライブラリの注意書きも)
- 結果は通常の検索と同じくListBoxに表示
メリット
- ファイル名に出てこない情報も検索できる
- 文書管理フォルダの全文検索ツールとして使える
- 顧客名や請求内容などを素早く見つけられる!
まとめ
全文検索機能の追加により、PowerShell検索アプリは**まさに「業務用ファイル検索エンジン」**になります!
大量の文書ファイルから必要な情報をサクッと探せるようになり、業務効率が大幅UPです!
次回予告
次回は、検索結果のプレビュー表示で、ファイルの中身を事前に確認できる機能を追加していきます!
コメント