【要約】ファイルを1つずつ開くのが大変だったので自作したPDF横断検索アプリ [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
業務マニュアルの管理者が、大量のPDFファイルから特定の記述を探す際に、非効率な作業を強いられていた。既存のツールでは、検索から閲覧までのフローが分断されていることが課題であった。
- ・Acrobat Readerでは、ファイルごとにCtrl+Fを繰り返す必要がある。
- ・Windows検索やEverythingでは、本文の横断検索やハイライト表示が困難である。
- ・生成AI(RAG)は、業務現場での回答精度が不足する場合がある。
// Approach
開発者は、検索から該当箇所の表示までをシームレスに行うため、以下の技術構成でアプリを実装した。
- ・PyMuPDFを用いて、検索語の矩形位置にハイライトを注入した一時PDFを生成する。
- ・subprocess経由で、生成した一時PDFをAdobe Acrobatで自動的に開く。
- ・JSON形式のインデックスを採用し、修正時刻とハッシュ値による差分更新を行う。
- ・インデックス破損時には、直接検索へ切り替えるフォールバック機能を備える。
// Result
このアプリにより、検索後に再度ファイル内で検索し直す「二度手間」が解消された。検索から視覚的な確認までのプロセスが大幅に短縮されている。
- ・検索語の箇所がハイライトされた状態で即座に閲覧可能となった。
- ・一時ファイル方式の採用により、共有フォルダ上の元ファイルを破壊するリスクを排除した。
- ・差分更新とフォールバックの実装により、検索の高速化と信頼性を両立した。
Senior Engineer Insight
> 既存の強力なビューア(Acrobat)を外部プロセスとして活用する設計は、開発コストを抑えつつ高いUXを実現する賢明な判断だ。ただし、JSONによるインデックス管理は、ファイル数が数万規模になると限界が来る。また、一時ファイルのクリーンアップ処理が不十分だと、ストレージを圧迫する懸念がある。小規模な現場での「道具としての自作」としては、極めて実戦的で筋の良い実装といえる。