ScanSnap iX500等でスキャンした書類を自動処理し、検索可能なナレッジベースとして管理するCLIツール。
- 直接スキャン: ScanSnapをLinuxから直接制御(SANE/scanimage経由)
- 自動スキャン: 紙をセットすると自動でスキャン開始
- OCR: Tesseractによる日本語/英語テキスト抽出
- AI分析: Claude APIによる自動分類・タグ付け・要約生成・日付抽出
- 全文検索: SQLite FTS5による高速検索
- Markdown出力: 検索可能なMarkdownファイルを自動生成
- Obsidian連携: Obsidian vaultへのエクスポート
sudo apt install tesseract-ocr tesseract-ocr-jpn poppler-utils sane-utils img2pdfgit clone https://github.com/ishii2025buziness/scanner.git
cd scanner
uv syncecho 'export ANTHROPIC_API_KEY="ここにAPIキーを貼る"' >> ~/.bashrc
source ~/.bashrcUSBケーブルでScanSnap iX500をパソコンにつなぐ。
# 自動スキャンモードを起動
uv run scanner autoscan「Waiting for paper...」と表示されたら、紙をスキャナーにセットするだけ!
| モード | 用途 | OCR | AI分析 |
|---|---|---|---|
| 文書(デフォルト) | 領収書、契約書など | ○ | ○ 1枚ごと自動分類 |
| 写真 | 写真、イラスト | × | × |
| 本 | 書籍を丸ごと | ○ | ○ 全体で1回 |
普通の書類をスキャン。AIが自動で種類を判定してタグ付け。
# 自動スキャン(紙を入れるたびにスキャン)
uv run scanner autoscan
# 1枚だけスキャン
uv run scanner scan写真やイラストをスキャン。OCRとAI分析をスキップして高速。
# 写真を連続スキャン
uv run scanner autoscan --type photo
# 1枚だけ
uv run scanner scan --type photo書籍を丸ごとスキャン。全ページをまとめて1つのドキュメントに。
# 本を連続スキャン(Ctrl+Cで終了時にまとめて処理)
uv run scanner autoscan --type book --title "プログラミング入門"- コマンド実行
- ページをどんどんスキャン(「Page 1 added」「Page 2 added」...)
- 全部終わったら
Ctrl + C - 全ページがまとめて1つのPDFに → AI要約
# 高解像度でスキャン(細かい文字がある書類向け)
uv run scanner scan --resolution 600
# 白黒でスキャン(ファイルサイズ小さめ)
uv run scanner scan --gray
# 片面だけスキャン
uv run scanner scan --simplexuv run scanner search "電気代"
uv run scanner search "確定申告"uv run scanner list
uv run scanner list --recent 20 # 20件表示uv run scanner list --tag "レシート"
uv run scanner list --tag "経費"uv run scanner list --type receipt # レシートだけ
uv run scanner list --type contract # 契約書だけuv run scanner show a1b2c3d4 # IDの最初の数文字でOK| フォルダ | 中身 |
|---|---|
~/Documents/scanner/inbox/ |
スキャン直後のファイル(処理待ち) |
~/Documents/scanner/archive/ |
原本PDF(スキャンしたそのまま) |
~/Documents/scanner/docs/ |
内容をまとめたMarkdownファイル |
ファイルマネージャーで ホーム → Documents → scanner を開くと見れます。
| やりたいこと | コマンド |
|---|---|
| 文書を自動スキャン | uv run scanner autoscan |
| 写真を自動スキャン | uv run scanner autoscan --type photo |
| 本を自動スキャン | uv run scanner autoscan --type book --title "タイトル" |
| 1回だけスキャン | uv run scanner scan |
| 最近のスキャン一覧 | uv run scanner list |
| キーワード検索 | uv run scanner search "○○" |
| 設定を確認 | uv run scanner config show |
| 終了する | Ctrl + C |
| 症状 | 対処法 |
|---|---|
| 「No scanner found」と出る | USBケーブルを挿し直す。スキャナーの電源を確認。 |
| スキャンが始まらない | 紙がちゃんとセットされているか確認 |
| 文字が読み取れない | 紙が逆さまかも。向きを変えてもう一度 |
| 「API key not found」と出る | echo $ANTHROPIC_API_KEY で設定されているか確認 |
cp config.toml.example ~/Documents/scanner/config.toml~/Documents/scanner/config.toml を編集して設定をカスタマイズできます。
uv run scanner config showconfig.toml で以下を設定:
[export.obsidian]
enabled = true
vault_path = "/path/to/your/obsidian/vault"
folder = "Scanner"エクスポート実行:
uv run scanner export obsidian文書モードでスキャンすると、AIが自動で以下のタイプに分類:
| タイプ | 説明 |
|---|---|
| receipt | レシート、領収書 |
| invoice | 請求書 |
| contract | 契約書 |
| certificate | 証明書、資格証 |
| letter | 手紙、通知 |
| note | メモ、ノート |
| form | 申請書、フォーム |
| statement | 明細書 |
| other | その他 |
※ photo と book は --type オプションで手動指定
# 1ファイル
uv run scanner import /path/to/document.pdf
# フォルダ内の全ファイル
uv run scanner import /path/to/folder/uv run scanner reprocess a1b2c3d4(他のアプリからinboxにファイルが保存される場合)
uv run scanner watchBaseProcessor (ABC)
├── PhotoProcessor # OCR: × AI: ×
├── DocumentProcessor # OCR: ○ AI: ○ (1枚ごと)
└── BookProcessor # OCR: ○ AI: ○ (全体で1回)
新しいスキャンタイプを追加する場合は BaseProcessor を継承したクラスを作成。
# Lint
uv run ruff check src/
# Format
uv run ruff format src/MIT