0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

2012年に自炊した本23冊が全文検索できるようになった——EvernoteのスキャンPDFをGoogle Drive OCRで掘り起こした話

0
Last updated at Posted at 2026-05-02

「GTDストレスフリーの仕事術」で検索してヒットした。しかし中身を開くと、タイトルとタグのみ。本文はない。

前の記事でENEX+yarleでEvernoteのテキストノートをGrepできるようにしたが、スキャンして保存していたPDFには本文テキストが存在しなかった。yarleはEvernoteのテキストをMarkdown化するツールで、画像からテキストを起こすOCR機能は持っていない。

「このPDF群にもOCRをかけられないか」——その答えが、意外なところにあった。


.resources/ に眠っていた34件

yarle変換後のフォルダを見ると、.resources/ というサブディレクトリにPDFファイルが格納されていた。自炊ノートブックに23件、クルマノートブックに14件(重複bundle2件スキップ)、合計34件のPDFがGrepの届かない場所に眠っていた。

中身を見ると、こんなファイルが入っていた。

  • 自炊本: 「ひとつ上のGTD」「ようこそ断捨離へ」「ライフハッカー日本版」「リファクタリング・ウェットウェア」など
  • フォレスター取扱説明書・アイサイト説明書・車検証・注文書
  • ETCマイレージ領収書 6件(2014年)
  • VWバス検討資料

ETCの領収書まで保存していたのか、という驚きはあった。ライフログブームの2012〜2013年ごろ、「なんでも記録しよう」と思っていた時期の産物だ。


Google Drive MCPをOCRエンジンとして使う

「PDFにOCRかけられるの?」と聞いたら、Claude Codeが「Google Drive MCPの convertPdfToGoogleDoc を使えばOCRできる」と提案してきた。

Google Driveにアップロードしてドキュメント変換すると、その過程でGoogleのOCRエンジンが走る。Google DriveはPDFをGoogleドキュメントに変換する際にOCRを行う機能を公式に提供しており、これをローカルのテキスト取得に活用する。ファイル管理ツールとして使うのではなく、OCRエンジンとして使う発想だ。

実際のフローは4ステップだった。

  1. uploadFile — ローカルのPDFをGoogle Driveにアップロード
  2. convertPdfToGoogleDoc — Google ドキュメントに変換(ここでOCRが走る)
  3. downloadFileexportMimeType: text/plain)— テキストとしてローカルに保存(*_ocr.txt
  4. deleteItem — Google DriveのPDF・Docを両方ゴミ箱へ

アップロードして削除するフローは一見手間に見えるが、未処理PDFを検出するスクリプト(ocr-list-unprocessed.sh)と処理ログ記録スクリプト(ocr-post-process.sh)をClaude Codeに作ってもらい、34件を一気に処理した。スクリプト化してしまえば、追加PDFが出てきても同じフローで回せる。


処理結果——正直な整理

うまくいったケース

サイズの大きいOCRファイルを見ると、数十KB〜170KB超のテキストが取れていた。日本語スキャンPDFに対してGoogleのOCRが実用的に機能している。

「ETC マイレージ」で検索したら、2014年の領収書6件がヒットした。金額・日付・ETCカード番号まで全部テキストで出てくる。10年前の日常ドキュメントが突然検索可能になる体験は、技術記事の文脈を超えた驚きがあった。

失敗したケース

実測で確認した最小のファイルはこうなっていた。

  • LESS_IS_MORE_〜_ocr.txt: 321バイト(実測)
  • ライフハッカー_日本版_ocr.txt: 404バイト(実測)

テキストを開いてみると、タイトルらしき断片が数行あるだけで本文はほぼ空だった。スキャン品質が低いPDFはGoogleのOCRでも限界がある。2冊は引き続き「検索できない本」のままだ。失敗ケースがどのくらい出るかは元のPDFの品質次第で、今回の34件では2件が実質空になった。


制約を正直に書く

「Grepしたら、PDFはリンクされて開けるのか?」と確認した。

結論から言うと、OCRテキストにPDFへのリンクはない。ただし *_ocr.txt.resources/*.pdf のファイル名が対応しているので、Grepでヒットしたあと手動でたどれる。ファイル名から元PDFを探して、PDFリーダーで開いて内容を確認する、という流れになる。

ページ番号もわからない。Google DriveがエクスポートするPlainテキストにはページ区切り情報がなく(python3で実測確認済み)、ヒットしたキーワードが元PDFの何ページにあるかを直接知る方法がない。PDFを開いてCtrl+Fで再検索するしかない。

「完全な全文検索」ではなく「どのPDFに含まれているかわかる」レベルの話だ。それでも「34件中どれかにある」と絞れるのと、全くわからないのとでは大違いだった。


まとめ: ENEX+yarle+Google Drive OCRで「アーカイブの完全検索体制」

前の記事で構築したENEX+yarle+Grepの体制に、Google Drive OCRを足した形になった。

対象 手段 状態
テキストノート ENEX+yarle+Grep 全文検索可能
スキャンPDF Google Drive OCR+Grep 大半は全文検索可能(スキャン品質次第)

Claude Codeに「Google Drive MCPを使ってOCRして」と日本語で指示した。スクリプトの作成も含めて、私がやったのは指示と確認だけだ。

「2014年のETCマイレージ領収書」がGrepでヒットしたとき、これはもう過去のアーカイブではなくなったと思った。眠っていたファイルを掘り起こして、現在の検索環境に繋げることができた。


参考書籍・関連リンク

Claude Codeをもっと活用したい方に。

Claude CodeによるAI駆動開発入門(平川 知秀)

実践Claude Code入門――現場で活用するためのAIコーディングの思考法(西見 公宏・吉田 真吾・大嶋 勇樹)

Claude Codeでエージェントチームを作る実践について本にまとめました。

コードを書けない私が、AIに「チーム」を持たせるまで(Zenn Book)


この記事は はてなブログ からのクロスポストです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?