60 lines
2.9 KiB
Markdown
60 lines
2.9 KiB
Markdown
# 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抽出・リネーム・移動)
|