67 lines
3.3 KiB
Markdown
67 lines
3.3 KiB
Markdown
# PDFスキャン監視・自動振り分けツール
|
||
|
||
テンプレート画像(赤枠=氏名欄、青枠=日付欄)を基準に、"スキャン"フォルダ内のPDFから
|
||
氏名・日付をOCRで抽出し、リネーム・振り分けを行うツールです。
|
||
|
||
## 使い方
|
||
|
||
1. `config.txt` で各フォルダ名・動作パラメータを確認(通常は初期値のまま利用可)
|
||
2. `テンプレート/` フォルダにテンプレート画像を1つ入れる(複数ある場合はファイル名が最も早いもの)
|
||
- 画像編集ソフト等で、氏名欄に赤い四角枠、日付欄に青い四角枠を重ねて保存(PNG推奨)
|
||
- テンプレートは実際の対象PDFと同じ用紙サイズ・向きで作成すること
|
||
3. `スキャン/` フォルダに処理対象PDFを入れる
|
||
4. `OCR仕分け実行.bat` をダブルクリック
|
||
5. 処理結果は以下に振り分けられる:
|
||
- 成功: `アウトプット/氏名/氏名_YYYYMMDD.pdf` にコピー、元ファイルは `成功/` へ移動
|
||
- 失敗: `失敗/` フォルダへ元ファイルのまま移動
|
||
6. 実行ログは `ログ/YYYY-MM-DD.log` に記録される
|
||
7. 処理を途中で止めたい場合は、コンソールが表示されている間に何かキーを押す(1件処理する度にチェックされる)
|
||
|
||
## フォルダ構成
|
||
|
||
```
|
||
ScanOCR/
|
||
├── OCR仕分け実行.bat 起動バッチ
|
||
├── config.txt フォルダ名・動作パラメータ設定(必須ファイル)
|
||
├── スクリプト/
|
||
│ ├── extract_and_rename.py メイン処理
|
||
│ ├── box_detector.py テンプレート枠検出
|
||
│ ├── config_loader.py config.txt読込
|
||
│ ├── file_ops.py ファイル名衝突回避コピー・移動、安定待ち
|
||
│ ├── lock_manager.py 二重起動防止ロック
|
||
│ ├── logger.py 実行ログ出力
|
||
│ ├── python/ Python embeddable本体(配布パッケージのみ)
|
||
│ └── tools/ tesseract-ocr・poppler(配布パッケージのみ)
|
||
├── テンプレート/
|
||
├── スキャン/
|
||
├── アウトプット/
|
||
├── 成功/
|
||
├── 失敗/
|
||
└── ログ/
|
||
```
|
||
|
||
## 開発者向け(配布パッケージのビルド)
|
||
|
||
配布用の同梱Python・tesseract・popplerは `build/build_package.py` で自動生成します。
|
||
`dist/ScanOCR/` 配下に配布用一式が生成されます。ネットワーク接続必須、7-Zip(`7z`コマンド)が
|
||
PATHに通っている必要があります。実行には数分〜数十分かかります。
|
||
|
||
```bash
|
||
python build/build_package.py
|
||
```
|
||
|
||
## 開発者向け(テスト実行)
|
||
|
||
```bash
|
||
python -m pip install pytest
|
||
python -m pytest スクリプト/tests -v
|
||
```
|
||
|
||
## 注意点
|
||
|
||
- OCRは完璧ではありません。運用初期は `アウトプット/` の結果を必ず目視確認してください
|
||
- 日付の年が2桁の場合は "20XX年" と仮定して補完します。和暦は非対応です
|
||
- 複数ページPDFは1ページ目のみ対象です
|
||
- ファイル名衝突時は `氏名_YYYYMMDD(2).pdf` のように連番が付与されます
|
||
- `config.txt` は必須ファイルです。存在しない場合は起動時にエラーになります
|