ken_nogi/PythonProj/ScanOCR/README.md
Kenichiro NOGI b8b8f4d93c chore: スクリプト配置をスクリプト/フォルダへ整理しテスト基盤を追加
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-02 10:07:24 +09:00

60 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# PDF氏名・日付抽出リネームツール
テンプレート画像赤枠氏名欄、青枠日付欄を基準に、対象フォルダ内のPDFから
氏名・日付をOCRで抽出し、リネーム・振り分けを行うスクリプトです。
## セットアップ
```bash
pip install opencv-python pdf2image pytesseract pillow numpy
```
システムに以下が必要ですUbuntu/Debianの例:
```bash
sudo apt-get install tesseract-ocr tesseract-ocr-jpn poppler-utils
```
## 使い方
1. テンプレート画像を用意する
- 実際の書類1枚をスキャン、または元PDFをそのまま画像化
- 画像編集ソフトなどで、氏名が書かれている位置に赤い四角枠、日付が書かれている位置に青い四角枠を重ねて保存PNG推奨
- **重要**: テンプレートは実際の対象PDFと同じ用紙サイズ・向きで作成してください比率で位置を計算するため、多少の解像度差は自動補正されます
2. フォルダを準備する
- `input/` … 処理対象のPDFを入れる
- `output/` … 成功時、氏名ごとのサブフォルダに `YYYYMMDD_氏名.pdf` として保存される
- `failed/` … 抽出に失敗したPDFがそのまま退避される要目視確認
3. 実行する
```bash
python extract_and_rename.py \
--template template.png \
--input ./input \
--output ./output \
--failed ./failed \
--margin 0.10
```
`--margin` は枠位置の許容誤差率です。0.10 = 上下左右に枠の幅・高さの10%分だけ
広げた範囲までOCR対象としますスキャン時の位置ズレ対策
## 注意点
- OCRは完璧ではありません。特に手書きに近い字体、かすれ、低解像度スキャンでは
誤読が発生します。`output/` の結果は初回運用時に必ず目視確認してください。
- 日付の年が2桁例: 26/08/02の場合、スクリプトは "20XX年" と仮定して補完します。
昭和・平成表記など和暦が使われる書類の場合は `clean_date()` 関数の調整が必要です。
- 複数ページPDFの場合、現在は1ページ目のみを対象にしています。
- 氏名に同姓同名がいる場合や、同じ氏名で複数回書類が発行される場合、ファイル名の
衝突は自動的に連番_1, _2...)で回避されます。
- テンプレートで検出される枠は「最大面積の赤/青矩形」を採用しています。枠線以外に
赤・青の要素(ロゴなど)がテンプレート内にあると誤検出する可能性があるため、
テンプレートはできるだけシンプルな見た目にしてください。
## ファイル構成
- `box_detector.py` … テンプレートから赤枠・青枠の位置を検出するモジュール
- `extract_and_rename.py` … メイン処理OCR抽出・リネーム・移動