|
|
||
|---|---|---|
| .. | ||
| docs/superpowers | ||
| スクリプト | ||
| .gitignore | ||
| OCR仕分け実行.bat | ||
| README.md | ||
PDF氏名・日付抽出&リネームツール
テンプレート画像(赤枠=氏名欄、青枠=日付欄)を基準に、対象フォルダ内のPDFから 氏名・日付をOCRで抽出し、リネーム・振り分けを行うスクリプトです。
セットアップ
pip install opencv-python pdf2image pytesseract pillow numpy
システムに以下が必要です(Ubuntu/Debianの例):
sudo apt-get install tesseract-ocr tesseract-ocr-jpn poppler-utils
使い方
-
テンプレート画像を用意する
- 実際の書類(1枚)をスキャン、または元PDFをそのまま画像化
- 画像編集ソフトなどで、氏名が書かれている位置に赤い四角枠、日付が書かれている位置に青い四角枠を重ねて保存(PNG推奨)
- 重要: テンプレートは実際の対象PDFと同じ用紙サイズ・向きで作成してください(比率で位置を計算するため、多少の解像度差は自動補正されます)
-
フォルダを準備する
input/… 処理対象のPDFを入れるoutput/… 成功時、氏名ごとのサブフォルダにYYYYMMDD_氏名.pdfとして保存されるfailed/… 抽出に失敗したPDFがそのまま退避される(要目視確認)
-
実行する
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抽出・リネーム・移動)