4,000枚の紙書類を「2秒で検索→iPhoneに転送」する仕組みを30円で作った

4,000枚超の紙書類を「2秒で見つけてiPhoneに転送」できる仕組みを、AIとスキャナーで作った話。


車検証、点検記録、年賀状、給与明細、保険証券、領収書——。長年スキャンして溜め込んだPDFが4,000枚以上。「あの書類どこだっけ」と探すたびに、フォルダを掘り返していた。


今日、この問題が完全に解決した。


「法定12ヶ月点検の請求書、探して」と打つだけで、2秒後にはピンポイントでファイルが見つかり、iPhoneに転送される。しかもかかった費用は約30円。


全体の流れ


やっていることはシンプルだ。


1. ScanSnap iX1600で紙をスキャン→PDF化
2. Mac mini 2014にファイルサーバーとして保存
3. Gemini API(GoogleのAI)でPDFの中身をテキスト化(OCR)
4. テキストデータをJSONファイルにまとめて保存
5. Pythonのスクリプトでキーワード全文検索
6. 見つかったPDFをiCloud Drive経由でiPhoneに転送


道具立てとしては特別なものはない。ScanSnapは定番のドキュメントスキャナーだし、Mac miniは2014年モデルの古いやつ。AIの部分はGoogleのAPIを使っているだけ。


ポイントは「これらを一本の線でつないだ」ことにある。


最大の壁は「合冊PDF」だった


ScanSnapでスキャンすると、複数枚の書類が1つのPDFにまとまってしまうことがある。たとえば車の整備記録だと、車検の請求書・1年点検の請求書・タイヤ交換の請求書が15ページの1ファイルに合冊されていた。


この状態だと、OCRで「法定12ヶ月点検」というテキストが見つかっても、「15ページのうちどれがそれ?」がわからない。実際に今日、2年前の法定点検の金額内訳を調べたくて検索したら、合冊PDFにヒットしてしまい、目的のページを探すのに手間取った。


pypdfで全部バラした


解決策は単純。Pythonのライブラリ pypdf を使って、複数ページのPDFを1ページずつに分割した。


Mac mini上の全PDFをスキャンしたところ、371ファイルが合冊状態で、合計1,024ページ分。これを全部1ページ1ファイルに分割。元の合冊ファイルは split_originals/ フォルダに退避して、いつでも戻せるようにした。


処理時間は数十秒。あっけないほど簡単だった。


分割したら再OCRが必要になる


ここで新しい問題が発生する。OCRのテキストデータは旧ファイル名に紐づいている。納品請求書_002.pdf(15ページ分)のテキストが1つのエントリにまとまっているので、分割後の 納品請求書_002_p5.pdf には対応するテキストがない。


つまり、分割した1,024ページ分を全部OCRし直す必要がある。


Gemini 2.5 Flash-Liteが最適解だった


GoogleのGemini APIにはいくつかのモデルがある。精度と料金のバランスを比較した結果がこれ。


モデル1,024ページの概算コスト
Gemini 2.5 Flash-Lite約30円
Gemini 2.5 Flash約160円
Gemini 3 Flash約200円
Gemini 2.5 Pro約650円

書類のOCR程度なら最安の Gemini 2.5 Flash-Lite で十分。請求書の金額や日付、名前がきちんと読み取れている。

Pythonスクリプトで1,024ファイルを順番にAPIに投げて、返ってきたテキストをJSONストアに保存。約50分で全件完了した。


検索が「ピンポイント」になった


再OCR後、同じ検索をかけてみる。


「法定12ヶ月点検」で検索。結果:


- 納品請求書_002_p5.pdf — 2024年3月28日、Honda Cars厚別中央通店
- 納品請求書_002_p11.pdf — 2022年5月12日、Honda Cars厚別店



2件だけ。どちらも1ページのPDF。 合冊時代の「15ページのどこか」ではなく、ズバリそのページが返ってくる。

iPhoneで見られるようにする


見つかったPDFをMac miniからダウンロードして、iCloud Driveのフォルダにコピーする。


iCloud Drive → ScanSnap検索結果 → 法定12ヶ月点検_2024年3月28日.pdf

iPhoneのファイルアプリを開けば、もうそこにある。ディーラーに行くとき、保険の問い合わせをするとき、手元で書類が確認できる。


使っているもの一覧


役割ツール
スキャンScanSnap iX1600
ファイル保管Mac mini 2014(SSH接続)
PDF分割pypdf(Pythonライブラリ)
OCRGemini 2.5 Flash-Lite(Google AI API)
テキスト保存JSONファイル(約5,400エントリ)
検索・制御Claude Code + Python
iPhone転送iCloud Drive

特別な月額サービスは使っていない。Gemini APIの従量課金だけで、今回は30円。

ずっと「惜しかった」仕組みが、ようやく完成した


ScanSnapでスキャンする→OCRする、まではずいぶん前からやっていた。でも「合冊PDFのせいで検索がぼやける」「見つけても手元で見られない」という2つの問題が残っていて、結局フォルダを手動で掘り返すことが多かった。


今日、pypdfでの分割とGemini再OCRとiCloud Drive転送を一気に組み上げたことで、ようやく「紙の書類を探す」というストレスがゼロになった。


4,000枚の紙の山が、ポケットの中に収まった感覚だ。

この記事が参考になったら、応援いただけると励みになります。

☕ Buy me a coffee


著者: ふじのすけ
作成: Claude Code (Opus 4.6)
投稿日: 2026-04-04 19:35 JST

コメント

このブログの人気の投稿

MacBook NeoにComfyUIを導入!無料ローカルAI画像生成で7モデル試して4つに厳選した話