Metadata-Version: 2.4
Name: pymasking
Version: 1.0.0
Summary: 個人情報マスキングツール（Web UI + CLI）
Keywords: masking,privacy,japanese,personal-information,NLP
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Classifier: Topic :: Text Processing
Classifier: Topic :: Security
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: flask>=2.0
Requires-Dist: click>=8.0
Requires-Dist: Pillow>=9.0
Requires-Dist: PyMuPDF>=1.20
Requires-Dist: python-docx>=0.8
Requires-Dist: openpyxl>=3.0
Requires-Dist: python-pptx>=0.6
Requires-Dist: chardet>=4.0
Requires-Dist: python-dateutil>=2.8
Requires-Dist: ja-ginza>=5.0
Requires-Dist: spacy>=3.0
Requires-Dist: pytesseract

# pymasking — 個人情報マスキングツール

文書・画像・クリップボードに含まれる個人情報を自動検出してマスキングします。  
Web UI と CLI の両方で動作します。

---

## デモ

### テキストタブ — テキストを直接入力してマスキング

![テキストマスキングデモ](doc/demo_text.gif)

### ファイルタブ — ドラッグ＆ドロップでファイルをマスキング

![ファイルマスキングデモ](doc/demo_file.gif)

### クリップボード画像タブ — スクリーンショットをそのままマスキング

![クリップボード画像マスキングデモ](doc/demo_clipboard.gif)

---

## 動作環境

| 項目 | 要件 |
|------|------|
| OS | Windows 10 / 11（64bit） |
| Python | 3.9 以上 |

---

## インストール

```bash
pip install pymasking
```

### Tesseract OCR バイナリのインストール（画像・PDF の OCR マスキングに必要）

`pip install` だけでは OCR 機能は使えません。Tesseract OCR バイナリを別途インストールしてください。

**1. インストーラーをダウンロード**

以下のページから Windows 用インストーラーを取得します。

> https://github.com/UB-Mannheim/tesseract/wiki

**2. 日本語データを含めてインストール**

インストーラー実行中、「Additional language data」のリストで  
**「Japanese (jpn)」** にチェックを入れてからインストールします。

**3. PATH を通す**

インストール完了後、Tesseract のインストール先フォルダをシステムの PATH 環境変数に追加します。

```
C:\Program Files\Tesseract-OCR
```

> **確認方法:** コマンドプロンプトで `tesseract --version` が実行できれば完了です。

---

## 起動方法

### Web UI（推奨）

```bash
masking
```

ブラウザで http://127.0.0.1:55963 が自動的に開きます。  
**ブラウザのタブ・ウィンドウを閉じるとサーバーも自動終了します。**

### CLI

```bash
python -m pymasking.cli.main mask report.docx
python -m pymasking.cli.main mask report.docx --mode pigpen
python -m pymasking.cli.main unmask report_masked.txt
```

---

## Web UI の使い方

### 共通操作

#### マスキング方式の選択

画面上部の 4 つのボタンで方式を選択します。  
ボタンをクリックするとマスキング前後の例が表示されます。

| ボタン | 効果 |
|--------|------|
| **伏字（●）** | 検出した情報を `●` で塗りつぶす（既定） |
| **一意性保持** | `人物001` のように種別＋連番に置換 |
| **ピッグペン暗号** | 暗号化して `【人物:⊞⊟⊠⊡:】` 形式で保存。後から復号可能 |
| **復号化** | ピッグペン暗号で保護されたテキスト・ファイルを元に戻す |

> **復号化** を選択すると、マスキング対象のチェックボックスは自動的にグレーアウトされます。

#### マスキング対象の絞り込み

実行ボタンの直上にあるチェックボックスで、マスクする情報の種別を選べます。  
全て ON の場合はすべてのカテゴリを対象とします。

---

### テキストタブ

1. テキストエリアに文章を貼り付け（Ctrl+V 可）
2. 必要に応じてマスキング対象のチェックボックスを調整
3. **マスキング実行** または **復号化実行** をクリック
4. 下の結果欄に変換後テキストが表示される
5. **結果をコピー** で clipboard にコピー

---

### ファイルタブ

1. ドロップエリアにファイルをドラッグ＆ドロップ、またはクリックして選択  
   （対応形式: docx / xlsx / pptx / pdf / jpg / png / bmp / txt / csv / json 等）
2. マスキング対象・追加オプションを確認
3. **マスキング実行** または **復号化実行** をクリック
   - ボタンが赤く点滅し「**実行中**」と表示されます
   - 下のプログレスバーで処理状況を確認できます
4. 処理完了後、ボタンがオレンジ色の「**ダウンロード**」に変わります
5. **ダウンロード** をクリックするとマスキング済みファイルが保存されます

---

### クリップボード画像タブ

1. スクリーンショットを撮影してコピー（PrintScreen など）
2. 貼り付けエリアをクリックしてから Ctrl+V で画像を貼り付け
3. **マスキング実行** をクリック
   - ボタンが赤く点滅し「**実行中**」と表示されます
   - OCR でテキストを認識し、黒矩形で塗りつぶします
4. 処理完了後、「**ダウンロード**」をクリックして保存

---

## 対応ファイル形式

| 形式 | 処理方法 |
|------|---------|
| `.txt` `.csv` `.json` `.xml` `.md` `.log` | テキスト置換 |
| `.docx` `.xlsx` `.pptx` | テキスト置換（書式保持） |
| `.pdf` | テキスト座標を検出 → 黒矩形で塗りつぶし |
| `.jpg` `.jpeg` `.png` `.bmp` | Tesseract OCR で検出 → 黒矩形で塗りつぶし |

---

## マスキング方式

| 方式 | 出力例 | 復号 |
|------|--------|------|
| 伏字（デフォルト） | `●●●` | 不可 |
| 一意性保持 | `人物001` | 不可 |
| ピッグペン暗号 | `【人物:⊞⊟⊠⊡:】` | 可能（**復号化実行** ボタンで復号） |

> 画像・PDF は方式に関わらず常に視覚的塗りつぶし（黒矩形）になります。

---

## 検出カテゴリ

人物名 / 組織名 / 住所 / メールアドレス / 電話番号 / 日付 / 金額 / SNS アカウント / 特許番号 / シリアル番号 / 型番

---

## カスタム辞書

`pymasking/data/dict/custom_dict.txt` にタブ区切りで追加すると独自の固有名詞を検出できます：

```
山田太郎	person
株式会社サンプル	org
```
